Wstęp do assemblera
Język maszynowy a assembler

Język maszynowy wymaga instrukcji bezpośrednio jako liczb, które są rozkazami i danymi bezpośrednio pobieranymi przez procesor wykonujący ten program.

Każdy typ procesora ma swój własny język maszynowy

Asembler jest językiem programowania niskiego poziomu, co oznacza, że jednej komendzie asemblera odpowiada dokładnie jeden rozkaz procesora.

8b 15 92 80 04 08             mov edx, [koniec]   
eb 0a                         jmp koniec

Intrukcja asemblera

Instrukcja assemblera ma postać:

etykieta: mnemonik operandy 

Typy operandów

Tryby adresowania w 64-bit
Typy danych

Rozmiary:

NazwaLiczb bitównasm
byte8db
word16dw
double word (dword)32dd
quadruple word (qword, long)64dq
octuple word (oword)128do

Interpretacja jest zależna od instrukcji:

Składnia Intel vs. AT&T
 
Intel (NASM)
 
neg cx
add eax, 44
shl rsi, cl
mov [rsp-12], edi
mov dword [variable], 0
inc qword [ebp+4*ecx+32]
jmp label
jmp [location]
AT&T (GCC, GAS)
 
negw %cx
addl $44, %eax
shlq %cl, %rsi
movq %edi, -12(%rsp)
movl $0, variable
incq 32(%ebp,%ecx,4)
jmp label
jmp *location

Tomasz Kapela, Kraków 2011-2020