Академический Документы
Профессиональный Документы
Культура Документы
IV
Le microprocesseur Intel 8086
Universit de Bordj Bou Arreridj
Introduction ............................................................................................................................................... 2
III.
IV.
V.
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 :
- 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
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.
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.
III.
Organisation interne
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)
PF : indicateur de parit ;
DF : indicateur de dcrmentation ;
ZF : indicateur de zro ;
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.
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 :
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.
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 ...
0
w
MOD
4
REG
R/M
1- Adressage implicite
Linstruction contient seulement le code opration.
Exemple : not AX ; permet de complmenter le contenu du registre AX.
11
2- Adressage immdiat
La donne est fournie immdiatement aprs linstruction
Exemple : mov AL, 21h ; permet de transfrer 21h dans le registre AL.
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.
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).
13
(C.O.)
Instruction
(C.O.)
Instruction
Adressage implicite
Adressage immdiat
Oprande
Registre
(C.O.)
Instruction
(C.O.)
Instruction
Oprande
Oprande
Registre
(C.O.)
Adresse
Instruction
Oprande
Oprande
Oprande
Adressage index
Oprande
Oprande
Oprande
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
14
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
Adresse effective EA
Mode dadressage
Segment
000
[BX+SI]
DS
001
[BX+DI]
DS
010
[BP+SI]
SS
011
[BP+DI]
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]
DS
001
[BX+DIDepl.8]
DS
010
[BP+SIDepl.8]
SS
011
[BP+DIDepl.8]
SS
100
[SIDepl.8]
DS
101
[DIDepl.8]
DS
110
[BPDepl.8]
SS
111
[BXDepl.8]
DS
Adresse effective EA
Mode dadressage
000
[BX+SI+Depl.L Depl.H]
001
010
011
100
101
110
111
REG
R/M
11
destination
source
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
16
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
17
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
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
18
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
saut si ZF = 0
JE label
Jump if Equal
saut si ZF = 1
JNE label
saut si ZF = 0
JC label
Jump if Carry
saut si CF = 1
JNC label
saut si CF = 0
JS label
Jump if Sign
saut si SF = 1
JNS label
saut si SF = 0
JO label
Jump if Overflow
saut si OF = 1
JNO label
saut si OF = 0
JP label
Jump if Parity
saut si PF = 1
JNP label
saut si PF = 0
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
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 :
...
20
21