Раздел «Язык Ассемблера».NasmIntro:

NASM — Netwide Assembler

Netwide Assembler это ассемблер для процессоров архитектуры 80x86.

NASM — это ассемблер для семейства Unix-овых операционных систем. В нем принят Intel-овский синтаксис. В отличие от синтаксиса AT&T в нем не нужно имена регистров начинать с символа '%', а числовые константы с '$', и операнды у команд имеют другой порядок.

Вот пример простейшей прораммы на языке NASM.

section   .text
    global _start     ;must be declared for linker (ld)

msg   db   'Hello, world!',0xa   ;our dear string
len   equ   $ - msg   ;length of our dear string

_start:               ;tell linker entry point

   mov   edx,len      ;message length
   mov   ecx,msg      ;message to write
   mov   ebx,1        ;file descriptor (stdout)
   mov   eax,4        ;system call number (sys_write)
   int   0x80         ;call kernel

   mov   eax,1        ;system call number (sys_exit)
   int   0x80         ;call kernel

Эту программу нужно компилировать и линковать следующим образом:

bash$ nasm -f elf hello.asm      # this will produce hello.o ELF object file
bash$ ld -s -o hello hello.o   # this will produce hello executable

Как видите, получение запускаемого файла из программы на языке NASM происходит в два этапа: компиляция (compiling) и линковка (linking).

Attachment sort Action Size Date Who Comment
nasm.zip manage 163.5 K 17 Mar 2005 - 07:17 ArtemVoroztsov Полный учебник по NASM на английском
nasm_rus.zip manage 196.6 K 20 Feb 2009 - 08:33 DmitryPodlesnykh Русский перевод, возможны ошибки