Académique Documents
Professionnel Documents
Culture Documents
Cours 8 Assembleur PDF
Cours 8 Assembleur PDF
Eric Cariou
Universit de Pau et des Pays de l'Adour
Dpartement Informatique
Eric.Cariou@univ-pau.fr
1
Niveaux de programmation
3) Micro-oprations internes
4) Langage machine
5) Assembleur
Niveaux de programmation
Le compilateur
Assembleur
Jeu d'instructions
Jeu d'instruction
Peu de registres
Architecture vieillisante
Premire volution
16 registres 64 bits
Registres de l'AMD 64
Registres x86
AX : accumulateur
CX : compteur
DX : donne, entres/sorties
SI : index source
DI : index destination
BP : base de la pile
Registres x86
xX = xH + xL
BX = BH et BL
CX = CH et CL
DX = DH et DL
Registres x86
Autres registres
IP : pointeur d'instruction
CS : code
DS : donnes (data)
SS : pile (stack)
ES : extra
Registres IA32
10
64 Ko de mmoire adressable
On combine 2 registres
Adresse relle : A * 16 + B
12
Addresse : segment:offset
Exemples
13
64 Go adressables
FS et GS : donnes
A l'origine
En pratique aujourd'hui
Exemple : la pile ne peut pas tre crase par des donnes ou dborder sur des donnes/code
15
Modes d'adressage
Par registre
ADD AX, BX
Valeur immdiate
ADD AX, 2
20h, 100101b
Adressage mmoire
ADD AX,[BX+DI]
16
Registre d'tats
Le registre d'tat
17
Oprations
Arithmtiques
Logiques
Transfert de donnes
Instructions de contrle
Structure de donnes
18
Oprations
2 oprandes au plus
Exemple
ADD AX, BX
; AX = AX + BX
; modifie les flags selon rsultat
; (dbordement, rsultat nul ...)
19
ADD : addition
SUB : soustraction
MUL : multiplication avec entiers non signs (rsultat sur taille double)
INC : incrmentation de 1
DEC : dcrmentation de 1
NEG : oppos
20
Oprations logiques
AND : Et logique
OR : OU logique
Exemples
21
Transferts de donnes
Plusieurs combinaisons
Exemples
MOV [BX], DX
22
Dcalage et rotations
Dcalage
Exemple
Rotation
Exemple
23
Dcalage et rotations
8 oprations
24
Instructions de contrle
Pas de boucles
25
Instructions de contrle
JMP label
Exemple
26
Instructions de contrle
Sauts conditionnels
JE : saut si gal
JNGA : saut si pas gal ou pas plus grand (not equal or above)
27
Instructions de contrle
if (AX = 3)
then BX = 5 else BX = DX
CMP AX, 3
JNE else
MOV BX, 5
JMP endif
else:
MOV BX, DX
endif:
28
Instructions de contrle
; initialisation de AX et CX 0
; CX est le compteur de boucle
; compare CX 5
; si CX >= 5, on sort de la boucle
; fait le calcul
; CX est incrment de 1
; on reprend au dbut de la boucle
29
Instructions de contrle
LOOP label
30
Instructions de contrles
31
Procdures
Simple
On appelle la procdure
32
Gestion de la pile
POPA : positionne les valeurs des 8 registres partir des 8 valeurs au sommet de la pile
Procdures
Procdures
Procdures
Procdures
; empile l'argument 1
; empile l'argument 2
; dpile l'argument 2
; AX contient le rsultat
37
38
Interruptions
Interruption
Gnralement d'entre/sortie
MOV AH,1
INT 21h
Conclusion
Le compilateur est gnralement optimis pour une architecture de CPU cible, il sait comment optimiser le code pour un
type de CPU donn
40