Le Microprocesseur Intel 8086

Page 1 sur 21Lecteur de document UniversityLib

Le Microprocesseur Intel 8086

Microprocessors, Computer Architecture · course

CHAPITRE III

LE MICROPROCESSEUR INTEL 8086

Description physique du 8086

Le microprocesseur Intel 8086 est un microprocesseur 16 bits, apparu en 1978. C’est le premier

microprocesseur de la famille Intel 80x86 (8086, 80186, 80286, 80386, 80486, Pentium, ...). Il se

présente sous la forme d’un boîtier DIP (Dual In-line Package) à 40 broches :

Architecture et Microprocesseur

1

Schéma fonctionnel du 8086

Architecture et Microprocesseur

2

Description et utilisation des signaux du 8086

 CLK : entrée du signal d’horloge qui cadence le

fonctionnement du microprocesseur. Ce signal provient

d’un générateur d’horloge : le 8284.

 RESET : entrée de remise à zéro du microprocesseur. Lorsque cette entrée est mise à l’état haut

pendant au moins 4 périodes d’horloge,

le microprocesseur est réinitialisé :

il va exécuter

l’instruction se trouvant à l’adresse FFFF0H (adresse de bootstrap). Le signal de RESET est fourni

par le générateur d’horloge.

 READY : entrée de synchronisation avec la mémoire. Ce signal provient également du générateur

d’horloge.

 TEST : entrée de mise en attente du microprocesseur d’un événement extérieur.

 INTA : indique que le microprocesseur accepte l’interruption.

Architecture et Microprocesseur

3

 HOLD et HLDA : signaux de demande d’accord d’accès direct à la mémoire (DMA).

 NMI et INTR : entrées de demande d’interruption.

o INTR : interruption normale.

o NMI (Non Maskable Interrupt) : interruption prioritaire.

 S0 à S7 : signaux d’état indiquant le type d’opération en cours sur le bus.

 A16/S3 à A19/S6 : 4 bits de poids fort du bus d’adresses, multiplexés avec 4 bits d’état.

 AD0 à AD15 : 16 bits de poids faible du bus d’adresses, multiplexés avec 16 bits de données. Le

bus A/D est multiplexé (multiplexage temporel) d’où la nécessité d’un démultiplexage pour

obtenir séparément les bus d’adresses et de données :

o 16 bits de données (microprocesseur 16 bits) ;

o 20 bits d’adresses, d’où 220 = 1 Mo d’espace mémoire adressable par le 8086.

Architecture et Microprocesseur

4

 MN/MX : entrée de choix du mode de fonctionnement du microprocesseur :

o mode minimum (MN/MX = 1) : le 8086 fonctionne de manière autonome, il génère lui-

même le bus de commande (RD, WR, ...) ;

o mode maximum (MN/MX = 0) : ces signaux de commande sont produits par un contrôleur

de bus, le 8288. Ce mode permet de réaliser des systèmes multiprocesseurs.

Chronogramme du bus A/D

Le démultiplexage des signaux AD0 à

AD15 (ou A16/S3 à A19/S6) se fait en

mémorisant l’adresse lorsque celle-ci

est présente sur le bus A/D, à l’aide

d’un verrou

(latch),

ensemble de

bascules D.

La

commande

de

mémorisation de l’adresse est générée

par le microprocesseur : signal ALE

(Address Latch Enable).

Architecture et Microprocesseur

5

Circuit de démultiplexage A/D

o si ALE = 1, le verrou est transparent (Q = D) ;

o si ALE = 0, mémorisation de la dernière valeur de

D sur les sorties Q;

o les signaux de lecture (RD) ou d’écriture (WR) ne

sont générés par le microprocesseur que lorsque les

données sont présentes sur le bus A/D.

Publicité

Exemples de bascules D : circuits 8282, 74373, 74573.

Architecture et Microprocesseur

6

 RD : signal de lecture d’une donnée.

 WR : signal d’écriture d’une donnée.

 M/IO : (Memory/Input-Output) indique si le 8086 adresse la mémoire (M/IO = 1) ou les

entrées/sorties (M/IO = 0).

 DEN : (Data Enable) indique que des données sont en train de circuler sur le bus A/D

(équivalent de ALE pour les données).

 DT/R : (Data Transmit/Receive) indique le sens de transfert

des donnes :

o DT/R = 1 : données émises par le microprocesseur

(écriture) ;

o DT/R = 0 : données reçues par le microprocesseur

(lecture).

Architecture et Microprocesseur

7

Les signaux DEN et DT/R sont utilisés pour la

commande de tampons de bus (buffers) permettant

d’amplifier le courant fourni par le microprocesseur

sur le bus de données.

Exemples de tampons de bus : circuits transmetteurs

bidirectionnels 8286 ou 74245.

 BHE : (Bus High Enable) signal de lecture de l’octet de poids

fort du bus de données. Le 8086 possède un bus d’adresses sur 20

bits, d’où la capacité d’adressage de 1 Mo ou 512 Kmots de 16

bits (bus de données sur 16 bits).

Le méga-octet adressable est divisé en deux banques de 512 Ko

chacune : la banque inférieure (ou paire) et la banque supérieure

(ou impaire).

Architecture et Microprocesseur

8

Ces deux banques sont sélectionnées par :

o A0 pour la banque paire qui contient les octets de poids faible ;

o BHE pour la banque impaire qui contient les octets de poids fort.

Seuls les bits A1 à A19 servent à désigner une case mémoire dans chaque banque de 512 Ko. Le

microprocesseur peut ainsi lire et écrire des données sur 8 bits ou sur 16 bits :

BHE

A0

Octets transférés

0

0

1

1

0

1

0

1

Les deux octets (mot complet)

Octet fort (adresse impaire)

Octet faible (adresse paire)

Aucun octet

Remarque : le 8086 ne peut lire une donnée sur 16 bits en une seule fois, uniquement si l’octet de

poids fort de cette donnée est rangé à une adresse impaire et l’octet de poids faible à une adresse

paire (alignement sur les adresses paires), sinon la lecture de cette donnée doit se faire en deux

opérations successives, d’où une augmentation du temps d’exécution du transfert dû à un mauvais

alignement des données.

Architecture et Microprocesseur

9

Réalisation des deux banques avec plusieurs boîtiers mémoire :

Architecture et Microprocesseur

10

Création du bus système du 8086 :

Architecture et Microprocesseur

11

Organisation interne du 8086

 Le 8086 est

constitué de deux unités

fonctionnant en parallèle :

Publicité

o l’unité d’exécution (EU : Execution Unit) ;

o l’unité d’interface de bus

(BIU : Bus

Interface Unit).

 Rôle des deux unités :

o l’unité d’interface de bus (BIU) recherche les

instructions en mémoire et les range dans une

file d’attente ;

o l’unité

d’exécution

(EU)

exécute

les

instructions contenues dans la file d’attente.

Les deux unités fonctionnent simultanément,

d’où

une

accélération

du

processus

d’exécution d’un programme.

Architecture et Microprocesseur

12

Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

 Registres généraux : 4 registres sur 16 bits.

o AX = (AH,AL)

o BX = (BH,BL)

o CX = (CH,CL)

o DX = (DH,DL).

Ils peuvent être également considérés comme 8 registres sur 8 bits. Ils servent à contenir

temporairement des données. Ce sont des registres généraux mais ils peuvent être utilisés pour des

opérations particulières.

Exemple : AX = accumulateur, CX = compteur.

 Registres de pointeurs et d’index : 4 registres sur 16 bits.

Pointeurs :

o SP (Stack Pointer) : pointeur de pile (la pile est une zone de sauvegarde de données en

cours d’exécution d’un programme) ;

o BP (Base Pointer) : pointeur de base, utilisé pour adresser des données sur la pile.

Architecture et Microprocesseur

13

Index :

o SI : Source Index ;

o DI : Destination Index.

Ils sont utilisés pour les transferts de chaînes d’octets entre deux zones mémoire.

Les pointeurs et les index contiennent des adresses de cases mémoire.

 Pointeur d’instruction et indicateurs (flags) : 2 registres sur 16 bits.

o Pointeur d’instruction (IP) contient l’adresse de la prochaine instruction à exécuter.

o Flags :

CF : indicateur de retenue (carry) ;

PF : indicateur de parité;

AF : indicateur de retenue auxiliaire ;

ZF : indicateur de zéro ;

SF : indicateur de signe ;

TF : indicateur d’exécution pas à pas (trap) ;

IF : indicateur d’autorisation d’interruption ;

DF : indicateur de décrémentation ;

OF : indicateur de dépassement (overflow).

Architecture et Microprocesseur

14

 Registres de segments : 4 registres sur 16 bits.

o CS (Code Segment) : registre de segment de code ;

o DS (Data Segment) : registre de segment de données ;

o SS (Stack Segment) : registre de segment de pile ;

o ES (Extra Segment) : registre de segment supplémentaire pour les données ;

Les registres de segments, associés aux pointeurs et aux index, permettent au microprocesseur 8086

d’adresser l’ensemble de la mémoire.

Architecture et Microprocesseur

15

Gestion de la mémoire par le 8086

Publicité

 L’espace mémoire adressable par le 8086 est de 220 = 1 Mo (20 bits d’adresses). Cet espace est

divisé en segments. Un segment est une zone mémoire de 64 Ko définie par son adresse de départ

qui doit être un multiple de 16. Dans une telle adresse, les 4 bits de poids faible sont à zéro. On peut

donc représenter l’adresse d’un segment avec seulement ses 16 bits de poids fort, les 4 bits de poids

faible étant implicitement à 0.

 Pour désigner une case mémoire parmi les 216 contenues

dans un segment, il suffit d’une valeur sur 16 bits. Ainsi,

une case mémoire est repérée par le 8086 au moyen de

deux quantités sur 16 bits :

o l’adresse d’un segment ;

o un déplacement ou offset (appelé aussi adresse effective)

dans ce segment.

Cette méthode de gestion de la mémoire est appelée

segmentation de la mémoire.

Architecture et Microprocesseur

16

 La donnée d’un couple (segment, offset) définit une adresse logique, notée sous la forme

segment : offset.

 L’adresse d’une case mémoire donnée sous la forme d’une quantité sur 20 bits est appelée adresse

physique car elle correspond à la valeur envoyée réellement sur le bus d’adresses A0 - A19.

Correspondance entre adresse logique et adresse physique :

Ainsi, l’adresse physique se calcule par l’expression :

adresse physique = 16 × segment + offset

car le fait d’injecter 4 zéros en poids faible du segment revient à effectuer un décalage de 4 positions

vers la gauche, c’est à dire une multiplication par 24.

Architecture et Microprocesseur

17

 A un instant donné, le 8086 a accès à 4 segments dont les

adresses se trouvent dans les registres de segment CS, DS,

SS et ES :

o Le segment de code contient les instructions du

programme,

o le segment de données

contient

les données

manipulées par le programme,

o le segment de pile contient la pile de sauvegarde,

o le segment supplémentaire peut aussi contenir des

données.

Le registre CS est associé au pointeur d’instruction IP, ainsi

la prochaine instruction à exécuter se trouve à l’adresse

logique CS : IP.

De même, les registres de segments DS et ES peuvent être associés à un registre d’index.

Exemple : DS : SI, ES : DI. Le registre de segment de pile peut être associé aux registres de pointeurs :

SS : SP ou SS : BP.

Architecture et Microprocesseur

18

Mémoire accessible par le 8086 à un instant donné :

Remarque : les segments ne sont pas nécessairement distincts les uns des autres, ils peuvent se

chevaucher ou se recouvrir complètement.

Architecture et Microprocesseur

19

Le nombre de segments utilisé définit le modèle mémoire du programme.

Contenu des registres après un RESET du microprocesseur :

IP = 0000H

CS = FFFFH

DS = 0000H

ES = 0000H

SS = 0000H

Puisque CS contient la valeur FFFFH et IP la valeur 0000H, la 1ère instruction exécutée par le 8086 se

trouve donc à l’adresse logique FFFFH : 0000H, correspondant à l’adresse physique FFFF0H

(bootstrap). Cette instruction est généralement un saut vers le programme principal qui initialise

ensuite les autres registres de segment.

Architecture et Microprocesseur

20