Vous êtes sur la page 1sur 15

MICROPROCESSEUR 16 BITS (LE 8086 DE INTEL)

R. GRISEL

Objectifs
- Architecture gnrale - Cycle daccs au bus - Organisation de la mmoire - Modes dadressages

R. GRISEL

Caractristiques gnrales du 8086


- Microprocesseur 16 bits avec une architecture issue de celle du 8080. - Il prsente une capacit d'adressage tendue (24 modes). - Jeu d'instructions trs puissant (multiplication et division cbles). - Il utilise pour ladressage des segments spcialiss (transportabilit). - Il peut fonctionner soit en mode minimum, soit en mode maximum. - La mmoire de un Mo est vu comme un bloc de 512 Kilo-mots. - les bus dadresses et de donnes sont multiplexs. - Lespace mmoires des E/S est spar du reste de la mmoire. - Il est totalement compatible avec le microprocesseur 8088. - Il prsente 1 entre dinterruption logicielle et 2 entres matrielles. - Il dispose de circuits d'interface ou de traitements spcialiss. - Peut reprendre les circuits priphriques des microprocesseurs 8 bits.

R. GRISEL

Architecture interne du 8086


Unit d'excution ( UE) Unit d'interface de bus ( UIB)
gnration d'adresses

AX BX CX DX

AH BH CH DH SI DI SP BP

AL BL CL DL

CS DS SS SS Compteur d'instructions

20 bits Buffer du bus

Registres gnraux

bus interne 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

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

Les registres du 8086


AH BH CH DH SP BP SI DI IP
Indicateurs de commande TF DF IF OF SF

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

CF : RETENUE PF : PARITE AF : RETENUE AUXILIAIRE ZF : ZERO

SF : SIGNE OF : DEBORDEMENT IF : VALIDATION D'INTERRUPTION DF : DIRECTION TF : PIEGE

CS DS SS ES

SEGMENT DE CODE SEGMENT DE DONNEES SEGMENT DE PILE SEGMENT SUPPLEMENTAIRE

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

Cycle d accs au bus systme


T1 ALE T2 T3 Tw Ready=0 T4 T1

ADR

ADR/STA

ADR/DATA

RD/WR

R. GRISEL

13

Modes de fonctionnement du 8086


Mode minimum : le 8086 gnre lui mme les 3 bus, donnes, adresses et contrle. Le bus de contrle est un bus simplifi convenant un environnement monoprocesseur. Ce mode ne permet pas l'utilisation de co-processeurs ou de processeurs spcialiss. Il n'est pas adapt des architectures multiprocesseurs. Mode maximum : le 8086 gnre les signaux d'tat. Le contrleur de bus dcode ces signaux pour gnrer un bus de contrle compatible avec les spcifications multibus. Les signaux S0, S1 et S2 sont utiliss pour identifier le type d'accs. S3 et S4 indiquent quel registre segment est utilis pour la gnration de l'adresse physique. S5 est l'image du bit dinterruption, S6 est toujours 0 et S7 est un bit rserv.
R. GRISEL 14

Mode maximum / segment

S4 0 0 1 1

S3 0 1 0 1

Registre de segment concern ES (Extra segment) SS (Stack segment)


CS (Code segment) ou transfert avec les entres-sorties, ou lecture d'un vecteur d'interruption.

DS (Data segment)

R. GRISEL

15

Mode maximum / bus de contrle


/S2 0 0 0 0 1 1 1 1 /S1 0 0 1 1 0 0 1 1 /S0 0 1 0 1 0 1 0 1 Action du microprocesseur Acquittement d'interruption masquable Lecture d'une donne entres-sorties Ecriture d'une donne entres-sorties Arrt par une instruction HLT Lecture d'instruction Lecture d'une donne mmoire Ecriture d'une donne mmoire inactif Sortie du 8288 correspondante /INTA /IORC /IOWC aucune /MRDC /MRDC /MWTC aucune

R. GRISEL

16

Mode maximum / file d instruction

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

Organisation logique de la mmoire


La mmoire est organise en 512 K-mots de 16 bits, rangs avec l'octet de poids fort l'adresse la plus haute de la manire suivante.

FFFFFH

Octet de poids fort Octet de poids faible

Mot de 16 bits XXXXXH adresse du mot

00000H

R. GRISEL

18

Organisation physique de la mmoire


Elle est divise physiquement en deux bancs de 512 K-octets : la mmoire paire (ou faible) et la mmoire impaire (ou fort).
Mmoire "impaire" Mmoire "paire"

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

Accs 16 bits une adresse paire


Mmoire "impaire" Mmoire "paire"

Y+1 X+1

Y X

/BHE=0

A19 - A1

D15 - D8

D7 - D0

A0=0

R. GRISEL

21

Accs 16 bits une adresse impaire


PREMIER TEMPS Mmoire "impaire" Mmoire "paire"

Y+1 Y X X+1

A19 - A1

D15 - D8

/BHE=0

D7 - D0

A0 =1

R. GRISEL

22

Accs 16 bits une adresse impaire


DEUXIEME TEMPS Mmoire "impaire" Mmoire "paire"

Y+1 Y X X+1

A19 - A1

D15 - D8

/BHE=1

D7 - D0

A0 =0

R. GRISEL

23

Les mcanismes d adressages


7 Mmoire 1 Moctets 0 FFFFFH
64 Koctets

CS DS SS ES
Mot de 8 bits Dplacement 64 Koctets

Mot de 16 bits Dplacement

octet fort octet faible

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

Les modes d adressages


Le code excutable d'un programme est toujours points par le contenu du registre IP par rapport au contenu du registre CS (CS:IP). Les donnes stockes en pile de sauvegarde sont toujours pointes par le contenu du registre SP par rapport au contenu du registre SS (SS:SP). Les positions mmoires reprsentant des donnes sont pointes par une adresse effective AE par rapport au contenu d'un segment qui dpend de la composition de ladresse effective. Les donnes manipuler peuvent tre dans des registres, dans la mmoire, dans la pile ou spcifies immdiatement dans linstruction (modes dadressage des donnes).

R. GRISEL

28

Les modes d adressages


1) Adressage des registres Concerne tout transfert ou toute opration, entre deux registres de mme taille, ou sur un registre. MOV SI , CX (CX) vers (SI) (16 bits) ADD DH,AL Transfert de (DH) + (AL) vers (DH) (8 bits) 2) Adressage de la mmoire Il y a 24 possibilits en tout. C'est ce qui permet le calcul du dplacement dans le segment (encore nomm AE) et le segment concern par dfaut par le mode d'adressage. Adressage direct Le dplacement est donn directement par le programme , et se fait dans le segment DS ( par dfaut ) . Dplacement = mot de 16 bits . Soit le registre de segment DS = 1200H et le dplacement = 0081H (= VARIABLE). l'instruction : MOV BP , VARIABLE ralise le transfert de VARIABLE (dans le segment DS) vers ( BP ).
R. GRISEL 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

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

Les modes dadressages avec index


Adressage index (registre d'index : SI et DI) Le contenu du registre d'index ( SI ou DI ) , auquel est ventuellement ajout un dcalage sur 8 ou 16 bits sign , reprsente le dplacement dans le segment DS ( par dfaut ), d'o les six possibilits suivantes : dplacement = ( SI ) dplacement = ( SI ) + octet de dcalage dplacement = ( SI ) + mot de dcalage dplacement = ( DI ) dplacement = ( DI ) + octet de dcalage dplacement = ( DI ) + mot de dcalage MOV VECTEUR[SI] , AL ralise le transfert de (AL) vers ((SI) + VECTEUR dans le segment DS).

R. GRISEL

32

Adressage bas index


Le dplacement est dtermin par la somme du contenu du registre BX ou BP et dun des registres dindex SI ou DI, auquel est ventuellement ajout un dcalage sur 8 ou 16 bits sign. DS et SS sont pris par dfaut. Base BX : la somme des contenus du registre BX et d'un des registres d'index (SI ou DI), laquelle est ventuellement ajout un dcalage sur 8 ou 16 bits sign, reprsente le dplacement dans le segment DS ( par dfaut ) . Base BP : la somme des contenus du registre BP et d'un des registres d'index (SI ou DI), laquelle est ventuellement ajout un dcalage sur 8 ou 16 bits sign, reprsente le dplacement dans le segment SS (par dfaut) . D'o 12 les possibilits suivantes : dplacement = ( BX ) + ( SI ), dplacement = ( BX ) + ( SI ) + octet de dcalage dplacement = ( BX ) + ( SI ) + mot de dcalage, dplacement = ( BX ) + ( DI ) dplacement = ( BX ) + ( DI ) + octet de dcalage, dplacement = ( BX ) + ( DI ) + mot de dcalage dplacement = ( BP ) + ( SI ), dplacement = ( BP ) + ( SI ) + octet de dcalage dplacement = ( BP ) + ( SI ) + mot de dcalage, dplacement = ( BP ) + ( DI ) dplacement = ( BP ) + ( DI ) + octet de dcalage, dplacement = ( BP ) + ( DI ) +mot de dcalage XCH SP , TABLE[BP][SI] ralise le transfert de (SP) vers ((BP)+(SI) + TABLE dans le segment SS), et le transfert de ((BP)+(SI) + TABLE dans le segment SS) vers (SP).

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

Les modes d adressages


Type d'adressage Direct Bas Obtention du dplacement dans le segment donn directement par le programme (BX) (BX) + dcalage (octet ou mot) (BP) + dcalage (octet ou mot) (SI) (SI) + dcalage (octet ou mot) (DI) (DI) + dcalage (octet ou mot) Segment concern par dfaut DS DS DS SS DS DS DS DS DS DS DS DS SS SS SS SS
35

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

L adressage des entres-sorties


Les entres sorties sont situes dans un espace d'adressage indpendant de la mmoire. Iles ne font l'objet d'aucune segmentation. Deux possibilits sont utilises. Adressage direct : l'adresse du port est donne directement par le programme. On n'accde qu'aux 256 premiers octets, ou aux 128 premiers mots d'entres sorties. IN AX , 0A8H OUT 0A8H , AL Adressage par registre : l'adresse du port est contenue dans le registre DX. On accde alors aux 64 Ko, 32 K-mots, d'entres sorties . OUT DX , AL IN AX , DX
R. GRISEL 36

FFFFFH RESERVE UTILISE FFFFCH FFFFBH FFFF0H FFFEFH

FFFFH LIBRE

LIBRE 80H 7FH RESERVE 14H 13H 0H RESERVE LIBRE 100H FFH F8H F7H 0H

UTILISE

Mmoire
R. GRISEL

I/O
37

Ladressage des sauts de programme

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

L adressage des sauts de programme


Saut intra-segment : Saut conditionnel : L'adressage est dit relatif au pointeur d'instruction : cela consiste ajouter au pointeur d'instruction IP un nombre de 8 bits , dont le signe est tendu sur 16 bits. Ce nombre est le dplacement dans le programme ( pas dans le segment ). Ce genre est limit : - 127 octets en avant , - 128 octets en arrire . Exemple : - JBE INF_EGAL - JNA NON_SUP - JE EQUAL Saut inconditionnel : Le saut peut aussi tre inconditionnel. Dans ce cas, l'adressage est soit relatif, soit indirect. Dans le cas du relatif, le nombre ajout au pointeur d'instruction est un octet, ou un mot, qui permet alors de couvrir tout le segment.

R. GRISEL

39

15 Pointeur d'instruction IP

15 Pointeur d'instruction IP

15 Extension de signe 15

8 7 Dplacement dans le programme

15 Dplacement dans le programme

0 Nouveau pointeur d'instruction IP

15 Nouveau pointeur d'instruction IP

JMP SHORT NEAR-LABEL ( +127 -128 octets )

JMP NEAR-LABEL ( +32767 -32768 octets )

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

L adressage des sauts de programme (2)


Saut inter-segment : Ce saut est exclusivement inconditionnel. L'adressage doit fournir les valeurs charger dans le pointeur d'instruction IP et dans le registre de segment CS. Il peut tre direct ou indirect. Adressage direct Le dplacement (destin IP) et le segment (destin CS) sont donns directement par le programme . - JMP addr; addr sur 4 octets. - JMP FAR_LABEL Adressage indirect Le dplacement et les segments sont les contenus de deux mots mmoires conscutifs . L'adressage se fait par l'un des modes dcrits pour l'adressage de la mmoire. - JMP DWORD PTR [BP][DI]

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

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 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