Académique Documents
Professionnel Documents
Culture Documents
Scientifique
Université-TAHRI Mohamed- de Bechar
Nom et prénom:
❖ Bouazzaoui sid Ahmed
❖ Baghdadi maamar
❖ Becheri youssef
1
microprocesseur 8086
• Pipelining - 8085 ne prend pas en charge une architecture en pipeline tandis que 8086 prend en
charge une architecture en pipeline.
• I/O - 8085 peut adresser 2 ^ 8 = 256 E / S, tandis que 8086 peut accéder à 2 ^ 16 = 65 536 E /
S.
• Cost - Le coût du 8085 est faible alors que celui du 8086 est élevé.
Architecture de 8086
Le schéma suivant illustre l'architecture d'un microprocesseur
2
microprocesseur 8086
ALU
Il gère toutes les opérations arithmétiques et logiques, comme les opérations +, -, ×, /, OR, AND,
NOT.
Registre du drapeau
C'est un registre 16 bits qui se comporte comme une bascule, c'est-à-dire qu'il change d'état en
fonction du résultat stocké dans l'accumulateur. Il a 9 drapeaux et ils sont divisés en 2 groupes -
les drapeaux conditionnels et les drapeaux de contrôle.
Drapeaux conditionnels
Il représente le résultat de la dernière instruction arithmétique ou logique exécutée. Voici la liste
des indicateurs conditionnels -
• Carry flag - Cet indicateur indique une condition de débordement pour les opérations
arithmétiques.
• Auxiliary flag- Lorsqu'une opération est effectuée à ALU, il en résulte un report / barrow du
quartet inférieur (c'est-à-dire D0 - D3) au quartet supérieur (c'est-à-dire D4 - D7), alors ce
drapeau est positionné, c'est-à-dire que le report donné par le bit D3 à D4 est Drapeau AF. Le
processeur utilise cet indicateur pour effectuer une conversion binaire en BCD.
• Parity flag- Ce drapeau est utilisé pour indiquer la parité du résultat, c'est-à-dire que lorsque
les 8 bits d'ordre inférieur du résultat contiennent un nombre pair de 1, le drapeau de parité est
positionné. Pour un nombre impair de 1, l'indicateur de parité est réinitialisé.
• Zero flag - Cet indicateur est mis à 1 lorsque le résultat d'une opération arithmétique ou
logique est égal à zéro, sinon il est mis à 0.
• Sign flag - Ce drapeau contient le signe du résultat, c'est-à-dire lorsque le résultat de l'opération
est négatif, alors le drapeau de signe est mis à 1 sinon mis à 0.
• Overflow flag - Cet indicateur représente le résultat lorsque la capacité du système est
dépassée.
Drapeaux de contrôle
Les drapeaux de contrôle contrôlent les opérations de l'unité d'exécution. Voici la liste des
indicateurs de contrôle -
• Trap flag- Il est utilisé pour le contrôle en une seule étape et permet à l'utilisateur d'exécuter
une instruction à la fois pour le débogage. S'il est défini, le programme peut être exécuté en une
seule étape.
• Interrupt flag- C'est un drapeau d'activation / désactivation d'interruption, c'est-à-dire utilisé
pour autoriser / interdire l'interruption d'un programme. Il est défini sur 1 pour une condition
d'interruption activée et sur 0 pour une condition d'interruption désactivée.
3
microprocesseur 8086
• Direction flag- Il est utilisé dans le fonctionnement des chaînes. Comme son nom l'indique
lorsqu'il est défini, les octets de chaîne sont accessibles de l'adresse mémoire supérieure à
l'adresse mémoire inférieure et vice-versa.
Registre à usage général
Il existe 8 registres à usage général, c'est-à-dire AH, AL, BH, BL, CH, CL, DH et DL. Ces
registres peuvent être utilisés individuellement pour stocker des données 8 bits et peuvent être
utilisés par paires pour stocker des données 16 bits. Les paires de registres valides sont AH et
AL, BH et BL, CH et CL, et DH et DL. Il se réfère respectivement à AX, BX, CX et DX.
• AX register- Il est également connu sous le nom de registre d'accumulateur. Il est utilisé pour
stocker les opérandes pour les opérations arithmétiques.
• BX register- Il est utilisé comme registre de base. Il est utilisé pour stocker l'adresse de base de
départ de la zone de mémoire dans le segment de données.
• CX register- Il est appelé compteur. Il est utilisé dans l'instruction de boucle pour stocker le
compteur de boucle.
• DX register - Ce registre est utilisé pour contenir l'adresse du port d'E / S pour l'instruction d'E
/ S.
Registre de pointeur de pile
Il s'agit d'un registre 16 bits, qui contient l'adresse du début du segment à l'emplacement mémoire,
où un mot a été le plus récemment stocké sur la pile.
BIU (unité d'interface de bus)
BIU prend en charge tous les transferts de données et d'adresses sur les bus pour l'UE, tels que
l'envoi d'adresses, l'extraction d'instructions de la mémoire, la lecture des données des ports et
de la mémoire ainsi que l'écriture de données sur les ports et la mémoire. EU n'a pas de
connexion directionnelle avec les bus système, c'est donc possible avec la BIU. EU et BIU sont
connectés au bus interne.
Il comprend les éléments fonctionnels suivants -
• Instruction queue- BIU contient la file d'attente d'instructions. BIU obtient jusqu'à 6 octets
d'instructions suivantes et les stocke dans la file d'attente d'instructions. Lorsque EU exécute
des instructions et est prêt pour sa prochaine instruction, il lit simplement l'instruction à partir
de cette file d'attente d'instructions, ce qui augmente la vitesse d'exécution.
• La récupération de l'instruction suivante pendant l'exécution de l'instruction en cours est
appelée pipelining.
• Segment register- BIU dispose de 4 bus de segment, à savoir CS, DS, SS et ES. Il contient les
adresses des instructions et des données en mémoire, qui sont utilisées par le processeur pour
accéder aux emplacements mémoire. Il contient également 1 registre de pointeur IP, qui
contient l'adresse de la prochaine instruction à exécuter par l'UE.
4
microprocesseur 8086
o CS- Cela signifie segment de code. Il est utilisé pour adresser un emplacement mémoire dans le
segment de code de la mémoire, où le programme exécutable est stocké.
o DS- Il signifie segment de données. Il se compose de données utilisées par le programme et est
accessible dans le segment de données par une adresse de décalage ou le contenu d'un autre
registre qui contient l'adresse de décalage.
o SS- Il signifie Stack Segment. Il gère la mémoire pour stocker les données et les adresses
pendant l'exécution.
o ES- Il signifie Extra Segment. ES est un segment de données supplémentaire, qui est utilisé par
la chaîne pour contenir les données de
LOCK:
Lorsque ce signal est actif, il indique aux autres processeurs de ne pas demander à la CPU de
quitter le bus système. Il est activé en utilisant le préfixe LOCK sur n'importe quelle instruction
et est disponible à la broche 29.
RQ/GT1 and RQ/GT0:
Ce sont les signaux Request / Grant utilisés par les autres processeurs demandant à la CPU de
libérer le bus système. Lorsque le signal est reçu par la CPU, il envoie un accusé de réception.
RQ / GT 0 a une priorité plus élevée que RQ / GT 1 .
5
microprocesseur 8086
6
microprocesseur 8086
7
microprocesseur 8086
• TEST - Utilisé pour ajouter des opérandes pour mettre à jour les indicateurs, sans affecter les
opérandes.
Instructions pour effectuer les opérations de quart
• SHL/SAL - Utilisé pour décaler les bits d'un octet / mot vers la gauche et mettre zéro (S) dans
les LSB.
• SHR - Utilisé pour décaler les bits d'un octet / mot vers la droite et mettre zéro (S) dans les
MSB.
• SAR - Utilisé pour décaler les bits d'un octet / mot vers la droite et copier l'ancien MSB dans le
nouveau MSB.
Instructions pour effectuer des opérations de rotation
• ROL - Utilisé pour faire pivoter les bits d'octet / mot vers la gauche, c'est-à-dire MSB vers
LSB et vers Carry Flag [CF].
• ROR - Utilisé pour faire pivoter les bits d'octet / mot vers la droite, c'est-à-dire LSB vers MSB
et Carry Flag [CF].
• RCR - Utilisé pour faire pivoter les bits d'octet / mot vers la droite, c'est-à-dire LSB vers CF et
CF vers MSB.
• RCL - Utilisé pour faire pivoter les bits d'octet / mot vers la gauche, c'est-à-dire MSB vers CF
et CF vers LSB.
Instructions de chaîne
String est un groupe d'octets / mots et leur mémoire est toujours allouée dans un ordre séquentiel.
Voici la liste des instructions sous ce groupe -
• REP - Utilisé pour répéter l'instruction donnée jusqu'à CX ≠ 0.
• REPE/REPZ - Utilisé pour répéter l'instruction donnée jusqu'à ce que CX = 0 ou zéro drapeau
ZF = 1.
• REPNE/REPNZ - Utilisé pour répéter l'instruction donnée jusqu'à ce que CX = 0 ou zéro
drapeau ZF = 1.
• MOVS/MOVSB/MOVSW - Utilisé pour déplacer l'octet / mot d'une chaîne à une autre.
• COMS/COMPSB/COMPSW - Utilisé pour comparer deux octets / mots de chaîne.
• INS/INSB/INSW - Utilisé comme chaîne / octet / mot d'entrée du port d'E / S à l'emplacement
de mémoire fourni.
• OUTS/OUTSB/OUTSW - Utilisé comme chaîne / octet / mot de sortie de l'emplacement de
mémoire fourni vers le port d'E / S.
8
microprocesseur 8086
• SCAS/SCASB/SCASW - Utilisé pour scanner une chaîne et comparer son octet avec un octet
dans AL ou un mot de chaîne avec un mot dans AX.
• LODS/LODSB/LODSW - Utilisé pour stocker l'octet de chaîne dans AL ou le mot de chaîne
dans AX.
Instructions de transfert d'exécution du programme (instructions de branchement et de boucle)
Ces instructions sont utilisées pour transférer / dériver les instructions lors d'une exécution. Il
comprend les instructions suivantes -
Instructions pour transférer l'instruction lors d'une exécution sans aucune condition -
• CALL - Utilisé pour appeler une procédure et enregistrer son adresse de retour dans la pile.
• RET - Permet de revenir de la procédure au programme principal.
• JMP - Utilisé pour sauter à l'adresse fournie pour passer à l'instruction suivante.
Instructions pour transférer l'instruction lors d'une exécution avec certaines conditions -
• JA/JNBE - Utilisé pour sauter si l'instruction supérieure / non inférieure / égale satisfait.
• JAE/JNB - Utilisé pour sauter si l'instruction ci-dessus / pas en dessous satisfait.
• JBE/JNA - Utilisé pour sauter si une instruction inférieure / égale / non supérieure satisfait.
• JC - Utilisé pour sauter si porter le drapeau CF = 1
• JE/JZ - Utilisé pour sauter si drapeau égal / zéro ZF = 1
• JG/JNLE - Utilisé pour sauter si une instruction supérieure / non inférieure à / égale satisfait.
• JGE/JNL - Utilisé pour sauter si supérieur / égal / non inférieur à l'instruction satisfait.
• JL/JNGE - Utilisé pour sauter si l'instruction inférieure / non supérieure à / égale satisfait.
• JLE/JNG - Utilisé pour sauter si inférieur / égal / sinon supérieur à l'instruction satisfait.
• JNC - Utilisé pour sauter si aucun drapeau de report (CF = 0)
• JNE/JNZ - Utilisé pour sauter sinon égal / zéro flag ZF = 0
• JNO - Utilisé pour sauter si aucun drapeau de débordement OF = 0
• JNP/JPO - Utilisé pour sauter sinon parité / parité impaire PF = 0
• JNS - Utilisé pour sauter sinon signer SF = 0
• JO - Utilisé pour sauter si le drapeau de débordement OF = 1
• JP/JPE - Utilisé pour sauter si parité / parité même PF = 1
• JS - Utilisé pour sauter si le drapeau de signe SF = 1
9
microprocesseur 8086
o destination supplémentaires.
10
microprocesseur 8086
• Instruction pointer - C'est un registre 16 bits utilisé pour contenir l'adresse de la prochaine
instruction à exécuter.
• 8086 était le premier microprocesseur 16 bits disponible en puce DIP (Dual Inline Package) à
40 broches. Voyons maintenant en détail la configuration des broches d'un microprocesseur
8086.
• Schéma des broches 8086
• Voici le schéma des broches du microprocesseur 8086 -
11
microprocesseur 8086
12
microprocesseur 8086
• overlineTEST
• Ce signal est comme l'état d'attente et est disponible sur la broche 23. Lorsque ce signal est
haut, le processeur doit attendre l'état IDLE, sinon l'exécution continue.
• MN/MX―
• Il signifie Minimum / Maximum et est disponible sur la broche 33. Il indique dans quel mode le
processeur doit fonctionner; quand il est élevé, il fonctionne en mode minimum et vice-aversa.
• INTA
• C'est un signal et un identifiant d'acquittement d'interruption disponibles sur la broche 24.
Lorsque le microprocesseur reçoit ce signal, il acquitte l'interruption.
• ALE
• Il représente le verrou de validation d'adresse et est disponible sur la broche 25. Une impulsion
positive est générée chaque fois que le processeur commence une opération. Ce signal indique
la disponibilité d'une adresse valide sur les lignes d'adresse / de données.
• DEN
• Il signifie Data Enable et est disponible sur la broche 26. Il est utilisé pour activer le
Transreceiver 8286. Le Transreceiver est un appareil utilisé pour séparer les données du bus
d'adresse / de données.
• DT/R
• Il représente le signal de transmission / réception de données et est disponible sur la broche 27.
Il décide de la direction du flux de données à travers l'émetteur-récepteur. Lorsqu'il est élevé,
les données sont transmises et vice-versa.
• M/IO
• Ce signal est utilisé pour faire la distinction entre les opérations de mémoire et d'E / S.
Lorsqu'il est élevé, il indique le fonctionnement des E / S et lorsqu'il est bas, il indique le
fonctionnement de la mémoire. Il est disponible à la broche 28.
• WR
• Il représente le signal d'écriture et est disponible sur la broche 29. Il est utilisé pour écrire les
données dans la mémoire ou le périphérique de sortie en fonction de l'état du signal M / IO.
• HLDA
• Il représente le signal d'accusé de réception Hold et est disponible sur la broche 30. Ce signal
acquitte le signal HOLD.
• HOLD
• Ce signal indique au processeur que des périphériques externes demandent à accéder aux bus
d'adresse / de données. Il est disponible à la broche 31.
13
microprocesseur 8086
Interruptions matérielles
L'interruption matérielle est provoquée par n'importe quel périphérique en envoyant un signal via
une broche spécifiée au microprocesseur.
Le 8086 possède deux broches d'interruption matérielle, à savoir NMI et INTR. NMI est une
interruption non masquable et INTR est une interruption masquable de priorité inférieure. Une
autre broche d'interruption associée est INTA appelée accusé de réception d'interruption.
NMI
Il s'agit d'une seule broche d'interruption non masquable (NMI) ayant une priorité plus élevée que
la broche de demande d'interruption masquable (INTR) et elle est d'interruption de type 2.
Lorsque cette interruption est activée, ces actions ont lieu -
• Termine l'instruction en cours en cours.
• Pousse les valeurs du registre Flag sur la pile.
• Pousse la valeur CS (segment de code) et la valeur IP (pointeur d'instruction) de l'adresse de
retour sur la pile.
14
microprocesseur 8086
15
microprocesseur 8086
16
microprocesseur 8086
17
microprocesseur 8086
Exemple
MOV AX, [BX] ; Suppose the register BX contains 4895H, then the contents
; 4895H are moved to AX
ADD CX, {BX}
18