Vous êtes sur la page 1sur 4

10/03/2010

Modes d'adressage Modes d'adressage


• Un mode d'adressage spécifie la façon dont est
calculée l'adresse mémoire effective d'un objet à
partir de valeurs contenues dans des registres et • Modes d'adressage pour le code
de constantes contenues dans l'instruction ou
ailleurs dans la machine.
• Modes d'adressage pour les données
• En programmation informatique, les personnes
préoccupées par les modes d'adressage sont
principalement celles qui programment en
assembleur et les auteurs de compilateurs.

Modes d'adressage pour le code


Modes d'adressage pour le code
• L'adresse de la prochaine instruction à Adressage absolu
exécuter est contenue dans le registre spécial En adressage absolu, l'adresse de destination est
du processeur, le pointeur de programme (IP )
donnée dans l'instruction ; elle correspond à
• Les instructions de branchement (ou de saut) l’adresse réelle (physique) de l’objet en
visent à modifier la valeur du compteur
ordinal. Cette valeur est l'adresse effective de mémoire
l'instruction de branchement ; elle est calculée On peut donc se rendre n'importe où dans la
différemment selon le mode d'adressage mémoire (programme).
choisi.

Modes d'adressage pour les données


Modes d'adressage pour le code
• Lorsque l'on utilise une opérande mémoire, on doit spécifier
Adressage relatif l'adresse mémoire que l'on veut atteindre.
• Comme de nombreux branchements s'effectuent vers des adresses mémoire • Les modes d'adressage sont le chemin que l'on va emprunter pour
proches de l'endroit où l'on se trouve au moment d'exécuter le branchement, on
peut se contenter d'indiquer un décalage par rapport à l'adresse de la prochaine aller chercher une donnée ou stocker un résultat en mémoire.
instruction. Le microprocesseur sait désigner un emplacement mémoire selon
• Ce type de mode d'adressage met en jeu un champ opérande contenant un entier les méthodes les plus variées. Depuis la simple indication d'un
relatif. l'entier relatif est appelé déplacement, il correspond à la longueur du saut déplacement (offset ) ou l'exploitation du contenu d'un registre,
que le processeur doit effectuer dans les instructions. jusqu'aux méthodes d'adressage les plus complexes, dans
lesquelles l'adresse est calculée en additionnant le contenu de
• Adressage symbolique plusieurs registres à une valeur constante.
Correspond à un identificateur alphanumérique destiné à servir de cible ( localisation )
à une structure de contrôle située ailleurs dans le programme.
Lors du codage , l’étiquette est remplacée par une adresse relative. L'intérêt de tous ces modes d'adressage est de simplifier le travail
du programmeur notamment dans la manipulation de tableaux
pluri-dimensionnels en Pascal et de pointeurs en C.
Ces 2 types d’adressage sont utilisés pour les opérations de saut .

1
10/03/2010

Modes d’adressage
Adressage implicite
• Le champs opérande contient la donnée ou la référence ( adresse ) à la
donnée.
• Le mode d’adressage définit la manière dont le microprocesseur va
accéder à l’opérande. • L’instruction est sans opérande
• Le code opération de l’instruction comporte un ensemble de bits pour
indiquer le mode d’adressage. Code opération

• Les modes d’adressage les plus utilisés sont : Certaines opérations ne peuvent être réalisées que sur une
 Implicite donnée se trouvant en un endroit bien précis du processeur
 Immédiat (par exemple, l’accumulateur ou la pile).
 Direct
 Indirect Exemple:
 Basé NEG : calcul le complément à 2 du contenu de l’accumulateur
 Indexé PUSHA : range tous les registres dans la pile.
 combiné

Adressage immédiat Adressage par registre


• On donne la valeur de l ’opérande dans l ’instruction: Ce type d'instruction met en jeu un registre et une
Code opération Opérande valeur (qu'il s'agisse d'une affectation, une
addition, une soustraction ou bien même une
comparaison),
Exemple :
ADD 150 ADD 150 • La taille de l'opérande du type de registre mis en
jeu: 1 octet pour un registre 8 bits, 2 pour un
Cette commande va avoir l’effet suivant : ACC(ACC)+ 150 registre de 16 bits

Si le registre accumulateur contient la valeur 200 Exemple :


après l’exécution son contenu sera égale à 350
MOV ACC, 150

Adressage direct en mémoire Adressage indirect par registre


• Le champs opérande de l’instruction contient l’adresse de l’opérande ( Le mode d'adressage indirect permet d'accéder à une donnée par
emplacement en mémoire ) l'intermédiaire d'un registre qui contient son adresse.
• Pour réaliser l’opération il faut le récupérer ( lire ) l’opérande à partir de la Au préalable, on charge le resistre avec l’adresse:
mémoire. ACC  (ACC)+ (ADR)
MOV BX,offset adr

Exemple : En adressage indirect, on affecte à AX l'adresse contenue dans le registre BX


On suppose que l’accumulateur MOV AX,[BX]
continent la valeur 20 .
ADD 150 Le contenu de la case mémoire dont l'adresse se trouve dans le registre
BX (c.a.d : Adr) est mis dans le registre AX
A la fin de l’exécution nous allons L'adressage indirect est très utile pour accéder à une suite de données
avoir la valeur 50 ( 20 + 30 ) consécutives en mémoire : lors de l'utilisation de tableaux (parcours des cases
30 150 d'un tableau) car il suffit d'incrémenter BX de la taille d'une case pour passer
d'une case à une autre..

Avantage: économie de bits pour adresser la mémoire! .

2
10/03/2010

Adressage indirect par mémoire


• La champs adresse contient l’adresse de l’adresse Adressage direct indexé
de l’opérande.
• Pour réaliser l’opération il faut : • Le calcul de l’adresse effective est fait en ajoutant au contenu du champ
– Récupérer l’adresse de l’opérande à partir de la adresse de l’instruction, le contenu du registre index qui est un
mémoire. déplacement ( valeur signée)
ADD 150
– Par la suite il faut chercher l’opérande à partir • Adresse opérande = ADR + (X)
de la mémoire.
ACC (ACC)+ ((ADR)) Registre d’index
• Exemple : 150 200
• Initialement l’accumulateur contient la valeur 20 Déplacement= 50
• Il faut récupérer l’adresse de l’adresse (150). ADD 150
• Récupérer l’adresse de l’opérande à partir de 200 40 +
l’adresse 150 ( la valeur 200 )
• Récupérer la valeur de l’opérande à partir de 30
l’adresse 200 ( la valeur 40 ) 200
Additionner la valeur 40 avec le contenu de
l’accumulateur (20) et nous allons avoir la valeur 60

Adressage basé Adressage combiné


L’ adresse de cette zone se trouve dans un registre spécial ( registre de base ).
• Ce mode d’adressage est utilisée pour les instructions de branchement.
• Indirect –Indexé
Adresse = ADR + (base) AE= ( adresse intermédiaire) + déplacement
déplacement Registre index: contient le déplacement
Registre de base • Basé-Indexé
Adresse=
100H
AE= ( registre de base)+ ( registre index) +
BR 150 déplacement
+

ADD
Registre index: contient le déplacement
250
Registre base: contient une adresse

• Exemple1 : déroulement de l’instruction d’addition en mode immédiat


Cycle d’exécution d’une instruction (ACC)+ Valeur
ACC

– Phase 1 : ( rechercher l’instruction à traiter )


• Le traitement d’une instruction est décomposé en trois phases :
• Mettre le contenu du CO dans le registre RAM RAM (CO)
– Phase 1 : rechercher l’instruction à traiter et décodage
• Commande de lecture à partir de la mémoire
– Phase 2 : rechercher de l’opérande et exécution de l’instruction
• Transfert du contenu du RIM dans le registre RI RI (RIM)
– Phase 3 : passer à l’instruction suivante
• Analyse et décodage
– Phase 2 : (traitement )
• Chaque phase comporte un certain nombre d’opérations élémentaires (
• Transfert de l ’opérande dans l’UAL UAL  (RI).ADR
microcommandes ) exécutées dans un ordre bien précis ( elle sont
générées par le séquenceur ). • Commande de l’exécution de l’opération ( addition )
• La phase 1 et 3 ne change pas pour l’ensemble des instructions , par – Phase 3 : ( passer à l’instruction suivante )
contre la phase 2 change selon l’instruction et le mode d’adressage • CO  (CO )+ 1

3
10/03/2010

• Exemple 2 : déroulement de l’instruction d’addition en mode direct • Exemple 3 : Déroulement de l’instruction d’addition en mode indirect
(ACC)+ (ADR)
ACC (ACC)+ ((ADR))
ACC

– Phase 1 : ( rechercher l’instruction à traiter ) – Phase 1 : ( rechercher l’instruction à traiter )


• Mettre le contenu du CO dans le registre RAM RAM (CO) • Mettre le contenu du CO dans le registre RAM RAM (CO)
• Commande de lecture à partir de la mémoire • Commande de lecture à partir de la mémoire
• Transfert du contenu du RIM dans le registre RI RI (RIM) • Transfert du contenu du RIM dans le registre RI RI (RIM)
• Analyse et décodage • Analyse et décodage
– Phase 2 : ( décodage et traitement ) – Phase 2 : ( décodage et traitement )
• Transfert de l’adresse de l ’opérande dans le RAM RAM (RI).ADR • Transfert de l’adresse de l ’opérande dans le RAM  (RI).ADR
• Commande de lecture • Commande de lecture /* récupérer l’adresse */
• Transfert du contenu du RIM vers l’UAL UAL (RIM) • Transfert du contenu du RIM vers le RAM RAM(RIM)
• Commande de lecture /* récupérer l’opérande */
• Commande de l’exécution de l’opération ( addition )
• Transfert du contenu du RIM vers l’UAL UAL  (RIM )
– Phase 3 : ( passer à l’instruction suivante )
• Commande de l’exécution de l’opération ( addition )
• CO  (CO )+ 1
– Phase 3 : ( passer à l’instruction suivante )
• CO  (CO )+ 1