ARCHITECTURE DES ORDINATEURS

publicité
ARCHITECTURE DES ORDINATEURS
Filière : InfoTronique
Chap. 4 : Architecture et fonctionnement
du microprocesseur 8086
Dr. Abdelhakim Khouas
Email : [email protected]
Département de Physique
Faculté des Sciences
Objectif de ce chapitre
Comprendre l’architecture et le jeux d’instruction du
8086
Š Architecture interne du 8086
™
™
Unité arithmétique et logique (UAL)
Unité de commande
Š Traitement et exécution des instructions
™
™
Programme assembleur
Représentation et codage des instruction
Š Jeu d‘instructions du 8086
Architecture – Chap. 4
1
© A. Khouas, 2008
Plan
1.
Architecture interne du 8086
Unité d’exécution
Unité de transfert ou de commande
2.
Fonctionnement du 8086
Programme assembleur
Représentation et codage des instructions
Traitement et exécution des instructions
3.
Jeu d’instruction du 8086
Instructions
Instructions
Instructions
Instructions
Instructions
Instructions
4.
5.
de transfert de données
arithmétiques et logiques
de décalage et de rotation
de comparaison
de sauts conditionnels et inconditionnels
liées au registre d’état
Exemples de codage
Conclusion
Architecture – Chap. 4
2
© A. Khouas, 2008
Rappel
Architecture d’un ordinateur
Architecture Von Newmann
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
Architecture – Chap. 4
3
© A. Khouas, 2008
Rappel
Les registres du 8086
AX=0FFF BX=0FFF CX=0000 DX=00FF SP=FFEE BP=0000
SI=0000 DI=0000 DS=13B0 ES=13B0 SS=13B0 CS=13B0
IP=0306 NV UP EI PL NZ NA PO NC
Š 4 Registres généraux : AX, BX, CX et DX. Chaque registre général
est composé de deux registres de 2 octets (8 bits) (e.g. AX = AH*256
+ AL, AH est le registre de poids fort et AL est le registre de poids
faible)
Š 2 Registres d’index : SI (Source Index) et DI (Destination Index).
Š 4 Registres de segment : CS (Code Segment), DS (Data Segment),
ES (Extra segment), et SS (Stack Segment)
Š 3 registres de pointeur : IP (instruction Pointer), SP (Stack Pointer)
et BP (Base Pointer).
Š 1 Registre d’état : F (Flag Register). les flags du registre sont :
débordement, retenue, retenue auxiliaire, signe, parité, zéro,
interruption, exécution pas à pas.
Architecture – Chap. 4
4
© A. Khouas, 2008
1. Architecture interne du 8086
Description du μP 8086
Š Apparu en 1978
Š 16 bits de données
Š 20 bits d’adresse
Š Boîtier DIP (Dual In-line
Package) 40 broches
Š Les adresses et les données
sont multiplexés
Description du
8086
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
Architecture – Chap. 4
5
© A. Khouas, 2008
1. Architecture interne du 8086
Démultiplexage des signaux
adressses/données
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
Architecture – Chap. 4
6
© A. Khouas, 2008
1. Architecture interne du 8086
Le microprocesseur 8086 est composé principalement
de deux unités :
1. Unité d’exécution (Execution Unit EU)
2. Unité d’interfaçage de bus (Bus interface Unit BIU)
Architecture – Chap. 4
7
© A. Khouas, 2008
1. Architecture interne du 8086
Architecture interne
du 8086
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
Architecture – Chap. 4
8
© A. Khouas, 2008
1. Architecture interne du 8086
Architecture interne du 8086
Réf. : Principe des microprocesseurs
Jaques BAUMANN
Architecture – Chap. 4
9
© A. Khouas, 2008
2. Fonctionnement du 8086
Le fonctionnement d’un μP consiste à exécuter un
programme en assembleur 8086
Architecture – Chap. 4
10
© A. Khouas, 2008
2.1 Programme assembleur
Un programme assembleur est une suite
d’instructions précises données par le fabricant du
μP et qui sont comprises par le μP
Exemple :
Š Programme assembleur du 8086
™
™
™
mov ax,ff
mov bx,[35]
add ax,bx
Architecture – Chap. 4
11
© A. Khouas, 2008
2.2 Représentation et codage des instructions
L’instruction est une opération de base qui peut être
décodée et exécutée par le μP
Format d’une instruction
Š Chaque instruction a un format donné
Š Le format général d’une instruction est :
Mnémonique
Opérande 1
[Opérande 2]
• Mnémonique: est le nom de l’opération
• Opérande 1 : est en général un registre ou ne case mémoire
• Opérande 2 : est soit un registre, soit une case mémoire, soit une valeur
Architecture – Chap. 4
12
© A. Khouas, 2008
2.2 Représentation et codage des instructions
Formats des instructions
Š Le format général d’une instruction est :
Mnémonique
Opérande 1
[Opérande 2]
• Mnémonique: est le nom de l’opération
• Opérande 1 : est en général un registre ou une case mémoire
• Opérande 2 : est soit un registre, soit une case mémoire, soit une valeur
Exemples :
™
™
™
™
MOV AX,[00FF]
ADD AX,BX
STC
JMP 0100
Architecture – Chap. 4
13
© A. Khouas, 2008
2.2 Représentation et codage des instructions
Chaque instruction est placée en mémoire sous forme codée
Š Cette représentation est appelé code machine
Le codage de l’instruction est effectué en décomposant
l’instruction en sous groupes de bits appelés champs,
spécifiant les caractéristiques de l’instruction. Les différents
champs sont :
Š
Š
Š
Š
Code opération : code indiquant l’opération (ADD, MOV, SUB, …etc)
Type de donnée : 1 pour octet et 0 pour mot (2 octets)
Registre : indique le numéro d’un des registres utilisés
Mode d’adressage : indique le mode d’adressage (voir ch. mémoire)
Architecture – Chap. 4
14
© A. Khouas, 2008
2.2 Représentation et codage des instructions
Code opération d’une instruction (opcode)
Š Chaque instruction est codée en binaire et est décodé par
le μP lors de l’exécution de l’instruction
Exemple :
Ci-dessous différents codes de l’instruction MOV donnés par
la commande u de debug
™
™
™
™
13B0:0100
13B0:0103
13B0:0106
13B0:0108
Architecture – Chap. 4
B8FF00
A1FF00
89D8
8B07
MOV
MOV
MOV
MOV
15
AX,00FF
AX,[00FF]
AX,BX
AX,[BX]
© A. Khouas, 2008
2.2 Représentation et codage des instructions
Exemples de codes opération du 8086 :
Architecture – Chap. 4
16
© A. Khouas, 2008
2.3 Traitement et exécution d’une instruction
Les étapes d’exécution d’une instruction sont :
1.
2.
3.
4.
5.
6.
Chargement de l’instruction courante (registre IP)
Incrémentation du pointeur d’instruction
Décodage et analyse de l’instruction
Localisation et chargement des données
Exécution de l’instruction
Retour à l’étape 1
Ce cycle s’appelle :
Š Cycle de chargement-décodage-exécution
Ou (fetch-decode-excute) cycle
Architecture – Chap. 4
17
© A. Khouas, 2008
3. Jeu d’instructions du 8086
Définition :
Š C’est l’ensemble des instructions qui peuvent être exécutées par le μP
Il existe plusieurs groupes d’instructions (voir Annexe A des TP)
Š
Š
Š
Š
Š
Š
Les instructions de transfert de données
Les instructions arithmétiques et logiques
Les instruction de décalage et rotation
L’instruction de comparaison
Les instructions de saut et de branchement
Les instructions relatives au registre d’état
Architecture – Chap. 4
18
© A. Khouas, 2008
3.1 Instructions de transfert de données
Architecture – Chap. 4
19
© A. Khouas, 2008
3.2 Instructions arithmétiques et logiques
Addition : ADD opérande1,opérande2
opérande1 ← opérande1 + opérande2
Š Exemple : add byte ptr [1200H],05H
™
ajoute la valeur 05H au contenu de la case mémoire d’offset
1200H (adressage immédiat).
Soustraction : SUB opérande1,opérande2
opérande1 ← opérande1 − opérande2
Architecture – Chap. 4
20
© A. Khouas, 2008
3.2 Instructions arithmétiques et logiques
Multiplication : MUL opérande
Š Cette instruction effectue la multiplication du contenu de AL par un
opérande sur 1 octet ou du contenu de AX par un opérande sur 2
octets. Le résultat est placé dans AX si les données à multiplier sont
sur 1 octet (résultat sur 16 bits), dans (DX,AX) si elles sont sur 2
octets (résultat sur 32 bits).
™
™
Si opérande sur 1 octet : AX <-- AL * opérande
Si opérande sur 2 octets : (DX,AX) <-- AX * opérande
Š Exemple 1:
™
™
™
™
mov al,51
mov bl,32
mul bl
→ AX = 51 × 32
Architecture – Chap. 4
21
© A. Khouas, 2008
3.2 Instructions arithmétiques et logiques
Š Exemple 2 :
™
™
™
™
mov ax,4253
mov bx,1689
mul bx
→ (DX, AX) = 4253 × 1689
Š Exemple 3 :
™
™
™
™
mov al,43
mov byte ptr [1200H],28
mul byte ptr [1200H]
→ AX = 43 × 28
Š Exemple 4 :
™
™
™
™
Architecture – Chap. 4
mov ax,1234
mov word ptr [1200H],5678
mul word ptr [1200H]
→ (DX, AX) = 1234 × 5678
22
© A. Khouas, 2008
3.2 Instructions arithmétiques et logiques
Division : DIV opérande
Š Cette instruction effectue la division du contenu de AX par un
opérande sur 1 octet ou le contenu de (DX,AX) par un opérande sur 2
octets.
™
™
Si opérande sur 1 octet : AL=quotient et AH=reste
Si opérande sur 2 octets : AX=quotient et DX=reste.
Š Exemples :
™
™
™
™
™
™
™
™
™
mov ax,35
mov bl,10
div bl
→ AL = 3 (quotient) et AH = 5 (reste)
mov dx,0
mov ax,1234
mov bx,10
div bx
→ AX = 123 (quotient) et DX = 4 (reste)
Architecture – Chap. 4
23
© A. Khouas, 2008
3.2 Instructions arithmétiques et logiques
Instructions logiques
Š
Š
Š
Š
Š
OU logique : OR op1,op2 ;
ET logique : AND op1,op2 ;
OU exclusif : XOR op1,op2 ;
Négation : NOT op ;
Complément à 1 : NEG op ; op ← not(op) +1.
Autre instructions :
Š
Š
Š
Š
Š
Š
Architecture – Chap. 4
ADC : addition avec retenue ;
SBB : soustraction avec retenue ;
INC : incrémentation d’une unité ;
DEC : décrémentation d’une unité ;
IMUL : multiplication signée ;
IDIV : division signée.
24
© A. Khouas, 2008
3.3 Instructions de décalage et de rotation
shl dest, op
décalage logique gauche dest.0
shr dest, op
décalage logique droite 0.dest
sar dest, op
décalage arithmétique droite S.dest
rol dest, op
rotation gauche dest
ror dest, op
rotation droite dest
rcl dest, op
rot. gauche dest.C
rcr dest, op
rot. droite C.dest
™
™
dest == registre ou adresse mémoire
OP == 1 ou CL
Architecture – Chap. 4
25
© A. Khouas, 2008
3.3 Instructions de décalage et de rotation
Architecture – Chap. 4
26
© A. Khouas, 2008
3.3 Instructions de décalage et de rotation
Architecture – Chap. 4
27
© A. Khouas, 2008
3.3 Instructions de décalage et de rotation
Architecture – Chap. 4
28
© A. Khouas, 2008
3.3 Instructions de décalage et de rotation
Architecture – Chap. 4
29
© A. Khouas, 2008
3.4 Instruction de comparaison
Instruction de comparaison :
Š CMP opérande1 opérande2 ;
™
--> opérande 1 – opérande2
Š Cette instruction permet de comparer les deux opérandes
et d’activer les flags du registre d’état pour les sauts
conditionnels
Š Exemple :
™
™
™
mov
cmp
-->
bit
al, 23
al, 34
29 – 34 (positionne le bit de carry C et le
de signe S, le bit de zéro Z vaut 0)
Architecture – Chap. 4
30
© A. Khouas, 2008
3.5 Instructions de sauts et de branchement
Instructions de sauts inconditionnels :
JMP addr
CALL addr
RET
saut inconditionnel
appel sous-programme
retour sous-programme
Š Exemple (boucle infinie)
™
boucle :
inc ax
dec bx
jmp boucle
™
™
Š Remarques :
™
™
Avec debug, il faut écrire le code en deux phases, la première permet de
récupérer l’adresse de saut.
Certains assembleurs utilisent des labels
Architecture – Chap. 4
31
© A. Khouas, 2008
3.5 Instructions de sauts et de branchement
Instructions de sauts conditionnels / carry:
JC addr
JNC addr
saut si carry=1
saut si carry=0
Instructions de sauts conditionnels / entiers :
JE addr
JNE addr
JZ addr
JNZ addr
Architecture – Chap. 4
saut
saut
saut
saut
si
si
si
si
32
=
=/
=0
=/ 0
© A. Khouas, 2008
3.5 Instructions de sauts et de branchement
Instructions de sauts conditionnels / entiers non
signés:
JB addr
JA addr
JBE addr
JAE addr
saut
saut
saut
saut
si
si
si
si
<
>
<=
>=
Instructions de sauts conditionnels / entiers signés :
JL addr
JG addr
JLE addr
JGE addr
Architecture – Chap. 4
saut
saut
saut
saut
si
si
si
si
<
>
<=
>=
33
© A. Khouas, 2008
3.5 Instructions de sauts et de branchement
Autres instructions de sauts conditionnels :
JCXZ addr
JO addr
JNO addr
JP addr
JNP addr
JS addr
JNS addr
saut
saut
saut
saut
saut
saut
saut
si
si
si
si
si
si
si
CX vaut 0
débordement (O =1)
pas de débordement (O =0)
parité (P =1)
pas de parité (P =0)
signe (S =1)
pas de signe (S =0)
Les boucles :
LOOP addr
LOOPE addr
LOOPNE addr
Architecture – Chap. 4
saut court si le compteur CX est différent de 0
saut court si compteur CX différent de 0 et Z =1
saut court si compteur CX différent de 0 et Z =0
34
© A. Khouas, 2008
3.5 Instructions de sauts et de branchement
Exemple : Addition des 5 valeurs se trouvant à
l’adresse 1101-1105
13C9:0100
13C9:0103
13C9:0106
13C9:0108
13C9:010C
13C9:010E
Architecture – Chap. 4
BA0000
B90500
89CB
02970011
E2F8
CD20
MOV
MOV
MOV
ADD
LOOP
INT
35
DX,0000
CX,0005
BX,CX
DL,[BX+1100]
0106
20
© A. Khouas, 2008
3.5 Instructions de sauts et de branchement
Exemple :
Š Addition des valeurs contenu dans la mémoire à partir de
l’adresse 400h jusqu’au débordement
13C9:0300
13C9:0303
13C9:0306
13C9:0309
13C9:030B
13C9:030E
13C9:030G
Architecture – Chap. 4
BE0004
BB0000
BA0000
0310
0310
71FC
CD20
MOV
MOV
MOV
ADD
ADD
JNO
INT
36
SI,0400
BX,0000
DX,0000
DX,[BX+SI]
SI,2
0309
20
© A. Khouas, 2008
3.6 Instructions relatives au registre d’état
LAHF : copie dans le registre AH la valeur du registre d’état
SAHF : copie dans le registre d’état le contenu du registre AH
PUSHF : Sauvegarde du registre d’état dans la pile
POPF : Récupération du registre d’état de la pile
CLC : mise à 0 de l’indicateur de retenue C
STC : mise à 1 de l’indicateur de retenue C
CMC : complémente l’indicateur de retenue C
CLD : mise à zéro de l’indicateur de direction D
STD : mise à 1 de l’indicateur de direction D
Architecture – Chap. 4
37
© A. Khouas, 2008
4. Exemples de codage
Traduction en assembleur de la boucle pour :
™
™
™
POUR indice := 1 à n FAIRE
action
FAIT
Š Transformation :
™
™
™
POUR indice := n à 1, pas := -1 FAIRE
action
FAIT
Š Cette boucle se traduit en assembleur de la manière suivante :
™
™
POURn:
™
™
Architecture – Chap. 4
mov cx, n
...
action
loop POURn
38
© A. Khouas, 2008
4. Exemples de codage
Traduction de la boucle Si-Alors-Sinon :
™
™
™
™
™
SI (condition vraie) ALORS
action-alors
SINON
action-sinon
FIN_SI
Š Cette boucle se traduit en assembleur de la manière suivante :
™
™
™
™
™
™
™
™
™
™
calcul de la condition
Jcc SINONn
action-alors
...
JMP FSIn
SINONn:
action-sinon
...
FSIn:
...
Architecture – Chap. 4
39
© A. Khouas, 2008
4. Exemples de codage
Traduction de la boucle répéter
™
™
™
REPETER
action
JUSQUA (condition vraie)
Š Cette boucle se traduit en assembleur de la manière
suivante :
™
™
™
™
™
REPETER
action
...
calcul de la condition (positionnement des
flags)
Jcc REPETER
Architecture – Chap. 4
40
© A. Khouas, 2008
4. Exemples de codage
Traduction en assembleur de la boucle tant que :
™
™
™
TANT-QUE (condition) FAIRE
action
FIN_TQ
Š Cette boucle se traduit en assembleur de la manière
suivante :
™
TQ :
™
™
™
™
™
calcul de la condition
Jcc FTQ
action
...
JMP TQ
FTQ:
™
Architecture – Chap. 4
...
41
© A. Khouas, 2008
4. Exemples de codage
Réf. : Microprocesseur, support de cours
Dr. J. Y. Haggège
Architecture – Chap. 4
42
© A. Khouas, 2008
5. Conclusion
Ce qui est important à retenir :
Š
Š
Š
Š
Architecture – Chap. 4
Architecture interne du 8086
Représentation et codage des instructions
Exécution des instructions
Jeux d’instruction du 8086
43
© A. Khouas, 2008
Téléchargement