• Aucun résultat trouvé

aièe aie e

N/A
N/A
Protected

Academic year: 2022

Partager "aièe aie e "

Copied!
9
0
0

Texte intégral

(1)

Le langage mahine du

miroproesseur 8088 : instrutions

fondamentales

(2)
(3)

Les instrutions de transferts

Nousavonsvuquelquesinstrutionsdetransfertdanslehapitrepréédentdefaçonàpouvoir

donnerunpremierprogrammeonret.Cependanttouteslespossibilitésdetransfertn'ontpas

étéexplorées.Nousallonspoursuivrel'explorationdestransfertspossiblesdansehapitre,sans

en voir toutes les possibilités (en partiulier sur l'adressage indexé, que nous aborderons au

hapitre23).Commençons,avantela,parleprinipedustokagedesmots.

13.1 Prinipe du stokage des mots hez Intel

Un mot(deseizebits)estonstituédedeuxotets:unappelé otetde poids fort(MSB

pour l'anglais Most Signiant Byte) et l'autre otet de poids faible (LSB pour l'anglais

LeastSigniantByte).Ladénominationprovientdeeque,lorsqueemotreprésenteunentier

naturel,onveutque:

val ( w ) = 256 × val ( M SB ) + val ( LSB ) .

Commentoder

w

:parMSBLSBouparLSB MSB?Ils'agitd'unevieilledisussionentre informatiiens,labatailledespetitsboutiens(littleendianenanglais)ontrelesgrandsboutiens

(greatendian enanglais),parréféreneauxVoyages deGulliver deDanielDefoedanslesquels

ondisuteommentasserun÷ufpourlegober: parlegrandboutoulepetitbout.

Cela dépend desonepteurs demiroproesseur. Intela hoisi l'ordreLSB MSB,qui n'est

pasnéessairementl'ordreauquelonpourraits'attendre.

Ilyadondeuxfaçonsdestokerunmotdedeuxotets,disonsAB,àl'adresse

n

: LatehniquepetitboutienneplaeBàl'adresse

n

etAàl'adresse

n + 1

.

LatehniquegrandboutienneplaeAàl'adresse

n

et Bàl'adresse

n + 1

.

Tous les miroproesseurs Intel et plusieurs mini-ordinateurs, tels que les VAX de Digital,

utilisentlatehniquepetitboutienne.LesmiroproesseursMotorola(utilisésdanslespremiers

Maintosh)et lesgrandssystèmes utilisentlatehniquegrandboutienne.

Remarque.-Cettediérenedansleodagedesmotsposeunproblèmepourtraduireunlogiiel

d'unsystèmeàl'autre.

(4)

13.2 Autres instrutions de transfert

13.2.1 Classiation des instrutions de transfert

La modélisation desordinateurs quenous avonsdonnéei-dessusnous onduitàdistinguer

quatretypesd'instrutionsdetransfert :

l'initialisationd'unregistrequipermetdedonnerdiretementunevaleuràunregistre;

lestransfertsentreregistresquipermettentdetransférerunevaleurd'unregistredans

unautre;

lesaès à la mémoirevivequi omprennent,d'unepart,l'initialisationd'unélément

demémoireviveet,d'autrepart,le transfert d'unevaleurd'un registreversunélément

demémoirevive,ouvie-versa;

lesentrées-sortiesqui permettentde transférer une valeurd'un registreversun péri-

phérique,ouvie-versa.

Nous avonsdéjà vu l'initialisation d'un registregénéral, le transfert entre registreset l'ini-

tialisation d'un élément de mémoire vive. Nous étudierons les entrées-sorties dans le hapitre

suivant.Voyonsdansehapitrelesautrestypesdetransfert.

(5)

13.2.2 Stokage du ontenu de l'aumulateur dans un élémentde mé-

moire vive

Langagesymbolique.- L'instrution destokageduontenude l'aumulateurdans unélément

demémoirevives'érit:

MOV [dealage℄, A

oùA désignel'undes registresAL ouAXet dealagele déalagedel'adresse, qui est unentier

deseizebits.Lesegmentpardéfaut estlesegmentdedonnées.

Sémantique.-Lasigniationdeetteinstrutionestlaopieduontenudel'aumulateurdans

l'élémentdemémoirevived'adressespéiée.

Langagemahine.-Cetransfertseodesurtroisotets:

| opode | faible | fort |

oùfaibleestl'otetdepoidsfaibledudéalagedel'adresse,fortl'otetéventueldepoidsfort

etopodeest :

1010 001w

ave,évidemment,wégalà0pourALet à1pourAX,soitA2houA3h.

Exerieorrigé.-Traduire l'instrution:

MOV [A900h℄, AX

en langagemahine.

Nous prendrons à partir de maintenant la onvention debug pour le langage symbolique,

qui onsisteàérire touslesentiers en hexadéimal. D'aprèse quenous venonsde dire,ette

instrutionsetraduitparlestroisotets:

| 1010 0011 | 0000 000 | 1010 1001 |

enbinaire,soitA300A9h.

Voabulaire.-Ilesttraditionneldeparlerd'adressagediret,d'adressageabsoluoud'adres-

sageétendudansleasdeopieentreaumulateuret mémoire.

(6)

13.2.3 Chargement d'unélémentdemémoirevivedans l'aumulateur

Langagesymbolique.- L'instrution de hargement d'un élément de mémoirevive dans l'au-

mulateurs'érit:

MOV A, [dealage℄

oùA désignel'undes registresALou AXet dealagele déalagede l'adresse,qui est unentier

deseizebits.Lesegmentpardéfautestlesegmentdedonnées.

Sémantique.-Lasigniationdeetteinstrutionestlaopieduontenudel'élémentdemémoire

vived'adressespéiéeversl'aumulateur.

Langagemahine.-Cetransfert seodesurtrois otets:

| opode | faible | fort |

oùfaibleestl'otetdepoidsfaibledudéalagedel'adresse,fortl'otetéventueldepoidsfort

et opodeest:

1010 000w

ave,évidemment,wégalà0pourALet à1pourAX,soitA0houA1h.

Exerieorrigé.-Traduirel'instrution :

MOV AX, [A900℄

en langagemahine.

D'aprèsequenousvenonsdedire,ette instrutionseodeparlestrois otets:

| 1010 0001 | 0000 000 | 1010 1001 |

enbinaire,soitA100A9h.

(7)

13.2.4 Transfert entre registres ou registre et ase mémoire

Langagesymbolique.- L'instrution detransfert entre registresouregistreet asemémoires'é-

rit:

MOV destination, soure

equi nenousapprend pasgrandhose.

Langagemahine.-Cetteinstrutionseodepardeuxotetsdansleasderegistresetpardeux

ouquatreotetsdansleasd'uneasemémoire:

| 1000 10dw | mod reg r/m | | |

Danslepremierotet d'opode,lebit d(pour Destination)est égalà1si ladestination

est un registre général : elui-i est alors spéié par le hamp reg du deuxième otet

d'opode.Lebitwestégalà0pourletransfertd'unotetetà1pourletransfertdedeux

otets(un mot).

Le deuxième otet du ode opération, que nous retrouverons souvent, spéie le mode

d'adressageetleoulesregistresonernés:

Lestroisbitsduhampregspéientleregistredansleasd'untransfertentreregistre

etasemémoireet leregistrededestinationdansleasd'untransfertentreregistres.

Lasigniationdeehampestdéterminéeparletableau,déjàrenontré,delagure

12.1.

lesdeuxbitsduhampmodet lestrois bitsduhampr/mspéientlemoded'adres-

sage:

Simod = 11,ils'agitd'untransfertentreregistresgénéraux:lehampr/mspéie

leseondregistresuivantletableaudelagure12.1.

Si mod = 00, on a un transfert entre registre et ase mémoire (rappelons que le

sensest déterminé par le bit d du premier otet), l'adresse eetive AE de la

asemémoire étantspéiée par r/msuivant le tableau de lagure 13.1. Seul le

asr/m = 110nousintéresserapourl'instant.Danseas,ledéplaement(sur16

bits)doitêtrespéiépardeuxotetssupplémentaires.Nousétudieronslesautres

asplus tard;ontentons-nousdedire que, parexemple,[BX℄signie leontenu

duregistreBX.

r/m AE

000 [BX℄ + [SI℄

001 [BX℄ + [DI℄

010 [BP℄ + [SI℄

011 [BP℄ + [DI℄

100 [SI℄

101 [DI℄

110 déplaement

111 [BX℄

Figure13.1Modesd'adressagedu8088lorsquemod = 00

(8)

Les modes mod = 01 et mod = 10 ne nous intéresseront pas pour l'instant : le

déalageestlasommedeontenusderegistresetd'undéplaementspéiésurun

oudeuxotets.

Exerieorrigé1.-Traduirel'instrution:

MOV BX, AX

en langagemahine.

D'aprèsequenousvenonsdedire, etteinstrutionseodeparlesdeuxotetsreprésentés

enbinairepar:

| 1000 1011 | 11 011 000 |

soit8BD8h.

Voabulaire.-Ilesttraditionnel deparlerd'adressageimpliiteoud'adressage de registre

dansleasdeopieentreregistres.Lenomd'adressageimpliiteprovientdeequelesopérandes

(lesdeuxregistresonernés)nesontpasindiquésparunotetdistint:'estleoded'opération

quiontient(quiimplique)lesnomsdesregistresonernés.

Exerieorrigé2.-Traduirel'instrution:

MOV BX, [10h℄

en langagemahine.

D'aprèsequenousvenonsdedire,etteinstrutionseodeparlesquatreotetsreprésentés

enbinaire:

| 1000 1011 | 00 011 110 | 0001 000 | 0000 0000 |

soit8B1D1000h.

(9)

13.2.5 Choix du segment

Nousvenonsdevoirommenttransférerleontenudel'aumulateurenmémoire.Onspéie

ledéalage et,pardéfaut,le segmentest lesegmentDS desdonnées.Ils'agiteetivementdu

segmentleplusapproprié.Sien'estpasequel'ondésire,ilfautl'indiquerexpliitement.

Langagesymbolique.-L'instrutiongénéraledetransfertdel'aumulateuràunélémentdemé-

moirevives'érit:

MOV SEG:[dealage℄, A

où SEG est l'un des registres de segment CS ou SS, A désigne l'un des registres AL ou AX et

dealageledéalagedel'adresse,qui estunentierdeseizebits.

Langagemahine.- Dans e as, il faut faire prééder l'instrution par un otet spéiant le

segmentdésiré,appelépréxe de hangementde segment(override prex enanglais):

001 sreg 110

oùlesdeuxbitsduhampsregdésignentleregistredesegmentonformémentautableau,déjà

renontré,delagure12.2.

Exerieorrigé.-Traduire l'instrution:

MOV CS:[A900h℄, AX

en langagemahine.

Ilsut d'ajouterlepréxe001 01 110àl'instrutionquenousvenonsdevoir,equidonne

2EA300A9h.

13.3 Historique

Stephen Morse regrettedans [Edw-08℄ que,lors de laoneption dujeu d'instrutionsdu

8086,iln'aitpaspuhangerlefaitdeplaerl'otetdepoidsfaibleavantl'otetdepoidsfort,par

ompatibilitéavele8080.Ilexpliquel'originedelatehniquepetitboutiennedumiroproesseur

8008etdesesdesendants:undesbutsdu8008estdemimerleomportementd'unproesseur

onçu parDatapointdontlesbits arriventensérie, etnon enparallèle.Dansuntelproesseur,

ondoitvoirlesbitsdepoidsfaibleavantlesbitsdepoidsfortdefaçonàtraitereaementles

problèmesderetenue.

13.4 Bibliographie

[Edw-08℄ BenjEdwards,StephenMorse:Father ofthe8086Proessor,PCWorld,Jun17,

20087:00am.Disponibleenligne:

http://www.pworld.om/artile/146917/stephen_morse_father_of_the_

8086_proessor.html

Références

Documents relatifs

(pour Integer DIVision), où le dividende de 16 bits (resp. 32 bits) est plaé dans l'aumulateur. AX (resp. AX et DX, e dernier ontenant le mot de poids fort) et le diviseur de 8

Langage mahine.- Uun sous-programme peut se trouver dans le même segment que le programme. qui l'appelle : la valeur du registre IP est alors hangée mais il est inutile de

de la routine de servie de l'interruption se trouve à l'adresse 4 × n pour le type n : les deux otets de IP se trouvent à l'adresse 4 × n et les deux otets de CS à l'adresse 4 × n +

Pour une valeur se trouvant à l'adresse (de mémoire vive) désignée par le ontenu d'uno. registre (de seize bits, puisque 'est la taille du déplaement), on indique le nom de

Langage mahine.- L'éhange peut avoir lieu entre registres ou registre et ase mémoire :.

Jusqu'à maintenant nous avons érit des programmes soit dans un langage évolué (omme le. langage C, Pasal,...), soit dans un

mode protégé : elle doit être égale à la valeur du segment de ode du mode réel (adresse hoisie.. Puisque nous sommes en mode réel, l'adresse physique est égale au ontenu du

Cei doit être eetué à partir d'une page pour laquelle les adresses virtuelles sont. égales aux adresses physiques ( hh identity mapped ii