Professional Documents
Culture Documents
R. GRISEL
Objectifs
- Architecture gnrale - Cycle daccs au bus - Organisation de la mmoire - Modes dadressages
R. GRISEL
R. GRISEL
AX BX CX DX
AH BH CH DH SI DI SP BP
AL BL CL DL
CS DS SS SS Compteur d'instructions
Registres gnraux
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
Le but recherch est la paralllisation des deux tches d'acquisition et d'excution des instructions de manire optimiser l'occupation du bus . Cette distinction est justifie par le fait que ces deux blocs travaillent en partie indpendamment . Lorsque l'EU a besoin d'accder une donne en mmoire , il demande le transfert au BIU en nommant le segment concern , et en fournissant le dplacement dans le segment. Le BIU calcule l'adresse physique sur 20 bits et ralise le transfert demand . Les instructions excutes par l'EU sont issues d'une file d'attente de six octets d'instructions pour le 8086. Le BIU prsente les octets d'instructions l'entre de la file d'attente ds que les deux conditions suivantes sont remplies : - L'EU ne demande pas de transfert de donnes; cet vnement est prioritaire sur la lecture des instructions. - Il existe des places libres dans la file d'attente qui peuvent tre remplies par au moins un cycle de lecture du bus . Le 8086 a un bus de donnes de 16 bits: une lecture des octets d'instructions se fait ds qu'il y a au moins deux places libres . En rsum : pendant que l'EU ne demande pas de transfert avec la mmoire , le BIU occupe ce temps libre du bus pour amener les instructions dans la file d'attente. Quand la file d'attente est vide , l'EU attend que le BIU place une instruction dans la file d'attente. Ceci arrive lorsque l'EU effectue un saut dans le programme : le contenu de la file d'attente est alors effac ( flush ou vidage) Cela peut galement arriver, lorsque l'excution d'une suite d'instructions est plus rapide que le remplissage de la file d'attente par les cycles lecture du bus .
R. GRISEL
AL BL CL DL
ACCUMULATEUR BASE COMPTAGE DONNEES POINTEUR DE PILE POINTEUR DE BASE INDEX DE SOURCE INDEX DE DESTINATION POINTEUR D'INSTRUCTION
Indicateurs d'tat ZF AF PF CF
CS DS SS ES
R. GRISEL
Les registres de travail : Ce sont les registres avec lesquels peuvent tre effectues les additions , soustractions et oprations logiques , la deuxime oprande tant obtenue par l'un des modes d'adressages du microprocesseur . Chacun de ces registres a des fonctions particulires : Les registres de base et d'index : BX , BP , SI , DI Le contenu de ces registres peut tre utilis comme adresse mmoire ( voir modes d'adressage du 8086 ) . Les deux index permettent la gestion de suite de mots; il s'agit de l'index de destination ( DI ) et de l'index de source ( SI ) . Le registre BP ( base pointer ) sert la gnration des adresses des donnes . Le pointeur de pile : SP Le 8086/8088 gre une pile utilise pour les sous programmes et servant sauvegarder les donnes de l'utilisateur. Les registres gnraux : AX , BX , CX , DX Ils sont au nombre de 4 et peuvent travailler par moiti (8 bits). Ils ont pour appellation : - L'accumulateur : AX compos de AH et de AL. Les multiplications, les divisions, les traitements de chanes, les transferts entres-sorties, la conversion en BCD du rsultat d'une opration arithmtique se font tous par son intermdiaire . - Base : BX compos de BH et de BL. Ce registre sert l'adressage en mmoiredonnes. - Le compteur : CX compos de CH et de CL, est utilis en compteur lors des instructions de boucles , dont les traitements de chanes. Le registre CL est utilis en compteur lors des instructions de dcalages et de rotations multiples (sur plusieurs bits) . - Le registre de donnes : DX compos de DH et de DL. Ce registre des utilisations particulires, par exemples : * extension 32 bits pour les multiplications et les divisions de mots . * reste d'une division de mots ( AX contient le quotient ) . * en registre d'adresses d'entres sorties .
R. GRISEL 8
Les registres de contrle du programme : - Le pointeur d'instruction "IP" : Ce registre est mis jour par le BIU afin qu'il pointe vers l'adresse de l'instruction suivante. Les programmes n'ont pas d'accs direct au pointeur d'instruction, mais au cours de l'excution d'un programme, ce registre peut tre modifi ou bien sauvegard, puis restaur par la pile. - Le registre d'tat "FLAGS" : Le 8086 dispose de neuf indicateurs d'tat un bits, (voir figure suivante). (Les indicateurs TF, DF et IF ont un usage particulier). Les indicateurs d'tat sont mis jour par l'EU suite au rsultat d'une opration arithmtique ou logique.
Indicateurs de commande
Indicateurs d'tat OF SF ZF AF PF CF
TF
DF
IF
CF : RETENUE PF : PARITE AF : RETENUE AUXILIAIRE ZF : ZERO SF : SIGNE OF : DEBORDEMENT IF : VALIDATION D'INTERRUPTION DF : DIRECTION TF : PIEGE
R. GRISEL
CF ( carry flag ) : indicateur de retenue . PF ( parity flag ) : indicateur de parit . AF ( auxiliary flag ) : indicateur de retenue auxiliaire . La retenue auxiliaire est la retenue gnre par les 4 bits de poids faible du rsultat d'une opration arithmtique . Elle permet de coder le rsultat sous forme BCD . ZF ( zro flag ) : indicateur de zro . SF ( sign flag ) : indicateur de signe. TF ( trap flag ) :indicateur de mode pas pas . Si TF=1 une interruption est gnre aprs excution de chaque instruction du programme . Il permet la mise au point du logiciel sans gestion externe. Chaque instruction est interrompue par une exception de type pas pas afin d'aller excuter , la fin de chaque instruction un sous programme d'aide la mise au point ( debug exception ). Ce bit ne peut tre modifi que par l'intermdiaire de la pile . Lorsqu'on entre dans le programme de pas pas, le registre des indicateurs est sauvegard et le bit TF est automatiquement remis zro afin d'empcher le programme pas pas d'tre effectu lui mme en mode pas pas. Au retour, le registre des indicateurs est restitu et ainsi le bit TF se retrouve de nouveau positionn. IF (interrupt flag) : indicateur d'autorisation d'interruption . Cet indicateur autorise (IF=1) ou interdit (IF=0) les interruptions externes demandes sur la broche INTR du circuit . DF (direction flag) : indicateur de direction . C'est le sens de progression des registres d'index SI et DI lors des instructions de traitements de chanes . DF=1 adresses dcroissantes, DF=0 adresses croissantes OF (overflow flag) : Le flag d'overflow est ncessaire en arithmtique signe (complment A 2), dans ce cas le bit de plus fort poids (le huitime ou le seizime) est le bit de signe et OF indique un dpassement de calculs.
R. GRISEL
10
Signaux du 8086
GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32
VCC (+ 5 V 5 %) AD 15 A16 / S3 A17 / S4 A18 / S5 A19 / S6 /BHE / S7 MN / /MX /RD HOLD HLDA /WR M / /IO DT / /R /DEN ALE /INTA /TEST READY RESET
31 30 29 28 27 26 25 24
8086
31 30 29 28 27 26 25 24 23 22 21
/RQ / /GTO /RQ / /GT1 /LOCK /S2 /S1 /S0 QS0 QS1
R. GRISEL
11
Les lignes adresses et donnes du 8086 sont multiplexes de manire conomiser le nombre de broches. Ce bus peut tre utilis directement en tant que bus local sur des petits systmes. En rgle gnrale le bus sera dmultiplex pour fournir des bus de donnes et d'adresses indpendants. Ceci est ralis par de simples latchs commands par le signal ALE (adress Latch Enable). De plus cela offre l'intrt de bufferiser les lignes adresses et donnes (la sortance du 8086 tant limite). Le signal ALE est gnr directement par le 8086 en mode minimum , et par son contrleur de bus 8288 en mode maximum. Chaque cycle d'accs au bus comporte 4 priodes d'horloge (T1 T4) auxquelles peuvent s'ajouter des priodes d'attente Tw (wait states) insres entre T3 et T4. La figure suivante donne le cycle de base du 8086. Pendant T1 , le processeur met l'adresse sur le bus. Les transferts de donnes ont lieu pendant les cycles T3 et T4. Le cycle T2 permet essentiellement les changements de direction de bus pour les oprations de lecture. Des tats Wait sont rajouts entre T3 et T4 tant que le signal READY est 0 . La rgularit des accs au bus est due l'indpendance entre BIU et EU. Le processeur utilise 3 cycles pour son organisation interne; ainsi le bus n'est pas constamment utilis par le 8086. Les priodes situes entre deux cycles d'accs au bus sont appeles inactives ou idle.
R. GRISEL
12
ADR
ADR/STA
ADR/DATA
RD/WR
R. GRISEL
13
S4 0 0 1 1
S3 0 1 0 1
DS (Data segment)
R. GRISEL
15
R. GRISEL
16
QS1 0 0
QS0 0 1
Etat de la file d'attente ou action de l'unit d'excution. Etat inchang. Aucun octet n'est lu dans la file d'attente. Dcodage du premier octet d'une instruction dans la file d'attente. File d'attente vide, suite un saut dans le programme, ou au dcodage de tous les octets s'y trouvant, avant que l'unit d'interface bus ne lise les instructions suivantes. Dcodage de l'octet suivant d'une instruction (autre que le premier).
R. GRISEL
17
FFFFFH
00000H
R. GRISEL
18
Y+1 X+1
Y X
/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 0 0 1 1 0 1 0 1
Donne slectionne. Le mot de 16 bits (adresse paire). L'octet sur le bus D8-D15 (adresse impaire). L'octet sur le bus D0-D7 (adresse paire). aucune.
R. GRISEL
20
Y+1 X+1
Y X
/BHE=0
A19 - A1
D15 - D8
D7 - D0
A0=0
R. GRISEL
21
Y+1 Y X X+1
A19 - A1
D15 - D8
/BHE=0
D7 - D0
A0 =1
R. GRISEL
22
Y+1 Y X X+1
A19 - A1
D15 - D8
/BHE=1
D7 - D0
A0 =0
R. GRISEL
23
CS DS SS ES
Mot de 8 bits Dplacement 64 Koctets
00000H
R. GRISEL
64 Koctets
64 Koctets
24
Remarque
L'accs au 32 K-mots d'entres-sorties n'est rfrenc dans aucun segment. Les adresses physiques sont celles spcifies directement par le programmeur.
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 Dplacement dans le segment 4 3 2 1 0 0
19
19 Adresse physique
R. GRISEL
26
Exemple numrique : registre de segment = A400H et dplacement 1010H. L'adresse physique sera gale A5010.
+ =
0 A A
1 4 5
0 0 0
1 0 1
0 0 0
Dplacement Segment
R. GRISEL
27
R. GRISEL
28
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
Adressage bas ( registre de base : BX et BP ) L'adresse est dtermine par : base BX : le contenu de BX, auquel est ventuellement ajout un dcalage sur 8 ou 16 bits sign, reprsente le dplacement dans le segment DS ( par dfaut ) . base BP : le contenu de BP, auquel est ajout ( toujours ) un dcalage sur 8 bits ou 16 bits sign, reprsente le dplacement dans le segment SS ( par dfaut ) . d'o les cinq possibilits : dplacement = ( BX ) dplacement = ( BX ) + octet de dcalage dplacement = ( BX ) + mot de dcalage dplacement = ( BP ) + octet de dcalage dplacement = ( BP ) + mot de dcalage MOV ES , TABLE [BP] ralise le transfert de ((BP) + TABLE) vers (ES) dans le segment SS.
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
Index
(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)
R. GRISEL
FFFFH LIBRE
LIBRE 80H 7FH RESERVE 14H 13H 0H RESERVE LIBRE 100H FFH F8H F7H 0H
UTILISE
Mmoire
R. GRISEL
I/O
37
Les instructions du programme sont pointes par le pointeur d'instruction IP dans le segment CS . Deux catgories de saut sont distinguer : - saut l'intrieur du mme segment , dit intra-segment : CS n'est pas modifi . - saut l'extrieur du segment , dit inter-segment : CS est modifi.
R. GRISEL
38
R. GRISEL
39
15 Pointeur d'instruction IP
15 Pointeur d'instruction IP
15 Extension de signe 15
Pour lindirect, le pointeur d'instruction est charg par un nombre de 16 bits. Ce nombre est soit le contenu de l'un des registres de travail 16 bits, soit le contenu d'un mot mmoire adress par l'un des modes d'adressage dcrit prcdemment. JMP AX JMP TABLE[BX]
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 Mise un du bit smaphore Lecture du mme registre d'tat
Accession la ressource
non
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 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
R. GRISEL