Vous êtes sur la page 1sur 5

BTS IG1 - Architecture matrielle

Les modes d'adressage


Rappel des reprsentations tablies pour le stockage des instructions et donnes dans la
mmoire centrale.
Nous avons dit, lors des chapitres prcdents, que les instructions du programme et les
donnes qu'il traitait se trouvaient stockes, lors de l'excution de ce programme, dans la
mmoire centrale. Ces instructions et ces donnes reprsentent donc des ensembles de cellules
mmoire, ensembles que l'on traduit souvent sous le terme de segment. On peut dfinir un
segment de programme et un segment de donnes.
Nous avons galement prsent la mmoire centrale comme tant un ensemble de cases (ou
cellules) de rangement contenant chacune un mot mmoire de taille dtermine (16 ou 32 bits).
De mme, nous avons prsent le bus d'adresses sur lequel circulent les adresses des
instructions ou des donnes trouver en mmoire.
Dans la ralit ce n'est pas tout fait aussi simple. Une instruction n'est pas en gnral
contenue sur un seul mot mmoire. Les adresses circulant sur le bus d'adresses ne sont pas
toujours les adresses relles des informations dans la mmoire. On rencontre ainsi diverses
techniques permettant de retrouver l'adresse physique de l'information (instruction ou donne)
dans la mmoire, techniques regroupes sous l'appellation de modes d'adressage.
Ces divers modes d'adressage, qui sont en principes transparents pour le programmeur tant
qu'il ne travaille pas en langage d'assemblage (langage machine), ont pour but de lui rendre
plus facile l'emploi des donnes. D'une manire gnrale on peut distinguer 7 modes
d'adressage :
adressage implicite,
adressage immdiat,
adressage absolu,
adressage relatif,
adressage index,
adressage indirect,
adressage symbolique.
Rappel de la reprsentation de la composition d'une instruction.

I.

Adressage immdiat

Il ne s'agit pas d'un adressage proprement parler, dans la mesure o la partie adresse de
l'instruction ne contient pas d'adresse de l'oprande mais bel et bien l'oprande lui mme.
Exemple : ADD A,1B : additionne la valeur 1B la valeur contenue dans l'accumulateur. Ceci
est diffrent de l'addition entre la valeur contenue l'adresse 1B et la valeur contenue dans
l'accumulateur.

-1-

BTS IG1 - Architecture matrielle

II.

Adressage implicite (adressage par registre)

On dit qu'un mode d'adressage est implicite quand l'instruction concerne ne contient pas
explicitement l'adresse de l'oprande sur lequel elle travaille. A la place, la zone adresse
(appele aussi zone oprande) dsigne un registre (registre qui est souvent le registre
accumulateur).
Le nombre de registres disponibles sur un microprocesseur tant gnralement relativement
faible, il suffira d'un petit nombre de bits pour le dsigner. Ainsi, de telles instructions pourront
tre codes sur 8 bits ce qui constitue un avantage, une instruction 8 bits tant gnralement
plus rapidement traite qu'une instruction de taille suprieure.
Exemple : LD A,C : transfre le contenu du registre C dans le registre accumulateur. Les
instructions travaillant uniquement sur les registres utilisent l'adressage implicite.
A

C
123

III.

123

Adressage absolu (adressage direct)

L'adressage est dit absolu, quand le code opration est suivi de l'adresse relle physique de
l'oprande sur lequel travaille l'instruction.
Exemple : LD (F800),A : cette instruction va ranger le contenu du registre accumulateur
l'adresse absolue F800.

IV.

Adressage indirect

Un adressage est dit indirect s'il permet d'accder, non pas l'information recherche, mais
un mot mmoire dans lequel on trouvera l'adresse effective de l'information. Ce type
d'adressage est assez utile dans la mesure o le code gnr tient en rgle gnrale sur un seul
octet.
Exemple : ADD A,(HL) : cette instruction va ajouter au contenu de l'accumulateur la donne
de trouvant l'adresse cite dans le registre HL. Ainsi, si le registre HL contient la valeur F800,
on ajoutera A la donne contenue l'adresse F800.
Schma sur la diffrence entre l'adressage direct et indirect.
LOAD R1,direct 1000
LOAD R1,indirect 1000 (1000 qui contient 1500)

-2-

BTS IG1 - Architecture matrielle

V.

Adressage relatif

Une adresse relative n'indique pas en valeur absolue l'emplacement de l'information en


mmoire, mais la situe par rapport une adresse de rfrence (dplacement ou offset). Cette
adresse de rfrence tant normalement contenue par le registre PC (Compteur Ordinal).
L'avantage principal de ce mode d'adressage est qu'il permet des branchements efficaces en
utilisants les instructions qui tiennent sur deux mots seulement (un mot pour le code opration
et un mot pour la rfrence l'adresse) ; en fait la zone oprande ne contient pas une adresse
mais un dplacement relatif l'adresse de rfrence.
Ainsi une instruction avec adressage relatif va permettre un adressage en avant ou en arrire
dans la mmoire, ceci par rapport au contenu du compteur ordinal. Compte tenu de la taille
accorde au dplacement, celui ci ne pourra concerner qu'une partie de la mmoire. Ainsi avec
un dplacement cod sur 8 bits, on ne pourra adresser qu'une zone de 255 adresses mmoires
situes de part et d'autre du contenu courant du compteur ordinal.
Exemple : JR NC,025 : cette instruction va provoquer un saut en avant de 37 emplacements
mmoire si la condition No Carry (pas de retenue) est ralise.
On peut noter deux avantages ce types d'adressage :
d'une part l'amlioration des performances du programme (moins d'octets utiliss),
d'autre part la possibilit d'implanter le programme n'importe o en mmoire puisque l'on ne
considre que des dplacements par rapport au contenu du PC et non pas des adresses
absolues.

VI.

Adressage index

Dans la technique de l'adressage index, la valeur spcifie dans la zone adresse de l'instruction
est encore un dplacement mais cette fois ci non pas par rapport au compteur ordinal, mais par
rapport au contenu d'un registre spcialis : le registre d'index.
Exemple : ADD A,(IX+4) : cette instruction va ajouter au contenu de l'accumulateur la donne
se trouvant l'adresse fournie par le registre IX, augment d'un dplacement de 4 octets. Ainsi
si le registre IX contient la valeur F800, on prendra la donne se trouvant l'adresse F800+4
soit F804.
Considrons un bloc de n mots situs aux adresses A, ..., An et que l'on veut le dplacer aux
adresses B, ..., Bn.
Utilisons l'instruction MOVE A, B qu'il faudrait incrmenter de 1 n. => lourdeur.
C'est pourquoi, on peut utiliser ce mode d'adressage avec MOVE A, IX+k avec IX qui contient
l'adresse B et k que l'on peut incrmenter de 1 n.

VII.

Adressage symbolique

Ce mode d'adressage permet au programmeur d'affecter chaque zone un mot symbolique de


son choix. Ces mots appels tiquettes ou labels rpondent certaines rgles dfinies par le

-3-

BTS IG1 - Architecture matrielle

constructeur. Ils sont associs lors de la phase d'assemblage (passage d'un code mnmonique
en un code machine excutable) des adresses absolues de la mmoire.
Exemple : JP NC,ETIQ1 : ETIQ1 est un nom symbolique se situant un endroit prcis du
programme auquel a t associe une adresse absolue. Le branchement (ici conditionn par un
no carry) s'effectuera donc l'adresse absolue associe cette tiquette.

Exercice n1
Soit le programme suivant :
@ D532 : LD A, F800
@ 753 : ADD A, F810
@ C22 : LD F820, A
1- Quel mode d'adressage utilise-t-il ?
2- Rcrire ce programme en utilisant l'adressage relatif.
3- Rcrire ce programme en utilisant l'adressage index : le registre IX contient la valeur B31.
1On ne peut pas rpondre tant donn que F800, F810 et F820 peuvent tre soit des
valeurs de donnes (adressage immdiat) soit des adresses directes (adressage direct),
indirectes (adressage indirect) ou des dplacements par rapport l'adresse de rfrence
contenue dans le compteur ordinal (adressage relatif). De plus, ces diffrents types d'adressage
peuvent tre mlangs au sein du mme programme.
2-

(@ D532) : LD A, 22CE
(@ 753) : ADD A, F0BD
(@ C22) : LD EBFE, A

3-

(@ D532) : LD A, ECCF
(@ 753) : ADD A,ECDF
(@ C22) : LD ECEF, A

Exercice n2
Que fait le programme suivant sachant qu'il utilise le mode d'adressage relatif ?
LD A, 7F
(@ 10) => LD A, 8F
ADD A, 8C (@ 11) => ADD A, 9D
SUB A, 65
(@
12) => SUB
A, 77
Mmoire
centrale
LD 7E, A
(@ 13) => LD 91, A
100

E4

E4

300

300

B4F

400

F212

A
7BB

22
Exercice n3
Soit la mmoire centrale et les registres reprsents comme suit :
200
780

-4-

IX
C

BTS IG1 - Architecture matrielle

Que font les 5 programmes suivants :


LD A, 200 (adressage immdiat)
ADD A, B4F (adressage direct)

A = 200
A = 200 + 300 = 500

LD A, 300 (adressage indirect)


ADD A, F212 (adressage direct)

A = 100
A = 100 + 400 = 500

@ 760 LD A, 20 (adressage relatif)


@ 150 ADD A, 150 (adressage relatif)

A = 200
A = 200 + E4 = 2E4

LD A, C (adressage par registre)


ADD A, C (adressage immdiat)

A = 22
A = 22 + C = 2E

@ 800 LD A, IX-3B (adressage index) A = 200


@ 10 ADD A, F202 (adressage relatif) A = 200 + 400 = 600

-5-