NASM

მასალა ვიკიპედიიდან — თავისუფალი ენციკლოპედია
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 )

სქოლიო[რედაქტირება | წყაროს რედაქტირება]

  1. http://nasm.sourceforge.net/doc/nasmdoc1.html#section-1.1.1

რესურსები ინტერნეტში[რედაქტირება | წყაროს რედაქტირება]

მოძიებულია „https://ka.wikipedia.org/w/index.php?title=NASM&oldid=2535298“-დან