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érodw
Définir des mots (Define Word - 2 octets)
asm
value dw 1234h ; Valeur hexadécimale 0x1234dd
Définir des doubles mots (Define Doubleword - 4 octets)
asm
array dd 1, 2, 3, 4 ; Tableau de 4 entiersdq
Définir des quadruples mots (Define Quadword - 8 octets)
asm
large_val dq 1234567890123456h ; Valeur 64 bitsequ
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 macrotimes
Répéter une instruction ou une définition
asm
buffer times 1024 db 0 ; Allouer 1024 octets initialisés à zérosection
Définir une section de code ou de données
asm
section .text ; Section de code
section .data ; Section de donnéesglobal
Rendre un symbole accessible globalement
asm
global _start ; Point d'entrée du programmeextern
Déclarer un symbole externe
asm
extern printf ; Fonction de la bibliothèque Csyscall
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 kernelint 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