Assembleur

L'essentiel du langage assembleur x86/x64: instructions, registres et exemples

db
Définir des octets (Define Byte)
asm
message db 'Hello, World!', 0  ; Chaîne terminée par zéro
dw
Définir des mots (Define Word - 2 octets)
asm
value dw 1234h  ; Valeur hexadécimale 0x1234
dd
Définir des doubles mots (Define Doubleword - 4 octets)
asm
array dd 1, 2, 3, 4  ; Tableau de 4 entiers
dq
Définir des quadruples mots (Define Quadword - 8 octets)
asm
large_val dq 1234567890123456h  ; Valeur 64 bits
equ
Définir une constante
asm
BUFFER_SIZE equ 1024  ; Constante symbolique
%define
Définir une macro (syntaxe NASM)
asm
%define PI 3.14159  ; Définition de macro
times
Répéter une instruction ou une définition
asm
buffer times 1024 db 0  ; Allouer 1024 octets initialisés à zéro
section
Définir une section de code ou de données
asm
section .text  ; Section de code
section .data  ; Section de données
global
Rendre un symbole accessible globalement
asm
global _start  ; Point d'entrée du programme
extern
Déclarer un symbole externe
asm
extern printf  ; Fonction de la bibliothèque C
syscall
Appel système (Linux x86-64)
asm
mov rax, 1      ; syscall number (sys_write)
mov rdi, 1      ; file descriptor (stdout)
mov rsi, msg    ; message to write
mov rdx, msglen ; message length
syscall         ; call kernel
int 0x80
Interruption pour appel système (Linux x86)
asm
mov eax, 4      ; syscall number (sys_write)
mov ebx, 1      ; file descriptor (stdout)
mov ecx, msg    ; message to write
mov edx, msglen ; message length
int 0x80        ; call kernel