Az Assembly nyelv utasításai igékből és változókból állnak. A programozás könnyebb, a programkód olvashatóbb.
Az Assembly fordító műveleti kódokkal és címekkel helyettesíti az utasításokat. A legtöbb cím relatív, mert a valódi címek csak futáskor állnak elő.
Később megjelent a makro assembly, amely lehetővé tette, meghívható makrók létrehozását, amely nagyban megkönnyítette a programozást.
Szükségünk van egy fordítóra és egy linkerre. Ajánlott az nasm fordító és az alink linker használata. A következő példáknál ezt fogom használni.
Készítsük el az alábbi kódot:
kiir.asm
mov ah, 02h mov dl, 2ah int 21h mov ah, 4ch int 21h
Ez után fordítsuk le az nasm fordítóval:
nasm -f win32 -o kiir.obj kiir.asm
A fordítás után a linkerrel készítsük el a futtatható állományt:
alink kiir.obj
A program ezek után futásra kész, amely egy csillagot kell a képernyőre írjon.
Elemzés
Az ELF bináris a Unix alapú rendszerek formátumba.Az első ELF binárist System V Release 4 rendszeren mutatták be, ami később szabvánnyá vált. Az ELF a Executable and Linkable Format rövidítése.
section .text global _start _start: mov ebx,1 mov ecx,msg mov edx,len mov eax,4 int 0x80 mov ebx,0 mov eax,1 int 0x80 section .data msg db "Helló világ!",0x0a len equ $ - msg
Fordítás és linkelés:
nasm -f aout main.asm ld -s -o main main.o
.text .global _start _start: movl $len,%edx movl $msg,%ecx movl $1,%ebx movl $4,%eax int $0x80 movl $0,%ebx movl $1,%eax int $0x80 .data msg: .ascii "Helló Világ!\n" len = . - msg
Fordítás és linkelés:
as -o main.o main.S ld -s -o main main.o
Az Assembly nyelvet más nyelvekbe beépítve is használjuk. A következő példa egy C nyelvű program, amelybe egy Assembly részt építettem.
Példa:
section .data msg: db 'helló világ!', 10 section .text global _start _start: mov rax, 1 mov rdi, 1 mov rsi, msg mov rdx, 16 syscall mov rax, 60 xor rdi, rdi syscall
hello: hello.asm nasm -felf64 hello.asm -o hello.o ld -o hello hello.o