Documente Academic
Documente Profesional
Documente Cultură
CHAPITRE III
PROCESSEUR INTEL 80X86
AROUSSI
2013 - 2014
2
PLAN DU CHAPITRE III
Introduction
Architecture Générale
Jeu d’instructions
Programmation en Assembleur
3
INTRODUCTION
ÉVOLUTION DES PROCESSEURS INTEL
Processeurs multi-cœurs:
Core 2, i5, i7, .....
Pentium: I, II, III,
IV, V, ... 2006
Processeurs 80x : 8080,
jusqu’à
8086, 8080, 80286, 80386, 1993-2005 aujourd’hui
80486, ......
1972 – 1992
Premier processeur
4004
1971
5
PARTIE 1:
ARCHITECTURE GÉNÉRALE DU
PROCESSEUR 8086
6
AX AH AL Bus d’adresse Interne 20 bits
BX BH BL Calcul 20 bits
CX CH CL d’adresse Bus d’adresse
DX DH DL Interface
16 bits
BP CS IP avec Bus Bus de contrôle
SP DS
externes
SI SS 16 bits
DI ES Bus de données
RT RT
Codage
Contrôle
Séquencement
UAL File d’attente 6
octets de codes
instructions 7
9
ARCHITECTURE GÉNÉRALE DU PROCESSEUR 8086
REGISTRES GÉNÉRAUX
Registres Usage
AX: Usage général,
Accumulateur Obligatoire pour la multiplication et la division,
Ne peut pas servir pour l'adressage
Registres Usage
Ces registres sont combinés avec les registres offset (par exemple IP) pour
former les adresses. Une case mémoire est repérée par une adresse de la
forme [Rseg :Roff]
Le registre segment localise le début d’une zone mémoire de 64Ko
Le registre offset précise l’adresse relative par rapport au début de
segment.
12
ARCHITECTURE GÉNÉRALE DU PROCESSEUR 8086
REGISTRES DE SEGMENT
Registres Usage
CS : Code Définit le début de la mémoire programme dans laquelle sont
Segment
stockées les instructions du programme.
Les adresses des différentes instructions du programme sont
relatives à CS
14
ARCHITECTURE GÉNÉRALE DU PROCESSEUR 8086
REGISTRE D'ÉTAT (FLAGS)
15 0
O D I T S Z A P C
INST Opérande
1. Adressage registre
INST R , R
INST R
Exemples :
2. Adressage Immédiat
INST R , IM
INST IM
Exemples :
2. Adressage Immédiat
L’opérande est une constante (valeur) qui fait partie de
l’instruction : INST R , IM; INST IM
Exemples :
3. Adressage direct
INST R , [adr]
INST [adr] , R
3. Adressage direct
INST R , [adr]
INST [adr] , R
Exemples :
4. Adressage Indirect
4. Adressage Indirect
Exemples :
4. Adressage Indirect
4. Adressage Indirect
A. Adressage Basé
4. Adressage Indirect
A. Adressage Basé
Exemples :
MOV AX, [BX] : Charger AX par le contenu de la mémoire d'adresse
DS:BX
4. Adressage Indirect
B. Adressage Indexé
4. Adressage Indirect
B. Adressage Indexé
Exemples :
4. Adressage Indirect
C. Adressage Basé Indexé
4. Adressage Indirect
C. Adressage Basé Indexé
Exemples :
31
ARCHITECTURE GÉNÉRALE DU PROCESSEUR 8086
TAILLE DES ECHANGES AVEC LA MEMOIRE
32
ARCHITECTURE GÉNÉRALE DU PROCESSEUR 8086
TAILLE DES ECHANGES AVEC LA MEMOIRE
33
PARTIE 2:
JEUX D’INSTRUCTIONS
DU PROCESSEUR 8086
34
JEUX D’INSTRUCTIONS
Plusieurs types d’instructions, notamment:
......
INSTRUCTIONS DE TRANSFERT
MOV
MOV Od,Os: Copie l'opérande Source (Os) dans
l'opérande Destination (Od) [OdOS]
MOV R1 , R2 R1R2
MOV R , im Rim
MOV taille [adr] , im copier une constante dans une case mémoire
taille = BYTE ou WORD
XCHG R1 , R2 R1R2
37
INSTRUCTIONS ARITHMÉTIQUES
multiplication et la division.
ADD R1 , R2 R1 R1 + R2
ADD R , im R R + im
39
ADD [adr], [adr]
INSTRUCTIONS ARITHMÉTIQUES
ADDITION
INC Op: incrémente l'opérande Op [Op Op+1].
INC R R R+1
DS: 400 FF
33
SUB R1 , R2 R1 R1 - R2
SUB R , im R R - im
42
SUB [adr], [adr]
INSTRUCTIONS ARITHMÉTIQUES
SOUSTRACTION
DEC Op: décrémente l'opérande Op [Op Op-1].
DEC R R R-1
NEG R R CA2(R)
43
NEG taille [adr] [adr] CA2 ([adr])
INSTRUCTIONS ARITHMÉTIQUES
SOUSTRACTION
Exemple:
SUB CX 59h F F C D CX
Z=0;C=1;S=1
MOV AX, 35 0 0 2 3 AX
NEG AX F F D D AX
44
INSTRUCTIONS ARITHMÉTIQUES
SOUSTRACTION
CMP Od,Os: compare (soustrait) les opérandes Od et Os
et positionne les flags (registre d’état) en fonction du
résultat. L’opérande Od n’est pas modifié.
O S Z C O S Z C
Od > Os - 0 0 0 0/1 0 0 -
Od = Os - 0 1 0 0 0 1 -
45
Od < Os - 1 0 1 0/1 1 0 -
INSTRUCTIONS ARITHMÉTIQUES
SOUSTRACTION
Opérandes non Signés Opérandes Signé
O S Z C O S Z C
Od > Os - 0 0 0 0/1 0 0 -
Od = Os - 0 1 0 0 0 1 -
Od < Os - 1 0 1 0/1 1 0 -
AH AL
Exemple:
? ? 1 7 AX
MOV AL, 23 46
CMP AL, 34 C = 1 ; Z = 0; S = 1
INSTRUCTIONS ARITHMÉTIQUES
MULTIPLICATION
47
INSTRUCTIONS ARITHMÉTIQUES
MULTIPLICATION
(I) MUL im
48
INSTRUCTIONS ARITHMÉTIQUES
MULTIPLICATION
Exemple:
AH AL
MOV AL, 4 ? ? 0 4 AX
MOV AH, 25 1 9 0 4
MUL AH 0 0 6 4
0 9 4 4 AX
MOV AX, 2372
49
MUL BX 0 0 0 F B E 8 C
DX AX
INSTRUCTIONS ARITHMÉTIQUES
MULTIPLICATION
Exemple:
0 9 4 4 AX
MOV AX, 2372
MUL BX 0 0 0 F B E 8 C
DX AX
0 9 4 4 AX
MOV AX, 2372
IMUL BX F F F 0 4 1 7 4
50
DX AX
INSTRUCTIONS ARITHMÉTIQUES
DIVISION
registre AH ou DX.
est effectuée.
51
INSTRUCTIONS ARITHMÉTIQUES
DIVISION
(I) DIV im
52
INSTRUCTIONS ARITHMÉTIQUES
DIVISION
Exemple:
0 9 4 4 AX
MOV AX, 2372
DIV BX 0 0 C 5 0 0 0 5
DX (Reste) AX (Quotient)
DIV BX 0 0 C 5 F F F B 53
DX (Reste) AX (Quotient)
INSTRUCTIONS ARITHMÉTIQUES
DIVISION
CBW (Convert Byte to Word) effectue une extension de
AL dans AH en respectant le signe:
Si AL contient un nombre positif, on complète par des 0 pour
obtenir la représentation sur 16 bits.
Exemple: AH AL
MOV AL, 96 AX
? ? 6 0
CBW 0 0 6 0
54
INSTRUCTIONS ARITHMÉTIQUES
DIVISION
CWD (Convert Word to Double Word) effectue une
extension de AX dans DX en respectant le signe.
Exemple: DX AX
MOV AX, 96 ? ? ? ? 0 0 6 0
CWD 0 0 0 0 0 0 6 0
DX AX
MOV AX, -96
? ? ? ? F F A 0
CWD F F F F F F A 0
55
INSTRUCTIONS LOGIQUES
NÉGATION
NOT OP transforme la valeur de l’opérande (registre ou
mot mémoire) en son complément à 1 [OPCA1(OP)].
Exemple: AX
MOV AX, 96 0 0 6 0
NOT AX F F 9 F
56
INSTRUCTIONS LOGIQUES
ET LOGIQUE
AND Od, Os effectue un ET logique entre Od et Os.
[Od Od Os]
AND R1 , R2 R1 R1 R2
AND R , im R R im
MOV AX , 503h
AND AX , 0201h
AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1
0201h 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
AX 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
58
INSTRUCTIONS LOGIQUES
ET LOGIQUE
TEST Od, Os: similaire à AND mais ne retourne pas
de résultat dans Od, seuls les indicateurs sont
positionnés.
Exemple:
MOV AX , 503h
TEST AX , 0201h
AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1
0201h 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
59
RT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
S = 0, Z = 0
INSTRUCTIONS LOGIQUES
OU LOGIQUE
OR Od, Os effectue un OU logique entre Od et Os.
[Od Od Os]
OR R1 , R2 R1 R1 R2
OR R , [adr] R1 R [adr]
OR R , im R R im
OR [adr], [adr]
60
INSTRUCTIONS LOGIQUES
OU LOGIQUE
Exemple:
MOV AX , 503h
OR AX , 0201h
AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1
0201h 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
AX 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1
61
INSTRUCTIONS LOGIQUES
OU EXCLUSIF
XOR Od, Os effectue un OU exclusif (XOR) entre Od et
Os [Od Od Os].
XOR R1 , R2 R1 R1 R2
XOR R , im R R im
MOV AX , 503h
OR AX , 0201h
AX 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1
0201h 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
AX 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0
SHR Od, n
SAR Od, n
... ...
n fois
LSB C
SAR préserve le bit de signe SAR est réservée aux
66
nombres signés.
INSTRUCTIONS DE DÉCALAGE
DÉCALAGE CIRCULAIRE GAUCHE/DROIT
ROL Od, n
... ...
C
ROR Od, n
... ...
C
67
INSTRUCTIONS DE DÉCALAGE
DÉCALAGE CIRCULAIRE À TRAVERS LA RETENUE
RCL Od, n
C ... ...
RCR Od, n
... ... C
68
INSTRUCTIONS DE DÉCALAGE
DÉCALAGE CIRCULAIRE À TRAVERS LA RETENUE
Exemple:
AL C
MOV AL, 11001011B 1 1 0 0 1 0 1 1 x
SHR AL, 1 0 1 1 0 0 1 0 1 1
AL C
MOV AL, 11001011B 1 1 0 0 1 0 1 1 x
ROR AL, 1 1 1 1 0 0 1 0 1 1
AL C
MOV AL, 11001011B 1 1 0 0 1 0 1 1 x
69
RCR AL, 1 x 1 1 0 0 1 0 1 1
INSTRUCTIONS DE BRANCHEMENT
Les instructions de branchement (ou saut) permettent de
modifier l’ordre d’exécution des instructions du
programme en fonction de certaines conditions.
71
INSTRUCTIONS DE BRANCHEMENT
INCONDITIONNEL
JMP label: effectue un saut (jump) vers le label spécifié.
. .
. .
. .
JMP suite Etiq: .
. .
. .
. .
Suite: ..................... JMP Etiq
. .
. .
72
INSTRUCTIONS DE BRANCHEMENT
DE CONTRÔLE DE BOUCLE
......
INSTRUCTIONS DE BRANCHEMENT
DE CONTRÔLE DE BOUCLE
MOV DX, 0
MOV CX, 5
LOOP ETIQ
Instruction Actions
LOOP CXCX-1 CX 0
76
Instruction Nom Condition
PROGRAMMATION EN ASSEMBLEUR
8086
79
PROGRAMMATION EN ASSEMBLEUR
ÉTAPES DE LA RÉALISATION D’UN PROGRAMME
1. Définir le problème à résoudre : que faut-il faire
exactement ?
81
PROGRAMMATION EN ASSEMBLEUR
ÉTAPES DE LA RÉALISATION PRATIQUE
un éditeur de texte.
un programme exécutable;
PROGRAMMATION EN ASSEMBLEUR
ÉTAPES DE LA RÉALISATION PRATIQUE
Plusieurs logiciels
permettent le passage entre
ces trois phases présentée
comme:
85
PROGRAMMATION EN ASSEMBLEUR
FICHIER SOURCE
PROGRAM Exemple
Data SEGMENT
Data ENDS
Code SEGMENT
PROG
END PROG
PROGRAMMATION EN ASSEMBLEUR
FICHIER SOURCE
Les directives qui déclarent des données sont regroupées dans les
segments de données, qui sont délimités par les directives
SEGMENT et ENDS.
87
PROGRAMMATION EN ASSEMBLEUR
FICHIER SOURCE
Nom DB Expression
n’intialisée)
PROGRAMMATION EN ASSEMBLEUR
FICHIER SOURCE
Nom DW Expression
91
PROGRAMMATION EN ASSEMBLEUR
FICHIER SOURCE
Les instructions sont placées dans le segment de code.
Champs Description
Label champ optionnel destiné pour marquer une ligne
(étiquette) qui sera la cible d'une instruction de saut ou de
branchement. Il doit se terminer par « : » et ne
peut commencer par un chiffre.
Mnémonique champ obligatoire présente le nom de l’instruction
Opérande champ optionnel selon l'instruction (parfois
l'instruction nécessite deux opérandes, un
opérande et parfois non).
Commentaire champ optionnel sans signification syntaxique et
sémantique mais très intéressant pour la93
programmation
PROGRAMMATION EN ASSEMBLEUR
EXERCICE 1
N1 et N2 sont deux variables de 2 octets chacune
Début
N1 + N2
Non Oui
Résultat > 0
94
Fin
PROGRAMMATION EN ASSEMBLEUR
EXERCICE 1 (1ÈRE SOLUTION)
PROGRAM Exemple1 MOV [200h], AX
Data1 SEGMENT JMP Fin
N1 DW ? Cond1: MOV [100h], AX
N2 DW ? Fin:
Data1 ENDS Code1 ENDS
Code1 SEGMENT END Debut
ASSUME CS : Code1, DS: Data1
JG Cond1
PROGRAMMATION EN ASSEMBLEUR
EXERCICE 1 (2ÈME SOLUTION)
PROGRAM Exemple1 JE Cond2
Data1 SEGMENT MOV [100h], AX
N1 DW ? JMP Fin
N2 DW ? Cond2: MOV [200h], AX
Data1 ENDS Fin:
Code1 SEGMENT Code1 ENDS
ASSUME CS : Code1, DS: Data1 END Debut
Debut : MOV AX, N1 ; AX N1
JS Cond1
PROGRAMMATION EN ASSEMBLEUR
EXEMPLE DE CODAGE DE TESTS
Actions-ALORS
FSI
FSI:
Suite_programme
Suite_Programme 97
PROGRAMMATION EN ASSEMBLEUR
EXEMPLE DE CODAGE DE TESTS
Langage évolué Assembleur
Jump si CX 0
Actions-POUR POUR:
Actions-POUR
FP
LOOP POUR
Suite_programme
Suite_Programme 99
PROGRAMMATION EN ASSEMBLEUR
EXEMPLE DE CODAGE DE TESTS
Actions-TQ
FTQ
JUMP TQ
Suite_programme
FTQ: Suite_Programme 100
PROGRAMMATION EN ASSEMBLEUR
EXEMPLE DE CODAGE DE TESTS
REPETER REPERTER:
Actions-REPETER Actions-REPETER
Calcul de la condition
JUSQUA (condition vraie)
JNCond REPETER
Suite_programme
Suite_Programme 101
PROGRAMMATION EN ASSEMBLEUR
EXERCICE 2
2. Comparer CX à 200
Exemple:
être calculée.
PROGRAMMATION EN ASSEMBLEUR
ACCÈS AUX ÉLÉMENTS D’UN TABLEAU
104
PROGRAMMATION EN ASSEMBLEUR
TRAITEMENT DES CHAÎNES DE DONNÉES
D=0 D=1
INC SI DEC SI
D=0 D=1
INC DI DEC DI
D=0 D=1
D=0 D=1
INC DI DEC DI
D=0 D=1
MOVS.
b. Décrémenter le compteur CX
114
2. Continuer l’exécution du programme
PROGRAMMATION EN ASSEMBLEUR
TRAITEMENT DES CHAÎNES DE DONNÉES
par DS: SI. Les itérations sont poursuivies tant que les
Data Segment
CH DB ‘hello word’ ; chaîne source
RES DB 11 DUP(?) ;chaîne destinataire
Date Ends
Code Segment
Assume CS: Code, DS: Date
Debut: LEA DI, RES ; MOV DI, offset RES
LEA SI, CH ; MOV SI, offset CH
MOV CX, 11 ; longueur de la chaîne
REP MOVSB ; copie
119
Code Ends
End Debut
PROGRAMMATION EN ASSEMBLEUR
TRAITEMENT DES CHAÎNES DE DONNÉES
Exemple: Recherche d’un caractère dans une chaîne de
caractères
Data Segment
CH DB ‘hello word’
Date Ends
Code Segment
Assume CS: Code, DS: Date
Debut: MOV AL, ’w’
LEA DI, CH
MOV CX, 11
REPNE SCASB
120
Code Ends
End Debut
PROGRAMMATION EN ASSEMBLEUR
ENTRÉES / SORTIES
Instructions Fonctionnalité
INT 21h
PROGRAMMATION EN ASSEMBLEUR
ENTRÉES / SORTIES
Instructions Fonctionnalité
Chaîne Lue
PROGRAMMATION EN ASSEMBLEUR
ACCÈS AUX ÉLÉMENTS D’UN TABLEAU
Exemple: Copier une chaîne lue dans une autre
Ch1 DB 15 DUP(13)
Ch2 DB 15 DUP(13)
.....
MOV AH, 0AH
LEA DX, Ch1
INT 21h
MOV CH, 0
MOV CL, [Ch1 + 1]
LEA SI, Ch1+2
LEA DI, Ch2+2 124
REP MOVSB
PROGRAMMATION EN ASSEMBLEUR
ENTRÉES / SORTIES
Instructions Fonctionnalité
INT 21h
PARTIE 4:
INSTRUCTIONS 8086
126
CODE MACHINE DES INSTRUCTIONS
Les instructions 8086 sont présentées dans la machine
sous forme d’une suite de bits.
Bits 7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
COP D W
8 bits 16 bits
CODE MACHINE DES INSTRUCTIONS
2ème octet: Le mode d’adressage
7 6 5 4 3 2 1 0
00 Directe
Indirecte avec DEP = 0
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
MOV AL, BL
COP D W MOD REG R/M
1000 10 ? ? ? ? ?
1000 10 0 0 11 011 000
88 D8
MOV AX, BX
COP D W MOD REG R/M
1000 10 0 1 11 011 000
133
89 D8
CODE MACHINE DES INSTRUCTIONS
Exemples:
8B 16 23 01
MOV [123h], DX
134
89 16 23 01
CODE MACHINE DES INSTRUCTIONS
Exemples:
MOV [SI], BL
COP D W MOD REG R/M
1000 10 ? ? ? ? ?
1000 10 0 0 00 011 100
88 1C
135
88 5C 14
CODE MACHINE DES INSTRUCTIONS
Exemples:
88 5C 14
136
88 9C 46 01
CODE MACHINE
DES INSTRUCTIONS DE TRANSFERT
Mnémonique 1er octet
MOV
R/M, R/M 1000 10dw MOD REG R/M (Adr ou dep)
M, Val 1100 011w MOD 000 M (Adr ou dep) valeur
R, Val 1011 w REG Valeur
AX/AL, M_direct 1010 000w M_direct
M_direct, AX/AL 1010 001w M_direct
XCHG
R/M, R/M 1000 011w MOD REG R/M (Adr ou dep)
R, AX 10010 REG
Var
CODE MACHINE
DES INSTRUCTIONS ARITHMÉTIQUE
Mnémonique 1er octet
ADD
R/M, R/M 0000 00dw MOD REG R/M (Adr ou dep)
R/M, Val 1000 00sw MOD 000 R/M (Adr ou dep) Valeur
AL/AX, Val 0000 010w Valeur
SUB
R/M, R/M 0010 10dw MOD REG R/M (Adr ou dep)
M, Val 1000 00sw MOD 101 R/M (Adr ou dep) Valeur
R, Val 1000 00sw 11 101 REG Valeur
AL/AX, Val 0010 110w Valeur
CMP
R/M, R/M 0011 10dw MOD REG R/M (Adr ou dep)
R/M, Val 1000 00sw MOD 111 R/M (Adr ou dep) Valeur
AL/AX, Val 0011 110w Valeur
s=1 dans le cas où une extension de signe 8 bits vers 16 bits 138
est effectuée sur la donnée valeur avant l’opération.
CODE MACHINE
DES INSTRUCTIONS ARITHMÉTIQUE
SAR
R/M,1 1101 000w MOD 111 R/M (Adr ou dep)
R/M,CL 1101 001w MOD 111 R/M (Adr ou dep)
SHL/SAL
R/M,1 1101 000w MOD 100 R/M (Adr ou dep)
R/M,CL 1101 001w MOD 100 R/M (Adr ou dep)
SHR
R/M,1 1101 000w MOD 101 R/M (Adr ou dep)
R/M,CL 1101 001w MOD 101 R/M (Adr ou dep)
141
CODE MACHINE
DES INSTRUCTIONS DE DÉCALAGE
Mnémonique 1er octet 2ème octet
ROL
R/M,1 1101 000w MOD 000 R/M (Adr ou dep)
R/M,CL 1101 001w MOD 000 R/M (Adr ou dep)
ROR
R/M,1 1101 000w MOD 001 R/M (Adr ou dep)
R/M,CL 1101 001w MOD 001 R/M (Adr ou dep)
RCL
R/M,1 1101 000w MOD 010 R/M (Adr ou dep)
R/M,CL 1101 001w MOD 010 R/M (Adr ou dep)
RCR 142
JMP
Etiq 1110 1001 DepRel_16
Short Etiq 1110 1011 DepRel_8
145
AUTRES INSTRUCTIONS
Instructions d’action sur les indicateurs :
Mnémonique 1er octet Action
CLC 1111 1000 C0
STC 1111 1001 C 1
CMC 1111 0101 C NOT C
CLD 1111 1100 D0 (Gauche à droite)
STD 1111 1101 D 1 (Droite à gauche)
sur http://infotroniquedz.ble.fr/architecture_des_pcs_107.htm
http://www.technologuepro.com/cours-genie-electrique/cours-2-microprocesseur-
8086-architecture-programmation/