Documente Academic
Documente Profesional
Documente Cultură
Architecture Intel
&
&
assembleur
assembleur
mov eax,101
mov ebx,0x378
mov ecx,3
mov edx,1
int 0x80
movl %esp,%ebp
pushl %ebx
movl %eax,%ebx
Registres d’adresses
mov mémoire, mémoire est une instruction qui n’est pas permise
Remarque:
mul ebx
Elle possède les mêmes caractéristiques que mul, sauf qu’on utilise
des entiers relatifs.
Elle nécessite une seule opérande. Elle réalise le produit du
contenu du registre eax avec l’opérande en question.
imul ebx
Exemple
je étiquette : saut à étiquette si le drapeau d’égalité est à 1
Exemple:
Exemple :
longeur_chaine equ 29.
Exemple
SECTION .bss
Var1 resb 5 ; reserve 5 octets
Var2 resw 8; reserve 8 words 8x2=16 octets)
Var3 resd 6; reserve 6 dwords 6x4=24 octets)
Var4 resq 4; reserve 4 quadwords 4x8=32 octets)
Var5 rest 7 ;reserve 7x10=70 octets)
Remarque
Les étiquettes qui précèdent les directives représentent des adresses
et non les noms des variables.
var11 dw 0x22ab ; var11 représente l’adresse du mot 0x22ab.
SECTION .text
global main
main :
SECTION .bss
; données non initialisées
SECTION .text
global main ; rend l‘étiquette visible de l'extérieur
main :
; programme
;
fin :
mov ebx,0 ; code de sortie,
mov eax,1 ; numéro de l’appel système exit
int 0x80 ; interruption 80 hex, appelle le noyau
Abdelhafid MESSAOUDI Architecture des ordinateurs 41
langage assembleur
Assembler un programme
La première étape par laquelle il faut passer est la création du
fichier objet.
Remarque :
Cette étape (retour au point de départ) ne peut pas être codé par un
saut à une étiquette (codage en dur).
étiquette_du_sous-programme :
push ebp ; sauvegarde de ebp
mov ebp, esp ; ebp=esp
; code du sous-programme
Dans ce cas, les contenus des deux registres esp et ebp sont
différents
Remarque
section .text
global main
main :
push dword long_message
push dword message
call affiche
add esp,8
mov eax,1
mov ebx,0
int 80h
affiche:
push ebp
mov ebp,esp
mov eax,4
mov ebx,1
mov ecx,[ebp + 8]
mov edx,[ebp + 12]
int 80h
mov esp,ebp
pop ebp
ret