Вы находитесь на странице: 1из 21

Chap.

IV
Le microprocesseur Intel 8086
Universit de Bordj Bou Arreridj

Facult des Sciences et de la Technologie


Dpartement dElectronique
Informatique Industrielle
M. T. Abed (2013-2014)

Chap. IV : Le microprocesseur Intel 8086


I.

Introduction ............................................................................................................................................... 2

II. Organisation externe ................................................................................................................................. 2

2.1- Schma fonctionnel du 8086 ................................................................................................................... 2


2.2- Description des signaux du 8086 ............................................................................................................ 3
2.3- Cration du bus systme du 8086 ............................................................................................................ 4
2.4- Disposition des banques de mmoire ...................................................................................................... 6
2.5 Squence de lecture .................................................................................................................................. 6
2.6 Squence dcriture .................................................................................................................................. 7

III.
IV.
V.

Organisation interne .............................................................................................................................. 8


Gestion de la mmoire ........................................................................................................................... 9

Le jeu dinstruction et les modes dadressage du 8086 ........................................................................ 11

5.1 Format de base des instructions .............................................................................................................. 11


5.2 Les modes dadressage ........................................................................................................................... 11
5.3 Rgles de dtermination des codes des instructions ............................................................................... 15
5.4 Les instructions de transfert .................................................................................................................... 17
5.5 Les instructions arithmtiques ................................................................................................................ 17
5.6 Les instructions logiques ........................................................................................................................ 18
5.7 Les instructions de branchement ............................................................................................................ 19
5.8 Fonctionnement de la pile....................................................................................................................... 20

I.

Introduction

Disponible depuis juillet 1978, le 8086 est le premier microprocesseur 16 bits dvelopp par Intel. Cest le premier de
la famille 80x86. Il est fabriqu en technologie H MOS. Le 8086 est constitu de 29000 transistors sur une puce de
32.7 mm. Il existe en trois versions : 8086 (5 MHz), 8086-2 (8 MHz) et le 8086-4 (4 MHz).

II.

Organisation externe

Le 8086 se prsente sous la forme dun botier DIP (Dual In-line Package) 40 broches :

Figure 1 : Brochage du 8086.

2.1- Schma fonctionnel du 8086

Figure 2 : Schma fonctionnel du 8086.

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

2.2- Description des signaux du 8086


Le 8086 peut fonctionner suivant deux modes : un mode minimal et un mode maximal. En mode minimal, le 8086
travaille de manire analogue au 8085 (processeur 8 bits de Intel) et ne peut adresser que 64 KO. En mode maximal,
un contrleur de bus 8288 doit tre ajout pour gnrer des signaux de contrle.
La slection entre ces deux modes se fait au niveau de la broche MN / MX . Lorsque cette broche est ltat haut, le
8086 fonctionne en mode minimal et gnre sur ses broches 24 31, tous les signaux de contrle ncessaires ce
mode ( INTA, ALE , DNE , DT / R, M / IO, WR, HLDA, et HOLD ) . Lorsque cette broche est ltat bas, le
8086 opre en mode maximal. En configuration haute, le 8086 peut adresser directement quatre segments ou quatre
pages de 64 KO, soit au total 256 KO. En modifiant les contenus des registres de segment, le 8086 peut adresser 16
segments de 64 KO, soit 1MO. Ce mode permet de raliser des systmes multiprocesseurs.
- CLK Entre du signal dhorloge qui cadence le fonctionnement du microprocesseur. Ce signal provient dun
gnrateur dhorloge : le 8284.

Figure 3 : Gnration de lhorloge.


- RESET : entre de remise zro du microprocesseur. Lorsque cette entre est mise ltat haut pendant au
moins 4 priodes dhorloge, le microprocesseur est rinitialis : il va excuter linstruction se trouvant ladresse
FFFF0H (adresse de Bootstrap). Le signal de RESET est fourni par le gnrateur dhorloge.
- READY : entre de synchronisation avec la mmoire. Ce signal provient galement du gnrateur dhorloge.
- TEST : entre de mise en attente du microprocesseur dun vnement extrieur.
- MN / MX : entre de choix du mode de fonctionnement du microprocesseur :
Mode minimum (MN/MX = 1) : le 8086 fonctionne de manire autonome, il gnre lui-mme le bus de commande
(RD, WR, ...) ;
Mode maximum (MN/MX = 0) : ces signaux de commande sont produits par un contrleur de bus, le 8288.
- NMI , INTR : entres de demande dinterruption. INTR : interruption normale, NMI (Non Maskable Interrupt) :
interruption prioritaire.
- INTA : Interrupt Acknowledge, indique que le microprocesseur accepte linterruption.
- HOLD, HLDA : signaux de demande daccord daccs direct la mmoire (DMA).
- S0 S7 : signaux dtat indiquant le type dopration en cours sur le bus.
- A16/S3 A19/S6 : 4 bits de poids fort du bus dadresses, multiplexs avec 4 bits dtat.
- AD15AD0 : 16 bits de poids faible du bus dadresses, multiplexs avec 16 bits de donnes. Le bus A/D est
multiplex (multiplexage temporel) do la ncessit dun dmultiplexage pour obtenir sparment les bus
dadresses et de donnes :
16 bits de donnes (microprocesseur 16 bits) ;
20 bits dadresses, do 220 = 1 Mo despace mmoire adressable par le 8086.
- ALE Address Latch Enable. Commande de mmorisation de ladresse.
- RD : Read, signal de lecture dune donne.
- WR : Write, signal dcriture dune donne.
- M / IO : Memory/Input-Output, indique si le 8086 adresse la mmoire ( M / IO = 1) ou les entres/sorties ( M / IO
=0).
Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

- DEN : Data Enable, indique que des donnes sont en train de circuler sur le bus A/D (quivalent de ALE pour les
donnes).
- DT / R : Data Transmit/Receive, indique le sens de transfert des donnes :
DT / R = 1 : donnes mises par le microprocesseur (criture) ;
DT / R = 0 : donnes reues par le microprocesseur (lecture).
- BHE : Bus High Enable, signal de lecture de loctet de poids fort du bus de donnes. Le 8086 possde un bus
dadresses sur 20 bits, do la capacit dadressage de 1 Mo ou 512 K mots de 16 bits (bus de donnes sur 16 bits).
Le mga-octet adressable est divis en deux banques de 512 Ko chacune : la banque infrieure (ou paire) et la banque
suprieure (ou impaire). Ces deux banques sont slectionnes par :
A0 pour la banque paire qui contient les octets de poids faible ;
BHE pour la banque impaire qui contient les octets de poids fort ;
Seuls les bits A1 A19 servent dsigner une case mmoire dans chaque banque de 512 Ko. Le microprocesseur peut
ainsi lire et crire des donnes sur 8 bits ou sur 16 bits : (voir figure 6.)
A0

octets transfrs

les deux octets (mot complet)

octet fort (adresse impaire)

octet faible (adresse paire)

aucun octet

BHE

Remarque : le 8086 ne peut lire une donne sur 16 bits en une seule fois, uniquement si loctet de poids fort de cette
donne est rang une adresse impaire et loctet de poids faible une adresse paire, sinon la lecture de cette
donne doit se faire en deux oprations successives, do une augmentation du temps dexcution du transfert.

2.3- Cration du bus systme du 8086


1. Dmultiplexage des signaux
Le dmultiplexage des signaux AD0 AD15 (ou A16/S3 A19/S6), se fait en mmorisant ladresse lorsque celle-ci est
prsente sur le bus A/D, laide dun verrou (latch). La commande de mmorisation de ladresse est gnre par le
microprocesseur : cest le signal ALE.

Figure 4 : Dmultiplexage des adresses et des donnes.


Si ALE = 1, le verrou est transparent (Q = D) ;
Si ALE = 0, mmorisation de la dernire valeur de D sur les sorties Q ;
Les signaux de lecture ( RD ) ou dcriture ( WR ) ne sont gnrs par le microprocesseur que lorsque les donnes
sont prsentes sur le bus A/D.
Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

Figure 5 : Gnration des lignes du bus dadresses.


Exemples de bascules D : circuits 8282/8283, 74373, 74573.
2. Transfert des donnes

Figure 6 : Contrle du transfert des donnes.


Exemples de tampons de bus : circuits buffers bidirectionnels 8286/8287 ou 74245.
3. Cration du bus systme

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

Figure 7 : Cration du bus systme.

2.4- Disposition des banques de mmoire

Figure 8 : Disposition banques de donnes.

2.5 Squence de lecture


Pendant le cycle T1, le 8086 envoie vers lextrieur une adresse sur 16 bits et les signaux M / IO , BHE et DT / R .
Les poids dadresse AD0 AD15 et le signal BHE ne sont stables que pendant le cycle T1et une partie du cycle T2.
Pour conserver linformation dadresse et de slection du botier pendant toute la dure du transfert, il est par
consquent ncessaire de sauvegarder ces informations dans les registres tampon des 8282/8283, valids par le
signal ALE. Les signaux M / IO et DT / R sont disponibles pendant toute lopration de lecture. M / IO dtermine si
lopration en cours est une opration avec la mmoire ou une opration dentre/sortie. DT / R indique le sens de
transfert travers les amplificateurs bidirectionnels de donnes 8286/8287. Au dbut du cycle T2, les lignes dadresse
passent ltat de haute impdance et BHE 1. Simultanment, la ligne de slection du mode de lecture RD est
porte ltat bas, indiquant que le microprocesseur est prt recevoir une donne.

DEN , signal de validation des buffers 8286/8287, passe ensuite ltat bas, autorisant le chargement de la donne
recevoir dans ces circuits. Cette donne apparat sue le bus de donnes au milieu de T2 et reste stable pendant les
cycles T3 et T4.
Simultanment, le ou les circuits adresss envoient sur la broche READY du 8086 un niveau haut signalant quune
donne est disponible.
Au cycle T4, les lignes DEN , RD et DT / R , reviennent successivement ltat haut et le bus de donnes est port
ltat haute impdance. La squence de lecture est termine.
Cette squence est spcifique au mode minimum. Dans le mode maximum, le principe reste le mme, sauf que
ladresse envoye est sur 20 bits : A0-A19, A0 A15 tant multiplexs avec D0 D15 et A16 A19 avec S3 S6. Les
signaux de contrle sont gnrs par le contrleur de bus.

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

Figure 9. Squence de lecture.

2.6 Squence dcriture


Cette squence est semblable celle de lecture. La ligne WR , au lieu de la ligne RD , est porte au niveau bas au
dbut de T2 et le signal DT / R reste ltat haut, indiquant un transfert du microprocesseur vers la priphrie
travers le 8286/8287.

Figure 10. Squence dcriture

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

III.

Organisation interne

Figure 11 : Organisation interne.


Le 8086 est constitu de deux units fonctionnant en parallle :
Lunit dinterface de bus (BIU : Bus Interface Unit) : recherche les instructions en mmoire et les range dans une
file dattente ;
Lunit dexcution (EU : Execution Unit) : excute les instructions contenues dans la file dattente.
Les deux units fonctionnent simultanment, do une acclration du processus dexcution dun programme
(fonctionnement selon le principe du pipe-line).
Le microprocesseur 8086 contient 14 registres rpartis en 4 groupes :
Registres gnraux : 4 registres sur 16 bits.
AX = (AH, AL) ;
BX = (BH, BL) ;
CX = (CH, CL) ;
DX = (DH, DL).
Ils peuvent tre galement considrs comme 8 registres sur 8 bits. Ils servent contenir temporairement des
donnes. Ce sont des registres gnraux mais ils peuvent tre utiliss pour des oprations particulires.
AX = accumulateur, BX= registre de base, CX= compteur et DX= registre donnes.
Registres de pointeurs et dindex : 4 registres sur 16 bits.
Pointeurs :
SP (Stack Pointer) : pointeur de pile et BP (Base Pointer) : pointeur de base.
Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

Ces deux registres sont utiliss pour indiquer un dplacement dans le segment de pile (la pile est une zone de
sauvegarde de donnes en cours dexcution dun programme).
Index :
SI : Source Index. DI : Destination Index.
Ils sont utiliss pour reprer un dplacement dans le segment de donnes, et pour les transferts de chanes doctets
entre deux zones mmoire.
Pointeur dinstruction et registre dtat : 2 registres sur 16 bits.
Pointeur dinstruction : IP, contient ladresse de la prochaine instruction excuter.
Registre dtat : contient les indicateurs (flags)

Figure 12 : Registre dtat.


CF : indicateur de retenue (carry) ;

TF : indicateur dexcution pas pas (trap) ;

PF : indicateur de parit ;

IF : indicateur dautorisation dinterruption ;

AF : indicateur de retenue auxiliaire ;

DF : indicateur de dcrmentation ;

ZF : indicateur de zro ;

OF : indicateur de dpassement (overflow).

SF : indicateur de signe ;
Registres de segments : 4 registres sur 16 bits.
CS : Code Segment, registre de segment de code ;
DS : Data Segment, registre de segment de donnes ;
SS : Stack Segment, registre de segment de pile ;
ES : Extra Segment, registre de segment supplmentaire pour les donnes ;
Les registres de segments, associs aux pointeurs et aux index, permettent au microprocesseur 8086 dadresser
lensemble de la mmoire.

IV.

Gestion de la mmoire

Lespace mmoire adressable par le 8086 est de 220 = 1 048 576 octets = 1 Mo (20 bits dadresses). Pour diminuer la
longueur des instructions et navoir des adresses que sur 16 bits et non sur 20 bits, cet espace est divis en 16
segments (pages) de 64 Ko (65 536 octets). Un segment est une zone mmoire dfinie par son adresse de dpart qui
doit tre un multiple de 16. Dans une telle adresse, les 4 bits de poids faible sont zro. On peut donc reprsenter
ladresse dun segment avec seulement ses 16 bits de poids fort, les 4 bits de poids faible tant implicitement 0. Et
pour dsigner une case mmoire parmi les 64Ko=216 contenues dans un segment, il suffit dune valeur sur 16 bits.

Figure 13 : Gestion de la mmoire.


Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

Ainsi, une case mmoire est repre par le 8086 au moyen de deux quantits sur 16 bits :
Ladresse dun segment ;
Un dplacement ou offset (appel aussi adresse effective) dans ce segment.
Cette mthode de gestion de la mmoire est appele segmentation de la mmoire.
La donne dun couple (segment, offset) dfinit une adresse logique, note sous la forme segment : offset.
Ladresse dune case mmoire donne sous la forme dune quantit sur 20 bits (5 digits hexa) est appele adresse
physique car elle correspond la valeur envoye rellement sur le bus dadresses A0 - A19. Les registres de segments
contiennent le dbut de la page. Le mcanisme dadressage, ou la correspondance entre adresse logique et adresse
physique est donne par :

Figure 14 : Calcul de ladresse physique.


Ainsi, ladresse physique se calcule par lexpression :
Adresse physique = 16 segment + offset car le fait dinjecter 4 zros en poids faible du segment revient effectuer
un dcalage de 4 positions vers la gauche, cest dire une multiplication par 24 = 16.
A un instant donn, le 8086 a accs 4 segments dont les adresses se trouvent dans les registres de segment CS, DS,
SS et ES. Le segment de code contient les instructions du programme, le segment de donnes contient les donnes
manipules par le programme, le segment de pile contient la pile de sauvegarde et le segment supplmentaire peut
aussi contenir des donnes.
Le registre CS est associ au pointeur dinstruction IP, ainsi la prochaine instruction excuter se trouve ladresse
logique CS : IP. De mme, les registres de segments DS et ES peuvent tre associs un registre dindex.
Exemple : DS : SI, ES : DI. Le registre de segment de pile peut tre associ aux registres de pointeurs :
SS : SP ou SS : BP.
Mmoire accessible par le 8086 un instant donn :

Figure 15 : Division de la mmoire en segments.


Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

10

Remarque : les segments ne sont pas ncessairement distincts les uns des autres, ils peuvent se chevaucher ou se
recouvrir compltement.

Initialisation du microprocesseur :
Le contenu des registres aprs un RESET du microprocesseur est le suivant :
IP = 0000H CS = FFFFH DS = 0000H ES = 0000H SS = 0000H
Puisque CS contient la valeur FFFFH et IP la valeur 0000H, la premire instruction excute par le 8086 se trouve donc
ladresse logique FFFFH : 0000H, correspondant ladresse physique FFFF0H (bootstrap). Cette instruction est
gnralement un saut vers le programme principal qui initialise ensuite les autres registres de segment.

V.

Le jeu dinstruction et les modes dadressage du 8086

Chaque microprocesseur reconnat un ensemble dinstructions appel jeu dinstructions (Instruction Set) fix par le
constructeur. Le jeu dinstructions dcrit lensemble des oprations lmentaires que le processeur peut excuter. Le
nombre dinstructions varie entre 75 et 150 pour les microprocesseurs CISC et entre 10 et 30 instructions pour les
microprocesseurs RISC. Chaque instruction est dfinie par une valeur numrique binaire dite code opratoire (ou
code opration). Au lieu de manipuler les codes opratoires, on utilise une notation symbolique pour reprsenter les
instructions : les mnmoniques. Un programme constitu de mnmoniques est appel programme en assembleur.
Les instructions scrivent sous la forme : Mnmonique Destination, Source. Elles peuvent tre classes en groupes :
Instructions de transfert de donnes ;
Instructions arithmtiques ;
Instructions logiques ;
Instructions de branchement ...

5.1 Format de base des instructions


Contrairement aux microprocesseurs 8 bits qui excutent, en gnral, une opration entre laccumulateur et un
oprande, le 8086 a t conu pour travailler sur deux oprandes. Lun des oprandes est un registre ou une position
mmoire, lautre est un registre ou une donne. Linstruction de base tient sur deux octets (voir figure 16). Le premier
octet dfinit le code de linstruction ainsi que les bits d et w. Le second octet est compos de trois champs : MOD,
REG et R/M. Linstruction sur deux oprandes peut comporter plus de deux octets. Les octets supplmentaires
expriment un dplacement ou une donne. Lorsquune instruction contient la fois un dplacement et une donne,
la donne suit le dplacement (voir section 5.3).
7
6
5
4
3
2
1
Code opration

0
w

MOD

4
REG

R/M

Figure 16 : Format des instructions.

5.2 Les modes dadressage


Les modes dadressages permettent de dterminer comment accder une position en mmoire, Ce qui revient la
dtermination de ladresse effective (EA) de cette position. Ladresse effective reprsente le dplacement (offset) de
la case mmoire dans le segment de donnes (voir figure 18). Dans ce qui suit nous utiliserons des exemples
dinstructions du 8086 qui scrivent selon la forme :

1- Adressage implicite
Linstruction contient seulement le code opration.
Exemple : not AX ; permet de complmenter le contenu du registre AX.

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

11

2- Adressage immdiat
La donne est fournie immdiatement aprs linstruction
Exemple : mov AL, 21h ; permet de transfrer 21h dans le registre AL.

3- Adressage dun registre


La donne est contenue dans un registre.
Exemple : mov AX, BX : charge le contenu du registre BX dans le registre AX.

4- Adressage direct ou tendu :


Linstruction comporte ladresse effective de la case mmoire o se trouve la donne.
Exemple : mov BL, [1200h] ; transfre le contenu de la case mmoire dadresse 1200h vers le registre BL.

Figure 17 : Adressage dans le segment de donnes.

5- Adressage indirect par registre ou bas (et bas avec dplacement) :


Loffset est contenu dans un registre de base BX ou BP.
EA= (BP) ; EA= (BX) (contenu de BP ou de BX).
Exemples :
- mov AL, [BX] ; transfre la donne dont loffset est contenu dans le registre de base BX vers le registre AL. Le
segment associ par dfaut au registre BX est le segment de donnes : on dit que ladressage est bas sur DS ;
- mov AL, [BP] : le segment par dfaut associ au registre de base BP est le segment de pile. Dans ce cas, ladressage
est bas sur SS.
Dans le cas de ladressage bas avec dplacement, une valeur constante (dplacement) est rajoute pour obtenir
loffset.
EA= (BP) + d ; EA= (BX) + d.
Exemple : mov [BX+100h], AX ; Ladresse effective est donne par (BX) + 100h.

6- Adressage index (et index avec dplacement) :


Semblable ladressage bas, sauf que loffset est contenu dans un registre dindex SI ou DI, associs par dfaut au
segment de donnes. Les modes dadressage bass ou indexs permettent la manipulation de tableaux rangs en
mmoire.
EA= (SI) ; EA= (DI).
Dans le cas de ladressage index avec dplacement.
EA= (SI) + d ; EA= (DI) + d
Exemples :
- mov [DI], BX ; charge les cases mmoire doffset DI et DI + 1 avec le contenu du registre BX.

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

12

- mov AL, [SI+200h] ; charge le registre AL avec le contenu de la case mmoire dont loffset est contenu dans SI plus
un dplacement de 200h.

7- Adressage indirect index (et indirect index avec dplacement) :


Loffset est obtenu en faisant la somme dun registre de base et dun registre dindex, et dune valeur constante dans
le cas avec dplacement. Ce mode dadressage permet ladressage de structures de donnes complexes : matrices,
enregistrements,
EA= (BP) + (DI) ; EA= (BP) + (SI)
EA= (BX) + (DI) ; EA= (BX) + (SI)
Avec dplacement :
EA= (BP) + (DI) + d; EA= (BP) + (SI) + d
EA= (BX) + (DI) + d ; EA= (BX) + (SI) + d
Exemple : mov AH, [BX+SI+100h]
Dans cet exemple, BX et SI peuvent tre considrs comme indices de ligne et de colonne dans une matrice.

8- Adressage relatif
L'adresse effective est obtenue est additionnant un dplacement au contenu du compteur ordinal. Ce type
d'adressage est utilis dans les instructions de saut ou de branchement.
Exemple :
- JMP 05h ; branchement inconditionnel ladresse IP + 05h.
- JNZ F5h ; branchement si zro ladresse IP - 11h (C 2 de F5h).

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

13

(C.O.)

Instruction

(C.O.)

Instruction

Adressage implicite

Adressage immdiat
Oprande
Registre
(C.O.)

Instruction

(C.O.)

Instruction

Oprande

Adressage dun registre

Adressage direct (ou tendu)


Adresse

Oprande

Registre
(C.O.)

Adresse

Instruction

Oprande

Adressage indirect par registre

Oprande

Adressage indirect par registre avec


dplacement

Oprande

Adressage index

Oprande

Adressage index avec dplacement

Oprande

Adressage indirect index

Oprande

Adressage indirect index avec


dplacement

Registre
(C.O.)

Instruction

Adresse

Dplacement

+
Registre

(C.O.)

Index

Instruction

Registre
(C.O.)

Instruction

Index

Dplacement

+
Registre

(C.O.)

Adresse

Instruction

+
Index
Registre
Registre
(C.O.)

Instruction

Adresse

Dplacement

+
Index
Registre

Figure 18 : Modes dadressage du 8086.


Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

14

5.3 Rgles de dtermination des codes des instructions


07

M
d w O
D

Code
opration

Byte 1

07
REG

R/M

Byte 2

07

07

07

Depl./Data low

Depl./Data high

Data low

Data high

Byte 3

Byte 4

Byte 5

Byte 6

Figure 19 : Frome gnrale des instructions.


1. Le bit d de destination :
Sil existe un seul registre dans linstruction, d spcifie si ce registre est la source ou bien la destination. d=1 : le
registre est une destination, d= 0 : le registre est une source (d=1 : to Reg d=0 : from Reg).
2. Le bit w (Width) :
w=1 : Oprande sur 16 bits ; w=0 : Oprande sur 8 bits
3. Les champs MOD et R/M :
MOD = 00 : Adressage sans dplacement.
R/M

Adresse effective EA

Mode dadressage

Segment

000

[BX+SI]

adressage indirect index

DS

001

[BX+DI]

adressage indirect index

DS

010

[BP+SI]

adressage indirect index

SS

011

[BP+DI]

adressage indirect index

SS

100

[SI]

adressage index

DS

101

[DI]

adressage index

DS

110

Depl.L Depl.H

adressage direct

DS

111

[BX]

adressage indirect

DS

MOD =00 et R/M=110 : Adressage direct, ladresse (offset), octet bas puis octet haut, est spcifie sur les bytes 3 et 4.
MOD = 01 : Adressage avec dplacement sur 8 bits.
R/M

Adresse effective EA

Mode dadressage

Segment

000

[BX+SIDepl.8]

adressage indirect index avec dplacement sur 8 bits

DS

001

[BX+DIDepl.8]

adressage indirect index avec dplacement sur 8 bits

DS

010

[BP+SIDepl.8]

adressage indirect index avec dplacement sur 8 bits

SS

011

[BP+DIDepl.8]

adressage indirect index avec dplacement sur 8 bits

SS

100

[SIDepl.8]

adressage index avec dplacement sur 8 bits

DS

101

[DIDepl.8]

adressage index avec dplacement sur 8 bits

DS

110

[BPDepl.8]

adressage indirect avec dplacement sur 8 bits

SS

111

[BXDepl.8]

adressage indirect avec dplacement sur 8 bits

DS

MOD = 10 : Adressage avec dplacement sur 16 bits.


R/M

Adresse effective EA

Mode dadressage

000

[BX+SI+Depl.L Depl.H]

adressage indirect index avec dplacement sur 16 bits

001

[BX+DI+ Depl.L Depl.H]

adressage indirect index avec dplacement sur 16 bits

010

[BP+SI+ Depl.L Depl.H]

adressage indirect index avec dplacement sur 16 bits

011

[BP+DI+ Depl.L Depl.H]

adressage indirect index avec dplacement sur 16 bits

100

[SI+ Depl.L Depl.H]

adressage index avec dplacement sur 16 bits

101

[DI+ Depl.L Depl.H]

adressage index avec dplacement sur 16 bits

110

[BP+ Depl.L Depl.H]

adressage indirect avec dplacement sur 16 bits

111

[BX+ Depl.L Depl.H]

adressage indirect avec dplacement sur 16 bits

MOD = 11 : Instructions sur deux registres :


MOD

REG

R/M

11

destination

source

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

15

Les valeurs des champs REG et R/M sont dtermines selon le tableau suivant :
4. Le champ REG :
Le champ REG (et R/M dans le cas o MOD=11) contient un nombre entre 0 et 7, il est dfinie par :
REG

registre 16 (w=1)

registre 8 (w=0)

Registre segment

000

AX

AL

ES

001

CX

CL

CS

010

DX

DL

SS

011

BX

BL

DS

100

SP

AH

101

BP

CH

110

SI

DH

111

DI

BH

5. Le bit S :
Un nombre binaire sur 8 bits, selon la reprsentation en complment 2, peut tre tendu un nombre sur 16 bits
en complment 2, en mettant tous les bits de loctet haut la mme valeur que le MSB de loctet bas. Cest ce que
lon appelle une extension du signe. Le bit S apparat dans les instructions daddition, de soustraction, et de
comparaison sous la forme : Immdiat vers Registre/Mmoire. Il est dfinit comme suit :
S : W = 00 : opration sur 8 bits ;
S : W = 01 : opration sur 16 bits ;
S : W = 11 : opration sur un oprande sur 8 bits avec extension du signe 16 bits.
6. Le bit V :
Utilis par les instructions de dcalage et de rotation, il permet de dterminer le nombre de rptition.
V = 0 : Nombre de rptition = 1 ;
V = 1 : Nombre de rptition contenu dans CL.
7. Le bit Z :
Utilis par linstruction REP dans primitives de manipulation de chanes.
Exemples de dtermination de codes dinstructions :
mov DX, AX : 100010dw mod reg r/m = 100010 1 1 11 010 000 = 8BD0
push BX : 01010 reg = 01010 011 = 53
lea AX, [BX+100h] : 10001101 mod reg r/m = 10001101 10 000 111 00 10 = 8D 87 00 10
add [BX+SI], AL : 000000 dw mod reg r/m = 000000 0 0 00 000 000 = 00
add CX, 2105h : 100000 sw mod 000 r/m data data (if s:w=01) =100000 0 1 11 000 001 05 21 = 81 C1 05 21

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

16

5.4 Les instructions de transfert


Elles permettent de dplacer des donnes dune source vers une destination :
Registre vers mmoire ;
Registre vers registre ;
Mmoire vers registre.
Remarque : le microprocesseur 8086 nautorise pas les transferts de mmoire vers mmoire, il faut passer par un
registre intermdiaire.
Linstruction MOV :
Syntaxe : MOV destination, source
Exemples :
mov AL, 21h, mov AX, BX, mov BL, [1200h], mov AH, [BX+SI+100h]
Linstruction XCHG (Exchange) :
Syntaxe : XCHG Destination, Source : Echange les contenus de Source et de Destination.

5.5 Les instructions arithmtiques


Les instructions arithmtiques de base sont laddition, la soustraction, la multiplication et la division qui incluent
diverses variantes. Plusieurs modes dadressage sont possibles.
Addition : ADD oprande1, oprande2
Lopration effectue est : oprande1 oprande1 + oprande2.
Exemples :
add AH, [1100h] : ajoute le contenu de la case mmoire doffset 1100h laccumulateur AH (adressage direct) ;
Soustraction : SUB oprande1, oprande2
Lopration effectue est : oprande1 oprande1 oprande2.
Multiplication : Multiplication entire non signe.
MUL oprande, o oprande est un registre ou une case mmoire.
Cette instruction effectue la multiplication du contenu de AL par un oprande sur 1 octet ou du contenu de AX par un
oprande sur 2 octets. Le rsultat est plac dans AX si les donnes multiplier sont sur 1 octet (rsultat sur 16 bits),
dans (DX, AX) si elles sont sur 2 octets (rsultat sur 32 bits).
Exemple :
mov AL,51
mov BL,32

AX = 51 32

mul BL
Division : Division entire non signe.
DIV oprande, o oprande est un registre ou une case mmoire.
Cette instruction effectue la division du contenu de AX par un oprande sur 1 octet ou le contenu de (DX, AX) par un
oprande sur 2 octets. Rsultat : si loprande est sur 1 octet, alors AL = quotient et AH = reste ; si loprande est sur
2 octets, alors AX = quotient et DX = reste.
Exemple :
mov DX, 0
mov AX, 1234

AX = 123 (quotient) et

mov BX, 10

DX = 4 (reste)

div BX
Autres instructions arithmtiques :
ADC : addition avec retenue ; SBB : soustraction avec retenue ; INC : incrmentation dune unit ; DEC :
dcrmentation dune unit ; IMUL : Multiplication entire signe ; IDIV : Division entire signe.
Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

17

5.6 Les instructions logiques


Ce sont des instructions qui permettent de manipuler des donnes au niveau des bits. Les oprations logiques de
base sont : ET, OU, OU exclusif, complment 1, complment 2, dcalages et rotations.
ET logique : AND oprande1, oprande2
Lopration effectue est : oprande1 oprande1 ET oprande2.
Exemple :
mov BL, 10010110b
mov BL, 11001101b

AL= 10000100

and AL, BL
Autres instructions logiques :
OR : OU logique, XOR : OU exclusif, NOT : complment 1, NEG : complment 2
Dcalage logique droite : SHR oprande, n : dcale loprande de n positions vers la droite.
Exemples : mov AL, 11001011b
shr AL, 1

mov AL, 11001011b


mov CL, 3 (si n > 1, n est plac dans CL ou CX)
shl AL, CL

AL = 01011000b, CF=0

Dcalage logique gauche : SHL oprande, n : dcale loprande de n positions vers la gauche.
Exemple : mov al, 11001011B
shl al, 1

Dcalage arithmtique vers la droite : SAR oprande, n : Ce dcalage conserve le bit de signe bien que celui-ci soit
dcal.
Exemple : mov AL, 11001011b
sar AL, 1

Dcalage arithmtique vers la gauche : SAL oprande, n


Identique au dcalage logique gauche.
Rotation droite (Rotate Right) : ROR oprande, n
Cette instruction dcale loprande de n positions vers la droite et rinjecte par la gauche les bits sortant.
Exemple : mov AL, 11001011b
ror AL, 1

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

18

Rotation gauche (Rotate Left) : ROL oprande, n

Rotation droite avec passage par le carry : RCR oprande, n

Rotation gauche avec passage par le carry : RCL oprande, n

5.7 Les instructions de branchement


Les instructions de branchement (ou saut) permettent de modifier lordre dexcution des instructions du programme
en fonction de certaines conditions. Il existe 3 types de saut :
Saut inconditionnel ;
Sauts conditionnels ;
Appel de sous-programmes.
Instruction de saut inconditionnel : JMP label
Cette instruction effectue un saut vers le label spcifi. Comme le montre lexemple suivant :
Boucle1 : inc AX
dec BX

; Ceci est une boucle infinie

jmp Boucle1
Remarque : linstruction JMP ajoute au registre IP (pointeur dinstruction) le nombre doctets (distance) qui spare
linstruction de saut de sa destination. Pour un saut en arrire, la distance est ngative (code en complment 2).
Instructions de sauts conditionnels : Jcondition label
Un saut conditionnel nest excut que si une certaine condition est satisfaite, sinon lexcution se poursuit
squentiellement linstruction suivante. La condition du saut porte sur ltat de lun (ou plusieurs) des indicateurs
dtat (flags) du microprocesseur :
Instruction

nom

condition

JZ label

Jump if Zero

saut si ZF = 1

JNZ label

Jump if Not Zero

saut si ZF = 0

JE label

Jump if Equal

saut si ZF = 1

JNE label

Jump if Not Equal

saut si ZF = 0

JC label

Jump if Carry

saut si CF = 1

JNC label

Jump if Not Carry

saut si CF = 0

JS label

Jump if Sign

saut si SF = 1

JNS label

Jump if Not Sign

saut si SF = 0

JO label

Jump if Overflow

saut si OF = 1

JNO label

Jump if Not Overflow

saut si OF = 0

JP label

Jump if Parity

saut si PF = 1

JNP label

Jump if Not Parity

saut si PF = 0

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

19

Remarque : il existe un autre type de saut conditionnel, les sauts arithmtiques. Ils suivent en gnral linstruction de
comparaison : CMP oprande1, oprande2
condition

nombres signs

nombres non signs

JEQ label

JEQ label

>

JG label

JA label

<

JL label

JB label

JNE label

JNE label

Exemple :
cmp AX, BX
jg superieur
jl inferieur
superieur :

...

...
inferieur :

...

Instruction de boucle : LOOP


Rpte une boucle tant que CX est diffrent de zro (celui-ci est auto dcrment).
Appels de sous-programmes : Call label
Pour viter la rptition dune mme squence dinstructions plusieurs fois dans un programme, on rdige la
squence une seule fois en lui attribuant un nom et on lappelle lorsquon en a besoin. Le programme appelant est le
programme principal. La squence appele est un sous-programme ou procdure.
Remarque : une procdure peut tre de type NEAR si elle se trouve dans le mme segment ou de type FAR si elle se
trouve dans un autre segment. Lors de lexcution de linstruction CALL, le pointeur dinstruction IP est charg avec
ladresse de la premire instruction du sous-programme. Lors du retour au programme appelant, linstruction suivant
le CALL doit tre excute, cest--dire que IP doit tre recharg avec ladresse de cette instruction.
Avant de charger IP avec ladresse du sous-programme, ladresse de retour au programme principal (contenu de IP),
est sauvegarde dans la pile. Lors de lexcution de linstruction RET, cette adresse est rcupre partir de la pile et
recharge dans IP, ainsi le programme appelant peut se poursuivre.

5.8 Fonctionnement de la pile


La pile est une zone mmoire fonctionnant en mode LIFO (Last In First Out : dernier entr, premier sorti). Deux
oprations sont possibles sur la pile :
Empiler une donne : placer la donne au sommet de la pile ;
Dpiler une donne : lire la donne se trouvant au sommet de la pile.
Le sommet de la pile est repr par un registre appel pointeur de pile (SP : Stack Pointer) qui contient ladresse de la
dernire donne empile.
La pile est dfinie dans le segment de pile dont ladresse de dpart est contenue dans le registre SS. Lors de lappel
un sous-programme, ladresse de retour au programme appelant (contenu de IP) est empile aprs que le pointeur
de pile SP soit automatiquement dcrment. Au retour du sous-programme, le pointeur dinstruction IP est recharg
avec la valeur contenue dans le sommet de la pile et SP est incrment.
La pile peut galement servir sauvegarder le contenu de registres qui ne sont pas automatiquement sauvegards
lors de lappel un sous programme :
Instruction dempilage : PUSH oprande (prcde par une auto dcrmentation)
Instruction de dpilage : POP oprande (suivie par une auto incrmentation)
O oprande est un registre ou une donne sur 2 octets (on ne peut empiler que des mots de 16 bits).
Exemple :
Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

20

push AX ; empilage du registre AX ...


push BX ; ... du registre BX ...
push [1100h] ; ... et de la case mmoire 1100H-1101H
...
pop [1100h] ; dpilage dans lordre inverse de lempilage
pop bx
pop ax
Remarque : la valeur de SP doit tre initialise par le programme principal avant de pouvoir utiliser la pile.

Universit de BBA-Dpartement dElectronique

Tarek Abed (2013/2014)

21

Вам также может понравиться