Le Microprocesseur 8086
Ce document présente une synthèse complète sur le microprocesseur 8086, destinée aux étudiants en informatique ou électronique souhaitant comprendre son architecture, ses registres, son système de segmentation mémoire et ses modes d’adressage.
D'après le document Le Microprocesseur 8086
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Microprocessor Architecture, Computer Science · PDF · 32 pages
Afficher l'aperçu du document
Ce document présente une synthèse complète sur le microprocesseur 8086, destinée aux étudiants en informatique ou électronique souhaitant comprendre son architecture, ses registres, son système de segmentation mémoire et ses modes d’adressage. Il couvre les principes fondamentaux du fonctionnement du 8086, ses unités internes, ainsi que les différents types d’adressage utilisés pour accéder à la mémoire et aux périphériques.
Architecture du microprocesseur 8086
Le microprocesseur 8086 exécute un programme en répétant deux cycles principaux :
- Cycle de recherche (fetch)
- Cycle d’exécution
Contrairement aux microprocesseurs précédents où ces étapes sont effectuées séquentiellement, le 8086 dispose de deux unités de traitement indépendantes :
- Unité d’exécution (EU) : décode et exécute les instructions.
- Unité d’interface avec le bus (BIU) : calcule les adresses réelles et charge la file d’attente d’instruction en mémoire.
Ces deux unités peuvent fonctionner simultanément. Par exemple, pendant que l’EU décode une instruction, la BIU prépare la suivante en mémoire, ce qui élimine les temps morts liés à la recherche d’instruction.
Unité d’exécution (EU)
L’EU reçoit les instructions depuis la file d’attente, les décode et les exécute. Elle contient :
- Une unité arithmétique et logique 16 bits reliée aux indicateurs d’état du CPU.
- Un décodeur d’instruction.
- Les registres généraux du CPU.
Unité d’interface avec le bus (BIU)
La BIU calcule les adresses réelles sur 20 bits et charge la file d’attente d’instruction en mémoire. Elle anticipe la recherche des instructions suivantes, ce qui optimise le temps d’exécution.
Les registres du microprocesseur 8086
Registres généraux
Les registres généraux sont :
AX, BX, CX, DX, SP, BP, SI, DI
- Ils contiennent les opérandes arithmétiques et logiques.
- Les registres AX, BX, CX et DX peuvent être utilisés comme registres doubles 16 bits ou comme deux registres 8 bits (ex. AH et AL pour AX).
Certains registres ont des rôles spécifiques :
- AX et DX : utilisés implicitement pour les opérations de multiplication, division et d’entrée/sortie.
- CX : utilisé pour les instructions de boucle, de décalage et de répétition.
- BX et BP : registres de base, souvent utilisés pour contenir l’adresse de base d’une structure de données (exemple : tableau).
- SI et DI : registres d’index, utilisés pour contenir un index lors du traitement de structures de données.
- SP : pointeur de pile classique.
Registres de segments
Le 8086 permet d’accéder simultanément à quatre segments mémoire, identifiés par quatre registres de segments :
- CS (Code Segment) : contient l’origine du segment de code exécutable.
- DS (Data Segment) : contient l’origine du segment de données courantes.
- ES (Extra Segment) : segment de données extra, souvent utilisé comme destination dans les opérations sur chaînes.
- SS (Stack Segment) : contient l’origine du segment de pile.
Registre d’indicateurs
Le registre d’indicateurs contient plusieurs bits qui reflètent l’état du processeur ou contrôlent son fonctionnement.
Indicateurs d’état :
- CF (Carry Flag) : indique une retenue ou un dépassement lors d’une opération arithmétique.
- PF (Parity Flag) : vaut 1 si le résultat contient un nombre pair de bits à 1.
- AF (Auxiliary Carry Flag) : indique une retenue à partir du bit 3, utilisée pour les opérations en BCD.
- ZF (Zero Flag) : vaut 1 si le résultat est nul.
- SF (Sign Flag) : vaut 1 si le bit le plus significatif du résultat est 1 (indique un résultat négatif en arithmétique signée).
- OF (Overflow Flag) : indique un débordement en arithmétique signée.
Indicateurs de commande :
- TF (Trap Flag) : mode pas à pas pour le débogage.
- DF (Direction Flag) : contrôle le sens d’évolution dans les chaînes de données. Si DF=1, les registres SI et DI sont décrémentés ; si DF=0, ils sont incrémentés.
- IF (Interrupt Flag) : active ou désactive les interruptions externes (INTR).
Notion de segment mémoire
Un segment est un espace mémoire pouvant contenir jusqu’à 65536 octets (64 Ko). Le 8086 utilise quatre segments principaux :
Segment de code
Contient le code exécutable du programme. L’origine est placée dans le registre CS. Le compteur d’instruction IP pointe vers l’instruction suivante à exécuter.
Segment de données
Contient les données courantes du programme. L’origine est dans DS. Le registre SI (Source Index) combiné avec DS pointe vers l’élément courant d’une chaîne de données source.
Segment de données extra
Utilisé comme segment destination dans les opérations sur chaînes. L’origine est dans ES. Le registre DI (Destination Index) combiné avec ES pointe vers l’élément courant de la chaîne destination.
Segment de pile
Contient les données stockées dans la pile. L’origine est dans SS. Le pointeur de pile SP pointe vers le dernier élément empilé.
Adressage dans le microprocesseur 8086
Types d’adresses
- Adresse réelle : calculée en décalant le registre de segment de 4 bits vers la gauche et en ajoutant l’offset (déplacement). Le résultat est une adresse physique sur 20 bits.
- Adresse effective : déplacement relatif au début du segment (offset).
- Adresse logique : composée d’un double mot (segment : offset). Exemple : CS:IP.
Modes d’adressage
- Adressage immédiat : l’opérande est contenu dans l’instruction.
Exemple :MOV BX, 4500(BX reçoit la valeur 4500h) - Adressage registre : l’opérande est dans un registre.
Exemple :MOV AX, BX(AX reçoit la valeur de BX) - Adressage direct : l’instruction contient le déplacement mémoire.
Exemple :MOV AL, [200h](AL reçoit la valeur à l’adresse 200h) - Adressage indirect : le déplacement est contenu dans un registre (SI, DI, BX, BP).
Exemple :MOV AL, [BX](AL reçoit la valeur pointée par BX) - Adressage basé : somme du déplacement dans l’instruction et du registre de base (BX ou BP).
Exemple :MOV CL, [BX+40] - Adressage indexé : somme du déplacement et du registre d’index (SI ou DI).
Exemple :MOV AL, [SI+200h] - Adressage basé indexé : somme du registre de base, du registre d’index et du déplacement.
Exemple :MOV AL, [BX+SI+40h]
Ce mode est utile pour accéder à un élément d’une matrice ou d’un tableau bidimensionnel. - Adressage de chaîne : utilise implicitement SI pour la source et DI pour la destination.
Exemple :MOVSB(déplace un octet de DS:SI vers ES:DI)
MOVSW(déplace un mot de DS:SI vers ES:DI) - Adressage des entrées/sorties : deux méthodes
- Adressage direct : adresse du port dans l’instruction (si adr.port < FFh).
Exemple :IN AX, 40h,OUT 42h, AL
- Adressage par registre : adresse du port dans DX.
Exemple :MOV DX, 300h,IN AL, DX,OUT DX, AL - Adressage de pile : le sommet de la pile est pointé par SP dans le segment SS. Les données empilées ou dépilées sont des mots. SP est décrémenté de 2 à chaque empilement et incrémenté de 2 à chaque dépilement.
Glossaire des termes clés
- Unité d’exécution (EU) : partie du 8086 qui décode et exécute les instructions.
- Unité d’interface avec le bus (BIU) : partie du 8086 qui calcule les adresses réelles et charge la file d’attente d’instructions.
- Registres généraux : registres AX, BX, CX, DX, SP, BP, SI, DI utilisés pour les opérations arithmétiques, logiques et d’adressage.
- Registres de segments : CS, DS, ES, SS, identifient les segments mémoire.
- File d’attente d’instruction : zone mémoire où sont préchargées les instructions à exécuter.
- Adresse réelle : adresse physique 20 bits calculée à partir du segment et de l’offset.
- Adresse effective (offset) : déplacement relatif au début d’un segment.
- Adresse logique : combinaison segment:offset utilisée pour accéder à la mémoire.
- Indicateurs d’état : bits du registre d’indicateurs reflétant le résultat des opérations (CF, ZF, SF, OF, etc.).
- Indicateurs de commande : bits contrôlant le comportement du processeur (TF, DF, IF).
- Segment mémoire : zone de mémoire de 64 Ko identifiée par un registre de segment.
- Empilement (push) : opération d’ajout d’un mot au sommet de la pile.
- Dépilement (pop) : opération de retrait d’un mot du sommet de la pile.
Points clés à retenir
- Le 8086 utilise une architecture à deux unités (EU et BIU) pour optimiser l’exécution des instructions.
- Les registres généraux peuvent être utilisés sur 8 ou 16 bits et ont des rôles spécifiques selon les instructions.
- La mémoire est segmentée en quatre segments principaux : code, données, données extra et pile.
- L’adressage combine un registre de segment et un offset pour former une adresse réelle sur 20 bits.
- Le microprocesseur supporte plusieurs modes d’adressage adaptés à différents types d’opérations et structures de données.
- Le registre d’indicateurs contient des flags essentiels pour le contrôle du flux et la gestion des interruptions.
- Le pointeur de pile SP et le registre de segment SS gèrent la pile, essentielle pour les appels de fonctions et la gestion des interruptions.
Commentaires
Aucun commentaire pour le moment. Posez la première question.