NASM
ავტორები | სიმონ ტატჰამი, ჯულიან ჰალი |
---|---|
პროგრამისტები | ჰ. პეტერ ანვინი და სხვები |
ბოლო ვერსია | 2.07 |
გამოშვების თარიღი | 19/07/2009 |
ოპერაციული სისტემები | ვინდოუსი, იუნიქსის-ტიპის, OS/2, მაკ ოს X, DOS |
ტიპი | x86 ასემბლერის ენა, ასამბლერი |
ენა | ინგლისური ენა |
ლიცენზია | BSD ლიცენზია |
საიტი | http://www.nasm.us/ |
NASM (Netwide Assembler) — ასემბლის ენა, x86 არქიტექტურისთვის, რომელიც ხმარობს Intel-ის სინტაქსს. მითი შესაძლოა პროგრამების წერა 16 ბიტიანი და 32 ბიტიანი მიკროპროცესორებისთვის (IA-32); 2-რე ვერსიიდან მას აგრეთვე შეუძლია 64 ბიტიანი პროცესორების (X64/AMD64/EM64T/x86-64) მხარდაჭერა.
პორტატირობა
[რედაქტირება | წყაროს რედაქტირება]32 ბიტიანი პროგრამების პორტატურად დაწერა შესაძლოა ვინდოუსის და ლინუქსისთვის, თუ სწორი ბიბლიოთეკები არიან გამოყენებული.
ისტორია
[რედაქტირება | წყაროს რედაქტირება]NASM-ი შექმნილი იქნა რადგან მისი ავტორების აზრით არ არსებობდა ისეთი ასამბლერი რომელიც იქნებოდა თავისუფალი, ძლიერი და მრავალპლატფორმული[1].
მაგალითი
[რედაქტირება | წყაროს რედაქტირება]წყარო კოდი რომელიც კომპილირების შემდეგ ეკრანზე აჩვენებს "Hello, world!"-ს, ეს კოდი ლინუქსისთვის არის გამიზნული.
SECTION .data ; მონაცემების სექცია
msg db "Hello, world!",0xa
len equ $ - msg ; ტექსტის სიგრძის გამოთვლა
SECTION .text ; ინსტრუქციების სექცია
global main ; მთავარი წერტილი სააიდანაც იწყება პროგრამის მოქმედება
main:
mov eax, 4 ; სისტემური ფუნქციის ნომერი: 4 ნიშნავს sys_write()
mov ebx, 1 ; ფაილის დესკრიპტორი: 1 ნიშნავს stdout
mov ecx, msg ; ვათავსებთ ტექტს
mov edx, len ; ვათავსებთ ტექსტის სიგრძეს
int 0x80 ; ბირთვის ფუნქციის დაძახება: sys_write()
mov eax, 1 ; სისტემური ფუნქციის ნომერი: 1 ნიშნავს sys_exit()
mov ebx, 0 ; ვაბრუნებთ 0 რაც ნიშნავს რომ ყველაფერმა კარგად ჩაიარა
int 0x80 ; ბირთვის ფუნქციის დაძახება: sys_exit()
.com (DOS) გამშვები ფაილის მაგალითი
org 100h ; დამახასიათებელია .com-ისთვის
mov ah, 9h ; ტექსტის დაბეჭდვის ფუნქციის კოდი
mov dx, text ; მონაცემების(data register) რეგისტში ვინახავთ ცვლადს
int 21h ; დოსის სერვისი
mov ah, 4ch ; პროგრამის დამთავრების კოდი
mov al, 00h ; 0 - აღნიშნავს პროგრამა წარმატებით დაიხურა (Exit Success)
int 21h ; დოსის სერვისი
text db "hello world","$" ; text ცვლადში ვინახავთ ტექსტს
.com ფაილის კომპილაცია command prompt-ის დახმარებით: nasm file.asm -f bin -o hello.com განმარტება: nasm-ის შემდეგ "თავისუფალ" წევრად უნდა მიეთითოს ის ფაილი რომლის კომპილაციაც გვსურს. -f - აღნიშნავს ფორმატს შესაძლებელია იყოს ორობითი, ვინდოვსის ან ლინუქსის, შესაბამისად: bin, win32, elf -o - აღნიშნავს კომპილირებული ფაილის სახელს და გაფართოებას. აღსანიშნავია, რომ დოსის ფაილებს და ორობით ფაილებს შორის განსხვავება მხოლოდ ფაილების ტიპს შორისაა (.com და .bin )