Vous êtes sur la page 1sur 19

Ministère de l'Enseignement Supérieur et de la Recherche

Scientifique
Université-TAHRI Mohamed- de Bechar

Nom et prénom:
❖ Bouazzaoui sid Ahmed
❖ Baghdadi maamar
❖ Becheri youssef

Année universitaire 2022/2023


microprocesseur 8086

Microprocesseur - 8086 Présentation:


Le microprocesseur 8086 est une version améliorée du microprocesseur 8085 qui a été conçu par
Intel en 1976. Il s'agit d'un microprocesseur 16 bits ayant 20 lignes d'adresse et 16 lignes de
données qui fournit jusqu'à 1 Mo de stockage. Il se compose d'un jeu d'instructions puissant,
qui fournit facilement des opérations telles que la multiplication et la division.
Il prend en charge deux modes de fonctionnement, à savoir le mode maximum et le mode
minimum. Le mode maximum convient aux systèmes ayant plusieurs processeurs et le mode
minimum convient aux systèmes ayant un seul processeur.
Caractéristiques du 8086:
Les caractéristiques les plus importantes d'un microprocesseur 8086 sont les suivantes:
• Il dispose d'une file d'attente d'instructions, capable de stocker six octets d'instructions à partir
de la mémoire, ce qui accélère le traitement.
• Il s'agissait du premier processeur 16 bits doté d'une ALU 16 bits, de registres 16 bits, d'un bus
de données interne et d'un bus de données externe 16 bits, ce qui accéléra le traitement.
• Il est disponible en 3 versions en fonction de la fréquence de fonctionnement -
o 8086 à 5 MHz
o 8086-2 → 8 MHz
o (c) 8086-1 → 10 MHz
• Il utilise deux étapes de pipelining, à savoir Fetch Stage et Execute Stage, ce qui améliore les
performances.
• L'étape de récupération peut pré-extraire jusqu'à 6 octets d'instructions et les stocker dans la file
d'attente.
• La phase d'exécution exécute ces instructions.
• Il a 256 interruptions vectorielles.
• Il se compose de 29 000 transistors.
Comparaison entre les microprocesseurs 8085 et 8086
• Size - 8085 est un microprocesseur 8 bits, tandis que 8086 est un microprocesseur 16 bits.
• Address Bus - 8085 a un bus d'adresse 16 bits tandis que 8086 a un bus d'adresse 20 bits.
• Memory - 8085 peut accéder jusqu'à 64 Ko, tandis que 8086 peut accéder jusqu'à 1 Mo de
mémoire.
• Instruction - 8085 n'a pas de file d'attente d'instructions, alors que 8086 a une file d'attente
d'instructions.

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

Microprocesseur - 8086 Unités fonctionnelles:

Le microprocesseur 8086 est divisé en deux unités fonctionnelles, à savoir, EU (Unité


d'exécution) et BIU (Unité d'interface de bus).
UE (unité d'exécution)
L'unité d'exécution donne des instructions à BIU indiquant où chercher les données, puis décode
et exécute ces instructions. Sa fonction est de contrôler les opérations sur les données à l'aide
du décodeur d'instructions et de l'ALU. EU n'a pas de connexion directe avec les bus système
comme le montre la figure ci-dessus, il effectue des opérations sur les données via BIU.
Parlons maintenant des parties fonctionnelles des microprocesseurs 8086.

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 .

Microprocesseur - 8086 jeux d'instructions:

Le microprocesseur 8086 prend en charge 8 types d'instructions -

• Instructions de transfert de données


• Instructions arithmétiques
• Instructions de manipulation de bits
• Instructions de chaîne
• Instructions de transfert d'exécution de programme (instructions de branche et de boucle)
• Instructions de contrôle du processeur
• Instructions de contrôle d'itération
• Instructions d'interruption

Parlons maintenant de ces jeux d'instructions en détail.


Instructions de transfert de données
Ces instructions sont utilisées pour transférer les données de l'opérande source vers l'opérande de
destination. Voici la liste des instructions sous ce groupe -
Instruction pour transférer un mot
• MOV - Utilisé pour copier l'octet ou le mot de la source fournie vers la destination fournie.
• PPUSH - Utilisé pour mettre un mot en haut de la pile.

5
microprocesseur 8086

• POP - Utilisé pour obtenir un mot du haut de la pile à l'emplacement indiqué.


• PUSHA - Utilisé pour mettre tous les registres dans la pile.
• POPA - Utilisé pour obtenir des mots de la pile vers tous les registres.
• XCHG - Utilisé pour échanger les données de deux endroits.
• XLAT - Utilisé pour traduire un octet en AL en utilisant une table en mémoire.
Instructions pour le transfert des ports d'entrée et de sortie
• IN - Utilisé pour lire un octet ou un mot du port fourni vers l'accumulateur.
• OUT - Utilisé pour envoyer un octet ou un mot de l'accumulateur vers le port fourni.
Instructions pour transférer l'adresse
• LEA - Utilisé pour charger l'adresse de l'opérande dans le registre fourni.
• LDS - Utilisé pour charger le registre DS et d'autres registres fournis à partir de la mémoire
• LES - Utilisé pour charger le registre ES et tout autre registre fourni à partir de la mémoire.
Instructions pour transférer les registres d'indicateurs
• LAHF - Utilisé pour charger AH avec l'octet de poids faible du registre d'indicateur.
• SAHF - Utilisé pour stocker le registre AH dans l'octet bas du registre d'indicateur.
• PUSHF - Utilisé pour copier le registre des drapeaux en haut de la pile.
• POPF - Utilisé pour copier un mot en haut de la pile dans le registre des indicateurs.
Instructions arithmétiques
Ces instructions sont utilisées pour effectuer des opérations arithmétiques telles que l'addition, la
soustraction, la multiplication, la division, etc.
Voici la liste des instructions sous ce groupe -
Instructions pour effectuer l'ajout
• ADD - Utilisé pour ajouter l'octet fourni à l'octet / mot au mot.
• ADC - Utilisé pour ajouter avec carry.
• INC - Utilisé pour incrémenter l'octet / mot fourni de 1.
• AAA - Utilisé pour ajuster ASCII après l'addition.
• DAA - Utilisé pour ajuster la décimale après l'opération d'addition / soustraction.
Instructions pour effectuer une soustraction
• SUB - Utilisé pour soustraire l'octet de l'octet / mot du mot.

6
microprocesseur 8086

• SBB - Utilisé pour effectuer une soustraction avec emprunt.


• DEC - Utilisé pour décrémenter l'octet / mot fourni de 1.
• NPG - Utilisé pour annuler chaque bit de l'octet / mot fourni et ajouter le complément 1/2.
• CMP - Utilisé pour comparer 2 octets / mot fournis.
• AAS - Utilisé pour ajuster les codes ASCII après la soustraction.
• DAS - Utilisé pour ajuster la décimale après la soustraction.
Instruction pour effectuer la multiplication
• MUL - Utilisé pour multiplier l'octet non signé par octet / mot par mot.
• IMUL - Utilisé pour multiplier l'octet signé par octet / mot par mot.
• AAM - Utilisé pour ajuster les codes ASCII après la multiplication.
Instructions pour effectuer la division
• DIV - Utilisé pour diviser le mot non signé par octet ou mot double non signé par mot.
• IDIV - Utilisé pour diviser le mot signé par octet ou double mot signé par mot.
• AAD - Utilisé pour ajuster les codes ASCII après la division.
• CBW - Utilisé pour remplir l'octet supérieur du mot avec les copies du bit de signe de l'octet
inférieur.
• CWD - Utilisé pour remplir le mot supérieur du mot double avec le bit de signe du mot
inférieur.
Instructions de manipulation de bits
Ces instructions sont utilisées pour effectuer des opérations impliquant des bits de données, c'est-
à-dire des opérations telles que logique, décalage, etc.
Voici la liste des instructions sous ce groupe -
Instructions pour effectuer une opération logique
• NOT - Utilisé pour inverser chaque bit d'un octet ou d'un mot.
• AND - Utilisé pour ajouter chaque bit dans un octet / mot avec le bit correspondant dans un
autre octet / mot.
• OR - Utilisé pour multiplier chaque bit dans un octet / mot avec le bit correspondant dans un
autre octet / mot.
• XOR - Utilisé pour effectuer une opération OU exclusif sur chaque bit dans un octet / mot avec
le bit correspondant dans un autre octet / mot.

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

Instructions de contrôle du processeur


Ces instructions sont utilisées pour contrôler l'action du processeur en définissant / réinitialisant
les valeurs d'indicateur.
Voici les instructions sous ce groupe -
• STC - Utilisé pour définir le drapeau de retenue CF sur 1
• CLC - Utilisé pour effacer / remettre le drapeau de report CF à 0
• CMC - Utilisé pour mettre le complément à l'état de carry flag CF.
• STD - Utilisé pour définir le drapeau de direction DF sur 1
• CLD - Utilisé pour effacer / remettre le drapeau de direction DF à 0
• STI - Utilisé pour mettre l'indicateur d'activation d'interruption à 1, c'est-à-dire activer l'entrée
INTR.
• CLI - Utilisé pour effacer l'indicateur d'activation d'interruption à 0, c'est-à-dire désactiver
l'entrée INTR.
Instructions de contrôle d'itération
Ces instructions sont utilisées pour exécuter les instructions données plusieurs fois. Voici la liste
des instructions sous ce groupe -
• LOOP - Utilisé pour boucler un groupe d'instructions jusqu'à ce que la condition soit satisfaite,
c'est-à-dire CX = 0
• LOOPE/LOOPZ - Utilisé pour boucler un groupe d'instructions jusqu'à ce qu'il satisfasse ZF
= 1 & CX = 0
• LOOPNE/LOOPNZ - Utilisé pour boucler un groupe d'instructions jusqu'à ce qu'il satisfasse
ZF = 0 & CX = 0
• JCXZ - Utilisé pour sauter à l'adresse fournie si CX = 0
Instructions d'interruption
Ces instructions sont utilisées pour appeler l'interruption pendant l'exécution du programme.
• INT - Utilisé pour interrompre le programme pendant l'exécution et l'appel du service spécifié.
• INTO - Utilisé pour interrompre le programme pendant l'exécution si OF = 1
• IRET - Utilisé pour revenir du service d'interruption au programme princi

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 -

• Parlons maintenant des signaux en détail -


• Power supply and frequency signals

11
microprocesseur 8086

• Il utilise une alimentation 5 V CC sur la broche 40 de V CC et la masse sur les broches 1 et 20 de


V SS pour son fonctionnement.
• Clock signal
• Le signal d'horloge est fourni via la broche 19. Il fournit au processeur la synchronisation des
opérations. Sa fréquence est différente selon les versions, à savoir 5MHz, 8MHz et 10MHz.
• Address/data bus
• AD0-AD15. Il s'agit de 16 bus d'adresses / de données. AD0-AD7 transporte des données
d'octet d'ordre inférieur et AD8AD15 transporte des données d'octet d'ordre supérieur. Pendant
le premier cycle d'horloge, il porte une adresse de 16 bits et après cela, il transporte des
données de 16 bits.
• Address/status bus
• A16-A19 / S3-S6. Ce sont les 4 bus d'adresse / état. Pendant le premier cycle d'horloge, il
transporte une adresse de 4 bits et plus tard il transporte des signaux d'état.
• S7/BHE
• BHE signifie Bus High Enable. Il est disponible sur la broche 34 et utilisé pour indiquer le
transfert de données à l'aide du bus de données D8-D15. Ce signal est faible pendant le premier
cycle d'horloge, par la suite il est actif.
• Read(RD―)
• Il est disponible sur la broche 32 et est utilisé pour lire le signal pour l'opération de lecture.
• Ready
• Il est disponible sur la broche 22. C'est un signal d'acquittement des dispositifs d'E / S que les
données sont transférées. C'est un signal haut actif. Lorsqu'il est élevé, cela indique que
l'appareil est prêt à transférer des données. Lorsqu'il est bas, il indique l'état d'attente.
• RESET
• Il est disponible sur la broche 21 et permet de redémarrer l'exécution. Cela oblige le processeur
à mettre immédiatement fin à son activité actuelle. Ce signal est actif haut pendant les 4
premiers cycles d'horloge pour RÉINITIALISER le microprocesseur.
• INTR
• Il est disponible sur la broche 18. Il s'agit d'un signal de demande d'interruption, qui est
échantillonné pendant le dernier cycle d'horloge de chaque instruction pour déterminer si le
processeur a considéré cela comme une interruption ou non.
• NMI
• Il signifie interruption non masquable et est disponible sur la broche 17. Il s'agit d'une entrée
déclenchée par front, qui provoque une demande d'interruption au microprocesseur.

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

• QS1 and QS0


Microprocesseur - 8086 Interruptions:


Interruptest la méthode de création d'un arrêt temporaire pendant l'exécution du programme et
permet aux périphériques d'accéder au microprocesseur. Le microprocesseur répond à cette
interruption par unISR (Routine de service d'interruption), qui est un programme court pour
indiquer au microprocesseur comment gérer l'interruption.
L'image suivante montre les types d'interruptions que nous avons dans un 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

• IP est chargé à partir du contenu de l'emplacement de mot 00008H.


• CS est chargé à partir du contenu de l'emplacement de mot suivant 0000AH.
• L'indicateur d'interruption et l'indicateur d'interruption sont remis à 0.
INTR
L'INTR est une interruption masquable car le microprocesseur ne sera interrompu que si les
interruptions sont activées à l'aide de l'instruction set interruption flag. Il ne doit pas être activé
à l'aide de l'instruction Clear interruption Flag.
L'interruption INTR est activée par un port d'E / S. Si l'interruption est activée et que NMI est
désactivé, le microprocesseur termine d'abord l'exécution en cours et envoie deux fois «0» sur
la broche INTA. Le premier «0» signifie que INTA informe le dispositif externe de se préparer
et pendant le deuxième «0», le microprocesseur reçoit le 8 bits, disons X, du contrôleur
d'interruption programmable.
Ces actions sont effectuées par le microprocesseur -
• Termine d'abord l'instruction en cours.
• Active la sortie INTA et reçoit le type d'interruption, disons X.
• La valeur du registre d'indicateur, la valeur CS de l'adresse de retour et la valeur IP de l'adresse
de retour sont transmises à la pile.
• La valeur IP est chargée à partir du contenu de l'emplacement de mot X × 4
• CS est chargé à partir du contenu de l'emplacement de mot suivant.
• L'indicateur d'interruption et l'indicateur d'interruption sont réinitialisés à 0
Interruptions de logiciel:
Certaines instructions sont insérées à la position souhaitée dans le programme pour créer des
interruptions. Ces instructions d'interruption peuvent être utilisées pour tester le
fonctionnement de divers gestionnaires d'interruption. Il comprend -
INT- Instruction d'interruption avec numéro de type
C'est une instruction sur 2 octets. Le premier octet fournit le code opération et le deuxième octet
le numéro du type d'interruption. Il existe 256 types d'interruption dans ce groupe.
Son exécution comprend les étapes suivantes -
• La valeur du registre d'indicateur est poussée sur la pile.
• La valeur CS de l'adresse de retour et la valeur IP de l'adresse de retour sont transmises à la
pile.
• IP est chargé à partir du contenu du mot emplacement 'numéro de type' × 4
• CS est chargé à partir du contenu de l'emplacement de mot suivant.

15
microprocesseur 8086

• L'indicateur d'interruption et l'indicateur d'interruption sont réinitialisés à 0


L'adresse de départ pour l'interruption de type0 est 000000H, pour l'interruption de type1 est
00004H de même pour le type2 est 00008H et …… ainsi de suite. Les cinq premiers pointeurs
sont des pointeurs d'interruption dédiés. c'est-à-dire -
• TYPE 0 interruption représente une situation de division par zéro.
• TYPE 1 interruption représente une exécution en une seule étape pendant le débogage d'un
programme.
• TYPE 2 interruption représente une interruption NMI non masquable.
• TYPE 3 interruption représente l'interruption du point de rupture.
• TYPE 4 interruption représente l'interruption de débordement.
Les interruptions du type 5 au type 31 sont réservées à d'autres microprocesseurs avancés, et les
interruptions du type 32 au type 255 sont disponibles pour les interruptions matérielles et
logicielles.
Instruction d'interruption à 3 points de rupture INT
C'est une instruction de 1 octet dont le code opération est CCH. Ces instructions sont insérées
dans le programme de sorte que lorsque le processeur y parvient, il arrête l'exécution normale
du programme et suit la procédure de point d'arrêt.
Son exécution comprend les étapes suivantes -
• La valeur du registre d'indicateur est poussée sur la pile.
• La valeur CS de l'adresse de retour et la valeur IP de l'adresse de retour sont transmises à la
pile.
• IP est chargé à partir du contenu de l'emplacement de mot 3 × 4 = 0000CH
• CS est chargé à partir du contenu de l'emplacement de mot suivant.
• L'indicateur d'interruption et l'indicateur d'interruption sont réinitialisés à 0
INTO - Interruption sur instruction de débordement
C'est une instruction de 1 octet et leur mnémonique INTO. Le code opération pour cette
instruction est CEH. Comme son nom l'indique, il s'agit d'une instruction d'interruption
conditionnelle, c'est-à-dire qu'elle n'est active que lorsque l'indicateur de débordement est mis à
1 et se branche sur le gestionnaire d'interruption dont le numéro de type d'interruption est 4. Si
l'indicateur de débordement est réinitialisé, l'exécution se poursuit vers le instruction suivante.
Son exécution comprend les étapes suivantes -
• Les valeurs de registre d'indicateur sont transmises à la pile.

16
microprocesseur 8086

• La valeur CS de l'adresse de retour et la valeur IP de l'adresse de retour sont transmises à la


pile.
• IP est chargé à partir du contenu de l'emplacement de mot 4 × 4 = 00010H
• CS est chargé à partir du contenu de l'emplacement de mot suivant.
• L'indicateur d'interruption et l'indicateur d'interruption sont réinitialis
Microprocesseur - 8086 Modes d'adressage:
Les différentes manières dont un opérande source est indiqué dans une instruction
sont appelées addressing modes. Il existe 8 modes d'adressage différents dans la
programmation du 8086 -
Mode d'adressage immédiat
Le mode d'adressage dans lequel l'opérande de données fait partie de l'instruction elle-
même est appelé mode d'adressage immédiat.
Exemple

MOV CX, 4929 H, ADD AX, 2387 H, MOV AL, FFH

Enregistrer le mode d'adressage


Cela signifie que le registre est la source d'un opérande pour une instruction.
Exemple

MOV CX, AX ; copies the contents of the 16-bit AX register into


; the 16-bit CX register),
ADD BX, AX

Mode d'adressage direct


Le mode d'adressage dans lequel l'adresse effective de l'emplacement mémoire est
écrite directement dans l'instruction.
Exemple

MOV AX, [1592H], MOV AL, [0300H]

Enregistrer le mode d'adressage indirect


Ce mode d'adressage permet aux données d'être adressées à n'importe quel
emplacement mémoire via une adresse de décalage conservée dans l'un des
registres suivants: BP, BX, DI & SI.

17
microprocesseur 8086

Exemple

MOV AX, [BX] ; Suppose the register BX contains 4895H, then the contents
; 4895H are moved to AX
ADD CX, {BX}

Mode d'adressage basé


Dans ce mode d'adressage, l'adresse d'offset de l'opérande est donnée par la somme
des contenus des registres BX / BP et du déplacement 8 bits / 16 bits.
Exemple

MOV DX, [BX+04], ADD CL, [BX+08]

Mode d'adressage indexé


Dans ce mode d'adressage, l'adresse de décalage des opérandes est trouvée en ajoutant
le contenu du registre SI ou DI et des déplacements 8 bits / 16 bits.
Exemple

MOV BX, [SI+16], ADD AL, [DI+16]

Mode d'adressage basé sur l'index


Dans ce mode d'adressage, l'adresse de décalage de l'opérande est calculée en
additionnant le registre de base au contenu d'un registre d'index.
Exemple

ADD CX, [AX+SI], MOV AX, [AX+DI]

Basé indexé avec le mode de déplacement


Dans ce mode d'adressage, le décalage des opérandes est calculé en ajoutant le
contenu du registre de base. Un index enregistre le contenu et le déplacement de 8
ou 16 bits.
Exemple

MOV AX, [BX+DI+08], ADD CX, [BX+SI+16]

18

Vous aimerez peut-être aussi