Le Microprocesseur 8086

Page 1 sur 32Lecteur de document UniversityLib

Le Microprocesseur 8086

Microprocessor Architecture, Computer Science · course

Le Microprocesseur 8086

I. Architecture :

Comme

nous

un

l’avons

microprocesseur exécute un programme en

répétant les cycles suivants :

déjà

vue,

Cycle de recherche.

Cycle d’exécution.

Dans

les microprocesseurs précédents, ces

étapes sont effectuées d’une façon séquentielle.

Le Microprocesseur 8086

Alors que l’architecture du 8086 ; pour effectuer

les mêmes étapes, alloue deux unités de

traitement :

Unité d’exécution EU.

Unité d’interface avec le Bus BIU.

Les deux unités peuvent fonctionner de façons

indépendantes. Pendant que

l’unité de

commande décode l’instruction présente dans le

registre d’instruction, l’unité d’interface avec le

en

Bus

mémoire.

l’instruction

recherche

suivante

Le Microprocesseur 8086

Le Microprocesseur 8086

1- Unité d’exécution : EU

Cette unité reçoit les instructions de la file

d’attente, les décode et les exécute. Elle

contient une unité arithmétique et logique

16 bits reliés au indicateur d’état de CPU, un

décodeur d’instruction et elle manipule aussi

les registres généraux du CPU.

Le Microprocesseur 8086

2- Unité d’interface avec le Bus : BIU

Son travail principal est de calculer

les

adresses réelles sur 20 bits, et de charger la

file d’attente d’instruction. Cette unité

anticipe la recherche des instructions en

mémoire. Ce mécanisme d’anticipation

temps mort de

les

permet d’éliminer

suivante en

l’instruction

recherche de

mémoire.

Le Microprocesseur 8086

Registres

généraux

Pointeurs

Registres de

segments

Le Microprocesseur 8086

AX

BX

CX

DX

3- Les registres généraux :

AX, BX, CX, DX, SP, BP, SI, DI

Ils servent à contenir les

opérandes arithmétiques et

logiques.

Publicité

Les registres AX, BX, CX et DX

peuvent être considérées

comme des registres double de

8bits et peuvent donc être

utilisé sur 8 ou 16 bits.

Le Microprocesseur 8086

Certains des registres généraux interviennent

implicitement selon les instructions :

AX et DX : interviennent pour toutes

instructions de multiplication, de division et

d’entrée/sortie.

CX : est forcement utilisé pour toutes les

instructions de la boucle, de décalage et de

répétition.

Le Microprocesseur 8086

BX et BP : ont le titre de registres de bases, car

ils sont souvent désignés pour contenir l’adresse

de base d’une structure de données en

mémoire. (Exemple : l’adresse de base d’un

tableau).

SI et DI : sont appelées registres d’index

puisqu’ils ont souvent pour objet, de contenir

un index qui s’incrémente au fur et à mesure de

l’examen d’une structure de données.

SP : il a la fonction classique de pointeur de pile.

Le Microprocesseur 8086

4- Les registres de segments : CS, DS, SS, ES

Les unités centrales de la famille 8086

permettent à un programme en cours

d’exécution, d’accéder immédiatement à 4

segments de la mémoire. Les registres de

segment sont utilisés pour identifier ces

quatre segments (Le registre de segment

pointe sur l’origine du segment).

Le Microprocesseur 8086

CS : registre de segment

de code.

DS :registre de segment

de données.

ES : registre de segment

de données extra.

SS :registre de segment

de pile.

Le Microprocesseur 8086

Le Microprocesseur 8086

Le Microprocesseur 8086

5- Le registre d’indicateur :

a) Les indicateurs d’états:

CF : Bit de retenue : indique qu’une retenue s’est

propagée à partir du bit le plus significatif d’un

opérande 8bits ou 16bits à la suite de l’exécution

d’une opération arithmétique. Dépassement de

capacité de l’accumulateur en cas d’addition, passage

en dessous de zéro pour la soustraction.

PF : Indicateur de parité : prend la valeur 1 si le résultat

d’une opération contient un nombre pair de 1.

Le Microprocesseur 8086

AF : Indicateur de retenue auxiliaire : prend

la valeur 1 pour indiquer qu’une retenue

s’est propagée à partir du bit 3 (utiliser

DCB).

ZF : bit de zéro : prend la valeur 1 si le

résultat d’une opération est nul.

Le Microprocesseur 8086

SF : bit de signe : prend la valeur 1 si le bit

le plus significatif du résultat d’une

opération est 1.

OF : bit de débordement de capacité :

utilisé en arithmétique signé, indique

que le résultat d’une opération

arithmétique est sortie de la gamme du

système de numération signé.

Publicité

Le Microprocesseur 8086

b) Les Indicateurs de commandes :

TF : bit de mode pas à pas : positionné à 1, impose

au processeur le mode d’exécution en pas à pas

dans un but d’aide à la mise au point des

programmes.

DF : bit de direction : DF contrôle le sens

d’évolution dans une chaîne de donnée. Si DF=1,

il y a auto-décrémentation des registres SI et DI.

Et si DF=0, il y a auto-incrémentation dans ces

registres.

Le Microprocesseur 8086

IF : bit de validation des interruptions :

positionné à 1, les interruptions externes du

type INTR sont autorisées.

Le Microprocesseur 8086

II. Notion de segment :

Un segment est un espace mémoire pouvant

aller jusqu’à 65536 octets (64 koctets).

1- Segment de code : contient le code

exécutable du programme courant. L’origine

de ce segment sera placée dans le registre de

segment CS.

CS : IP pointe toujours l’instruction suivante

à exécuter.

Le Microprocesseur 8086

2- Segment de donnée : contient toutes les données

courante du programme. C’est le segment source

lors d’une opération de traitement de chaîne de

données. L’origine de ce segment sera placée dans

le registre de segment DS. Le registre index

combiné avec ce registre c’est le SI.

DS : SI  pointe toujours l’élément de la chaîne

source (pour le cas des instructions de traitement

de chaîne ).

Le Microprocesseur 8086

3- Segment de donnée extra : c’est le segment

destination lors d’une opération sur une

chaîne de donnée. L’origine de ce segment

est placé dans ES. Le registre indexe combiné

avec celui-ci est le DI.

ES : DI  pointe toujours l’élément de la chaîne

destination (pour le cas des instructions de

traitement de chaîne ).

Le Microprocesseur 8086

4- Segment de pile : contient toutes les

informations stockées dans la pile. L’origine

de ce segment est placée dans le registre SS.

A ce registre de segment sera associés le

pointeur de pile SP.

SS : SP  pointe toujours le dernier élément

empilé.

Le Microprocesseur 8086

III. Adressage de microprocesseur 8086 :

1- Les types d’adresses :

a) Adresse réelle : l’adresse réelle est obtenue

en décalant le registre de segment de 4

positions binaires vers la gauche et en lui

ajoutant l’offset (déplacement). Le résultat

sera une adresse physique en mémoire sur 20

bits.

Le Microprocesseur 8086

b) Adresse effective : c’est le déplacement

relatif au début de segment physique

(offset).

c) Adresse logique : cette adresse est formulée

sur un double mot (1mot= 2 octets = 16bits).

Le premier mot représente le segment. Le

second mot, c’est l’adresse effective (offset).

(Segment : offset) Exemple, CS:IP.

Le Microprocesseur 8086

2- Les modes d’adressage :

Publicité

a) Adressage immédiat : l’opérande se

trouve dans le deuxième mot de l’instruction.

Exemple : MOV BX, 4500 ; BX4500

b) Adressage registre : l’opérande se trouve

dans un registre.

Exemple : MOV AX, BX ; AXBX

Le Microprocesseur 8086

c) Adressage direct : le déplacement qui

permet d’accéder à l’opérande est contenu

dans l’instruction.

Exemple : MOV AL, [200h]

d) Adressage indirect : le déplacement qui

permet d’accéder à l’opérande est contenu

dans l’un des registres SI, DI, BX, BP.

Exemple : MOV AL, [BX]

Le Microprocesseur 8086

e) Adressage Basé : Le déplacement qui

permet d’accéder à l’opérande est égale à la

somme du déplacement mentionné dans

l’instruction et du contenu du registre de base

BX ou BP.

Exemple : MOV CL, [BX+40]

f) Adressage Indexé : Le déplacement qui

permet d’accéder à l’opérande est égale à la

somme du déplacement mentionné dans

l’instruction et du contenue de registre d’index

de SI ou DI.

Exemple : MOV AL, [SI+200h].

Le Microprocesseur 8086

g) Adressage Basé Indexé : Le déplacement

qui permet d’accéder à l’opérande est égale à

la somme du contenue du registre de base,

du contenue du registre d’index et du

déplacement mentionné dans l’instruction.

Exemple : MOV AL, [BX+SI+40h].

Ce mode d’adressage est surtout intéressant

pour accéder à l’élément d’une matrice où à

un tableau bidimensionnel.

Le Microprocesseur 8086

h) Adressage de Chaîne : L’adressage de

chaîne fait implicitement appelle aux index SI

pour la source et DI pour le destinataire.

Exemple: MOVSB

MOVSW

Le Microprocesseur 8086

i) Adressage des Entrées Sorties : L’adressage se

fait de deux manières :

Adressage direct : (utilisé si adr.port<FFh)

L’adresse du port est contenu dans le deuxième

octet de l’instruction. Le transfert de la donnée

se fait entre le port et AX dans le cas des mots,

le port et AL dans le cas des octets.

Exemple: IN AX, 40h

OUT 42h, AL

Le Microprocesseur 8086

Adressage par registre : L’adresse du port est

contenu dans le registre DX. Le transfert de la

donnée se fait entre le port et AX pour le cas

des mots, le port et AL dans le cas des octets.

Exemple : MOV DX,300h MOV DX,378h

IN AL, DX

OUT DX, AL

Le Microprocesseur 8086

j) Adressage de Pile : Le sommet de la pile est

pointé par le registre SP dans le segment de

la pile qui est pointé par le SS. Les données à

empiler ou à dépiler sont uniquement des

mots. La provenance ou la destination est un

registre ou un emplacement mémoire. Le SP

est décrémentée de 2 à chaque empilement

et incrémentée de 2 à chaque dépilement.