NASM

NASM (Netwide Assembler) — ასემბლის ენა, x86 არქიტექტურისთვის, რომელიც ხმარობს Intel-ის სინტაქსს. მითი შესაძლოა პროგრამების წერა 16 ბიტიანი და 32 ბიტიანი  მიკროპროცესორებისთვის (IA-32); 2-რე ვერსიიდან მას აგრეთვე შეუძლია 64 ბიტიანი  პროცესორების (X64/AMD64/EM64T/x86-64) მხარდაჭერა.

 პორტატირობა 

32 ბიტიანი პროგრამების პორტატურად დაწერა შესაძლოა  ვინდოუსის და  ლინუქსისთვის, თუ სწორი ბიბლიოთეკები არიან გამოყენებული.

 ისტორია 

NASM-ი შექმნილი იქნა რადგან მისი ავტორების აზრით არ არსებობდა ისეთი ასამბლერი რომელიც იქნებოდა თავისუფალი, ძლიერი და მრავალპლატფორმულიhttp://nasm.sourceforge.net/doc/nasmdoc1.html#section-1.1.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 )

 სქოლიო 

 რესურსები ინტერნეტში 
დოკუმენტაცია
  NASM Website
  NASM Manual
  A comparison of GAS and NASM

კატეგორია:პროგრამირების ენები