Académique Documents
Professionnel Documents
Culture Documents
3 Cours - Microprocesseur 16 Bits PDF
3 Cours - Microprocesseur 16 Bits PDF
BITS
(LE 8086 DE INTEL)
R. GRISEL
Objectifs
- Architecture gnrale
- Cycle daccs au bus
- Organisation de la mmoire
- Modes dadressages
R. GRISEL
R. GRISEL
AH
BH
AX
BX
CX
CH
DX
DH
AL
BL
CL
DL
SI
DI
SP
CS
BP
DS
20 bits
Buffer
du bus
SS
Registres gnraux
bus interne
SS
Compteur
d'instructions
oprandes
file d'attente de 6 octets
de codes instructions
ALU
dcodeur
16 bits
drapeaux
R. GRISEL
E.U. et B.I.U.?
La premire machine: L'EU ( Execution Unit, unit d'excution) regroupe les fonctions
de traitement (unit arithmtique et logique), les registres gnraux, le dcodeur
d'instruction et le microcode associ. Elle lit les codes opration dans une file d'attente
et les excute. La file d'attente est alimente par le BIU (Bus Interface Unit, unit
d'interface de bus) qui constitue la deuxime machine.
Le travail principal de l'UIB, est de chercher les instructions en mmoire et
de les mettre dans la file d'attente. Ce travail est rompu dans deux cas particuliers.
Le premier cas est celui o l'UE, excute une instruction ncessitant un
accs mmoire. Elle demande alors l'IUB de lire ou d'crire une valeur en mmoire.
Le second cas est celui o l'UE rencontre un droutement de programme (
jmp / call ...). Le contenu de la file d'attente n'est plus jour et l'UE doit demander une
rinitialisation partir de l'adresse de branchement.
La file d'attente des instructions a une taille de 6 octets, l'accs se fait
toujours par mots de 16 bits sauf dans le seul cas particulier o l'adresse de
rinitialisation est impaire.
R. GRISEL
R. GRISEL
AH
BH
CH
DH
SP
BP
SI
DI
ACCUMULATEUR
BASE
COMPTAGE
DONNEES
POINTEUR DE PILE
POINTEUR DE BASE
INDEX DE SOURCE
INDEX DE DESTINATION
IP
POINTEUR D'INSTRUCTION
Indicateurs de commande
TF
DF
Indicateurs d'tat
IF
ZF
SF
OF
AF
PF
CF
SF : SIGNE
OF : DEBORDEMENT
IF : VALIDATION D'INTERRUPTION
DF : DIRECTION
TF : PIEGE
CF : RETENUE
PF : PARITE
AF : RETENUE AUXILIAIRE
ZF : ZERO
SEGMENT DE CODE
SEGMENT DE DONNEES
SEGMENT DE PILE
SEGMENT SUPPLEMENTAIRE
CS
DS
SS
ES
R. GRISEL
Indicateurs d'tat
Indicateurs de commande
TF
IF
DF
OF
SF
ZF
AF
PF
CF
CF : RETENUE
PF : PARITE
AF : RETENUE AUXILIAIRE
ZF : ZERO
SF : SIGNE
OF : DEBORDEMENT
IF : VALIDATION D'INTERRUPTION
DF : DIRECTION
TF : PIEGE
R. GRISEL
R. GRISEL
10
Signaux du 8086
GND
40
VCC (+ 5 V 5 %)
AD14
39
AD 15
AD13
38
A16 / S3
AD12
37
A17 / S4
AD11
36
A18 / S5
AD10
35
A19 / S6
AD9
34
/BHE / S7
AD8
33
AD7
32
/RD
AD6
10
31
HOLD
31
/RQ / /GTO
AD5
11
30
HLDA
30
/RQ / /GT1
AD4
12
29
/WR
29
/LOCK
AD3
13
28
M / /IO
28
/S2
AD2
14
27
DT / /R
27
/S1
AD1
15
26
/DEN
26
/S0
AD0
16
25
ALE
25
QS0
NMI
17
24
/INTA
24
QS1
INTR
18
23
/TEST
CLK
19
22
READY
GND
20
21
RESET
8086
MN / /MX
R. GRISEL
11
R. GRISEL
12
T2
T3
Tw
T4
T1
Ready=0
ALE
ADR
ADR/STA
ADR/DATA
RD/WR
R. GRISEL
13
14
R. GRISEL
S4
S3
ES (Extra segment)
SS (Stack segment)
DS (Data segment)
15
Sortie du 8288
correspondante
/S2
/S1
/S0
/INTA
/IORC
/IOWC
aucune
/MRDC
Lecture d'instruction
/MRDC
/MWTC
aucune
inactif
R. GRISEL
16
QS1
QS0
R. GRISEL
17
FFFFFH
Octet de
poids fort
Octet de
poids faible
Mot de 16 bits
XXXXXH adresse du mot
00000H
R. GRISEL
18
Mmoire "paire"
Y+1
X+1
/BHE
A19 - A1
D15 - D8
D7 - D0
A0
R. GRISEL
19
Accs la mmoire
Pour un accs par octet un seul des bancs est valid et pour un
accs par mot, les deux bancs sont utiliss simultanment. Un seul accs ou
successivement deux accs suivant que l'adresse du mot est paire ou
impaire. Les bits A0 et BHE sont utiliss pour de telles oprations.
/BHE A0
Donne slectionne.
aucune.
R. GRISEL
20
Mmoire "paire"
Y+1
X+1
/BHE=0
A19 - A1
R. GRISEL
D15 - D8
D7 - D0
A0=0
21
Mmoire "paire"
Y+1
Y
X+1
D15 - D8
A19 - A1
A0 =1
D7 - D0
/BHE=0
R. GRISEL
22
Mmoire "paire"
Y+1
Y
X+1
D15 - D8
A19 - A1
A0 =0
D7 - D0
/BHE=1
R. GRISEL
23
FFFFFH
64 Koctets
Mmoire
1 Moctets
64 Koctets
ES
Mot de 8 bits
Dplacement
Mot de 16 bits
Dplacement
octet fort
octet faible
64 Koctets
DS
SS
64 Koctets
CS
00000H
R. GRISEL
24
Remarque
R. GRISEL
25
Calcul de l'adresse
L'tablissement de l'adresse physique sur 20 bits est obtenu par la
formule suivante :
Adresse = 16 X registre de segment + dplacement
19 18 17 16 15
0 0 0 0
19
19
0
Adresse physique
R. GRISEL
26
Exemple numrique :
registre de segment = A400H et dplacement 1010H. L'adresse physique sera
gale A5010.
+
=
R. GRISEL
Dplacement
Segment
27
R. GRISEL
28
29
Adressage immdiat
La donne oprande d'une opration avec un registre ou une mmoire est
directement donne par le programme. Cette donne peut tre un octet ou un
mot, le registre ou la mmoire destinataire tant de la mme taille .
MOV WORD PTR[SI],1
ralise le chargement de (( SI ) dans le segment DS ) par 0001H.
( l'expression WORD PTR ou BYTE PTR indique la taille de
l'emplacement mmoire considr, quand elle n'est pas implicitement connue
, comme dans cet exemple ).
Les registres segments ne peuvent pas tre chargs par adressage
immdiat .
R. GRISEL
30
R. GRISEL
31
R. GRISEL
32
R. GRISEL
33
REMARQUE : Dans tout ce qui prcde, les segments concerns sont ceux par dfaut . Le
programmeur peut rfrencer les dplacements d'autre segments en les citant explicitement
dans les instructions. Les codages de ces dernires occupent alors un octet supplmentaire .
Exemple :
MOV AX , [BX] ralise (AX) <-- ((BX) dans le segment DS )
Le segment DS est concern par dfaut .
Alors que :
MOV AX , ES:[BX] ralise (AX) <-- ((BX) dans le segment ES )
Le segment ES est cit explicitement .
Les contenus des registres de segments ( CS , DS , SS , ES ) peuvent tre
transfrs dans un registre de travail, ou en mmoire adresse par l'un des modes dcrits.
L'inverse n'est possible que sur DS, SS et ES. CS ne peut tre modifi que par un saut inter
segment du programme. Le tableau suivant donne une rcapitulation des modes d'adressage
cits.
R. GRISEL
34
Obtention du dplacement
dans le segment
Segment concern
par dfaut
Direct
DS
Bas
(BX)
(BX) + dcalage (octet ou mot)
(BP) + dcalage (octet ou mot)
DS
DS
SS
Index
(SI)
(SI) + dcalage (octet ou mot)
(DI)
(DI) + dcalage (octet ou mot)
DS
DS
DS
DS
(BX) + (SI)
(BX) + (SI) + dcalage (octet ou mot)
(BX) + (DI)
Bas index (BX) + (DI) + dcalage (octet ou mot)
(BP) + (SI)
(BP) + (SI) + dcalage (octet ou mot)
(BP) + (DI)
(BP) + (DI) + dcalage (octet ou mot)
DS
DS
DS
DS
SS
SS
SS
SS
R. GRISEL
35
36
FFFFFH
RESERVE
UTILISE
FFFFCH
FFFFBH
FFFF0H
FFFEFH
FFFFH
LIBRE
LIBRE
80H
7FH
RESERVE
UTILISE
14H
13H
0H
Mmoire
RESERVE
LIBRE
100H
FFH
F8H
F7H
0H
I/O
R. GRISEL
37
R. GRISEL
38
R. GRISEL
39
15
15
Pointeur d'instruction IP
8 7
Extension de signe
15
Pointeur d'instruction IP
15
Dplacement dans
le programme
0
15
0
Dplacement dans le programme
0
15
Nouveau pointeur d'instruction IP
JMP NEAR-LABEL
( +32767 -32768 octets )
R. GRISEL
40
R. GRISEL
41
La pile
La pile est implante dans l'espace mmoire . Elle est pointe par le registre
SP dans le segment SS exclusivement .
Les donnes empiler ou dpiler sont uniquement des mots . La
provenance ou la destination est un registre ou un emplacement mmoire
adress par l'un des modes dcrit prcdemment . La pile se remplie par
adresses dcroissantes et se vide par adresses croissantes. L'instruction
suivante : PUSH TABLE[DI], ralise :
(SP) <-- (SP)-2 , ((SP) dans le seg SS )<-- ((DI)+TABLE dans le seg DS)
POP TABLE[DI] (SP = SP + 2), ralise lopration de rcupration
La pile sera traite avec plus de dtails dans le chapitre rserv la
" PROGRAMMATION DU 8086".
R. GRISEL
42
Les sous-programmes
Les sous programmes
Les possibilits d'adressage des sous programmes sont les
mmes que celles des sauts inconditionnels intra-segments ou intersegments .
Lors de l'criture d'un sous programme, le programmeur doit tre
attentif au point suivant :
- sous programme intra-segment : le pointeur d'instruction IP est
plac dans la pile avant le saut. A la fin du sous programme l'instruction
RET restaure IP .
- sous programme inter segment : le pointeur d'instruction IP, puis
le registre de segment CS, sont placs dans la pile avant le saut . A la fin du
sous programme, l'instruction RET, diffrente de la prcdente bien
qu'ayant le mme nom, restaure IP et CS .
Le programmeur doit dclarer un sous programme inter segment
ou intra segment, pour que l'assembleur puisse coder correctement
l'instruction RET. (Voir chapitre Pragrammation du 8086).
R. GRISEL
43
Systmes multiprocesseurs
Lecture d'un registre
smaphore par le
processeur 1
Prise du bus par le processeur 2
non
bit smaphore
=0?
oui
Lecture du mme
registre d'tat
Mise un du bit
smaphore
Accession la
ressource
non
bit smaphore
=0?
oui
Mise un du bit
smaphore
Accession la
ressource
R. GRISEL
44
Instructions du 8086
Transfert de donnes
- MOV
- POP
- OUT
Instructions arithmtiques
- ADD
- DIV
- MUL
Instructions logiques
- OR
- AND
- DEC
Dcalages et rotations
- ROL
- RCL
- SAL
R. GRISEL
Instructions de branchement
- JMP
- CALL
- JCXZ
Manipulations de caractres
- REP MOVS
- REP MOVSB
- REP MOVSW
Instructions de commande
- INT N
- STI
- CLI
Remarque
Un ou plusieurs indicateurs
dtat peuvent tre affects par
lexcution de ces instructions.
45