Vous êtes sur la page 1sur 44

ARCHITECTURE DES ORDINATEURS

Filière : InfoTronique
Chap. 4 : Architecture et fonctionnement
du microprocesseur 8086

Dr. Abdelhakim Khouas


Email : sm5_archi@hotmail.fr
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 de transfert de données
Instructions arithmétiques et logiques
Instructions de décalage et de rotation
Instructions de comparaison
Instructions de sauts conditionnels et inconditionnels
Instructions liées au registre d’état
4. Exemples de codage
5. 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 B8FF00 MOV AX,00FF
™ 13B0:0103 A1FF00 MOV AX,[00FF]
™ 13B0:0106 89D8 MOV AX,BX
™ 13B0:0108 8B07 MOV AX,[BX]

Architecture – Chap. 4 15 © 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. Chargement de l’instruction courante (registre IP)
2. Incrémentation du pointeur d’instruction
3. Décodage et analyse de l’instruction
4. Localisation et chargement des données
5. Exécution de l’instruction
6. 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 :
™ mov ax,1234
™ mov word ptr [1200H],5678
™ mul word ptr [1200H]
™ → (DX, AX) = 1234 × 5678

Architecture – Chap. 4 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 :
Š 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.

Architecture – Chap. 4 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 al, 23
™ cmp al, 34
™ --> 29 – 34 (positionne le bit de carry C et le
bit 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 saut inconditionnel


CALL addr appel sous-programme
RET 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 saut si carry=1
JNC addr saut si carry=0

Instructions de sauts conditionnels / entiers :


JE addr saut si =
JNE addr saut si =/
JZ addr saut si =0
JNZ addr saut si =/ 0

Architecture – Chap. 4 32 © A. Khouas, 2008


3.5 Instructions de sauts et de branchement

Instructions de sauts conditionnels / entiers non


signés:
JB addr saut si <
JA addr saut si >
JBE addr saut si <=
JAE addr saut si >=
Instructions de sauts conditionnels / entiers signés :
JL addr saut si <
JG addr saut si >
JLE addr saut si <=
JGE addr saut si >=

Architecture – Chap. 4 33 © A. Khouas, 2008


3.5 Instructions de sauts et de branchement

Autres instructions de sauts conditionnels :


JCXZ addr saut si CX vaut 0
JO addr saut si débordement (O =1)
JNO addr saut si pas de débordement (O =0)
JP addr saut si parité (P =1)
JNP addr saut si pas de parité (P =0)
JS addr saut si signe (S =1)
JNS addr saut si pas de signe (S =0)

Les boucles :
LOOP addr saut court si le compteur CX est différent de 0
LOOPE addr saut court si compteur CX différent de 0 et Z =1
LOOPNE addr saut court si compteur CX différent de 0 et Z =0

Architecture – Chap. 4 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 BA0000 MOV DX,0000
13C9:0103 B90500 MOV CX,0005
13C9:0106 89CB MOV BX,CX
13C9:0108 02970011 ADD DL,[BX+1100]
13C9:010C E2F8 LOOP 0106
13C9:010E CD20 INT 20

Architecture – Chap. 4 35 © 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 BE0004 MOV SI,0400


13C9:0303 BB0000 MOV BX,0000
13C9:0306 BA0000 MOV DX,0000
13C9:0309 0310 ADD DX,[BX+SI]
13C9:030B 0310 ADD SI,2
13C9:030E 71FC JNO 0309
13C9:030G CD20 INT 20

Architecture – Chap. 4 36 © 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 :
™ mov cx, n
™ POURn: ...
™ action
™ loop POURn

Architecture – Chap. 4 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 interne du 8086
Š Représentation et codage des instructions
Š Exécution des instructions
Š Jeux d’instruction du 8086

Architecture – Chap. 4 43 © A. Khouas, 2008