Вы находитесь на странице: 1из 8

KARIM Mohammed FSDM Fès Page 1 04/12/2007

Les modes d’adressage

Le 6809 est très complet au niveau des modes d’adressage. On appelle mode d’adressage la
façon dont les instructions accèdent aux opérandes (données situées en mémoire). La
plupart des instructions du 6809 supportent plusieurs types d’adressage.

1. Adressage inhérent (ou implicite)


Adressage inhérent simple

Dans le mode d’adressage inhérent simple, le code opération contient toute l’information
nécessaire à l’exécution de l’instruction.
Exemple : CLRA,CLRB,INCA,INCB,LSRA,LSRB

Adressage inhérent paramétré


L’instruction comporte un octet supplémentaire qui précise les registres internes
intervenant dans l’instruction.

Exemples :
TFR A,DP transfert de A dans DP
PSHS A,B,X sauvegarde dans la pile de A,B,X

2. Adressage immédiat
Dans ce mode d’adressage, le code opération est suivi directement de l’opérande. Ce type
d’adressage permet de charger les registres internes du microprocesseur avec la valeur de
l’opérande.
Instructions sur deux octets
Ce type d’instruction est réservé pour charger les registres internes de 8 bits.
Exemple :
LDA #$12 charger la valeur $10 dans l’accumulateur A
Le symbole ‘#’ signifie immédiat dans la syntaxe assembleur.
Instructions sur trois octets
Ce type d’instruction est réservé pour charger les registres internes de 16 bits.
Exemple :
LDX #$E000 charger la valeur $E000 dans le registre d’index X
Instructions sur quatre octets
Dans ce type d’instruction, le code opératoire utilise deux octets mémoires. Le troisième et
la quatrième contiennent la valeur de l’opérande de 16 bits.
KARIM Mohammed FSDM Fès Page 2 04/12/2007

Exemple :
LDY #$E000 charger la valeur $E000 dans le registre d’index Y
Remarque : le chargement immédiat est valable pour tous les registres internes à
l’exception du registre de page DP.
Pour charger $E0, à titre d’exemple, dans DP :
LDA #$E0
EXG A,DP échange des contenus de A et DP.

3. Adressage direct
Dans ce mode d’adressage, le code opération est suivi des 8 LSB de l’adresse dont les 8
MSB se trouvent dans le registre de page DP. Ce mode d’adressage est utilisé pour adresser
des pages en mémoire. Le registre DP spécifie le numéro de page.
Il suffit donc d’initialiser le registre de page DP pour pouvoir travailler en adressage direct
sur les 256 octets de la page choisie. A la mise sous tension, DP est mis à zéro.
Instructions sur deux octets
Le premier octet définit le code opératoire, le second les 8 LSB de l’adresse.
Exemple :
LDA $10 ou LDA <$10 charger l’accumulateur A avec le contenu de $E010
(DP=$10).
Le symbole ‘<’ signifie direct dans la syntaxe assembleur.
Instructions sur trois octets
Les deux premiers octets définissent le code opératoire, le troisième les 8 LSB de l’adresse.
Exemple :
LDY $10 charger le registre Y avec les contenus de $E010 et de $E011 (DP=$10).

4. Adressage étendu
Dans ce mode d’adressage, le code opération est suivi les deux octets constituant l’adresse
de l’opérande proprement dit.
Instructions sur trois octets
Le premier octet définit le code opératoire, les deux autres constituent l’adresse de
l’opérande.
Exemple :
LDA $E000 charger l’accumulateur A avec le contenu de $E000
Instructions sur quatre octets
Le code opératoire est défini par deux octets. Les deux autres constituent l’adresse de
l’opérande.
Exemple :
LDY $E000 chargement du registre Y avec le contenu de $E000
KARIM Mohammed FSDM Fès Page 3 04/12/2007

5. Adressage étendu indirect


L’opérande spécifie non pas la donnée mais l’adresse de cette donnée. On parle
d’indirection. L’assembleur reconnaît la présence d’un adressage étendu indirect par mise
entre [ ] de l’adresse opérande.
Instructions sur quatre octets
Les deux premiers octets définit le code opératoire, les deux autres constituent l’adresse de
transit.
Exemple :
LDA [ $E000] charger l’accumulateur A avec le contenu dont l’adresse se trouve en
$E000 et $E001
Instructions sur cinq octets
Les instructions opérant sur les pointeurs S et Y ainsi que celles de comparaison CMPU et
CMPD nécessitent un octet supplémentaire.
Exemple :
LDY [ $E000] charger l’accumulateur Y avec le contenu dont l’adresse se trouve en
$E000 et $E001

6. Adressage relatif court

Ce mode d’adressage est utilisé par les instructions de branchement qui requièrent deux
octets : le premier est le code opération et le second spécifie le déplacement qui peut être
positif ou négatif. On pourra donc se déplacer de –128 ($80) octets en arrière et de +127 ($
7F) en avant, par rapport à la valeur du compteur ordinal (PC) à la fin du traitement de
l’instruction de branchement.
Exemple :

Langage machine Langage assembleur


Adresse Contenu Etiquette Cod. op. Opérande Commentaires

$8000 B6 E0 00 LDA $E000


$8003 47 ASRA
$8004 24 03 BCC PAIR Si la retenue est à 0, un branchement est à
effectué à L’étiquette PAIR. On se déplace
de +3.
$8006 B7 E0 0A STA $E00A
$8009 B7 E0 0B PAIR STA $E00B
$800C 3F SWI
KARIM Mohammed FSDM Fès Page 4 04/12/2007

7. Adressage relatif long

Ce mode d’adressage est réservé lui aussi aux instructions de branchement. Cette fois, les
instructions sont codées sur 4 octets : Les deux premiers représentent le code opératoire et
les deux autres spécifient le déplacement qui peut être positif ou négatif. On pourra donc se
déplacer de –32768 ($8000) octets en arrière et de +32767 ($7FFF) en avant, par rapport à
la valeur du compteur ordinal (PC) à la fin du traitement de l’instruction de branchement.

Exemple :
LBCC PAIR Si le bit de retenue est à 0, un branchement relatif long à l’étiquette
est alors exécuté.

8. Adressage indexé
Le principe de l’adressage indexé est que l’instruction spécifie une base (index) plus un
déplacement par rapport à cette base. On peut donc écrire :

Adresse effective = base + déplacement


La base peut être soit :
- un des deux registres d’index X ou Y;
- un des deux pointeurs de pile U ou S;
- le compteur programme PC (cas particulier de l’adressage relatif).

Quant au déplacement, il peut être soit :


- nul;
- codé sur 5 bits (-16 à +15);
- codé sur 8 bits (-32768 à +32767);
- variable dans le cas de l’utilisation d’un accumulateur A, B ou D.

Adressage indexé. Déplacement nul


Ce mode est le mode indexé le plus rapide. Un registre (X,Y,U ou S) contient l’adresse
effective de la donnée utilisée par l’instruction. Il existe deux types d’instruction :
Instructions sur deux octets : le premier octet définit le code opératoire, le second
désigne le post octet (1RR00100).

RR
Registre de base : X 00
Registre de base : Y 01
Registre de base : U 10
Registre de base : S 11
KARIM Mohammed FSDM Fès Page 5 04/12/2007

Exemple :
Langage machine Langage assembleur

Adresse Contenu Code op. Opérande Commentaires


charger l’accumulateur A avec le contenu dont
A6 84 LDA ,X
l’adresse se trouve dans

Instructions sur trois octets : le code opératoire est défini par deux octets. Le troisième
constitue le post octet
Exemple :
Langage machine Langage
assembleur

Adresse Contenu Code op. Opéran Commentaires


de
10 AE 84 LDY ,X Charger l’accumulateur Y avec le contenu dont
l’adresse se trouve dans X

Adressage indexé. Déplacement constant


Dans le mode d’adressage indexé, le déplacement (en complément à 2) est ajouté au
contenu du registre de base pour former l’adresse effective de la donnée. Le contenu initial
du registre de base n’est modifié par l’addition.
Déplacement sur 5 bits (n,R)
Le déplacement sur 5 bits (en complément à 2) est compris dans le post octet (0RRnnnnn),
ce qui est avantageux de point de vue place mémoire et vitesse d’exécution.
Exemple :
Langage machine Langage assembleur

Adresse Contenu Code Opérande Commentaires


op.
A6 FD LDA -3,X Charger l’accu. A par le contenu de l’adresse :
(X) – 3

Déplacement sur 8 bits (n,R)


Le déplacement sur 8 bits (en complément à 2) est compris dans l’octet suivant le post octet
(1RR01000).
KARIM Mohammed FSDM Fès Page 6 04/12/2007

Exemple :
Langage machine Langage assembleur

Adresse Contenu Code Opérande Commentaires


op.
A6 88 14 LDA +20,X Charger l’accu. A par le contenu de
l’adresse : (X) + 20

Déplacement sur 16 bits (n,R)


Le déplacement sur 16 bits, en deux octets, suit immédiatement le post octet (1RR01001).
Exemple :
Langage machine Langage assembleur

Adresse Contenu Code Opéran Commentaires


op. de
A6 89 01 00 LDA +256,X Charger l’accu. A par le contenu de
l’adresse : (X) + 256

Adressage indexé. Auto-incrémentation/décrémentation


Ce mode est utilisé pour gérer une table de données. L’auto-incrémentation/décrémentation
permet d’accéder rapidement aux données successives. le registre de base contient ’adresse
effective de la donnée de l’instruction.
Dans le mode auto-incrémentation, le registre de base est incrémenté de un ‘+’ ou de deux
‘++’ avant le recherche de l’instruction suivante.
Dans le mode auto-décrémentation, le registre de base est décrémenté de un ‘-’ ou de deux
‘--’ avant le recherche de l’instruction suivante.

Exemple :

Langage machine Langage


assembleur

Adresse Contenu Code Opéran Commentaires


op. de
A6 80 LDA ,X+ charger l’accumulateur A avec le contenu dont l’adresse
se trouve dans X. Incrémentation par Un de X.
A6 81 LDA ,X++ charger l’accumulateur A avec le contenu dont l’adresse
se trouve dans X. Incrémentation par deux de X.
A6 82 LDA ,-X charger l’accumulateur A avec le contenu dont l’adresse
se trouve dans X. Décrémentation par Un de X.
A6 LDA ,--X charger l’accumulateur A avec le contenu dont l’adresse
83 se trouve dans X. Décrémentation par deux de X.
KARIM Mohammed FSDM Fès Page 7 04/12/2007

Adressage indexé. Déplacement acumulateur ((A,R), (B,R), (D,R))

Ce mode d’adressage est semblable au précédant sauf que cette fois-ci le déplacement est
contenu dans l’un des accumulateurs A,B ou D du 6809. L’adresse effective de la donnée
est la somme du contenu du registre de base et celui de l’accumulateur spécifiée dans
l’instruction. Le contenu initial du registre de base n’est modifié par l’addition. les
instructions sont codées sur 2 octets : le premier représente le code opératoire et le second
spécifie le post octet (tableau n°).

Post octet
Accumulateur A 1RR00110
Accumulateur B 1RR00101
Accumulateur D 1RR01011
Tableau n°

Exemple :
Langage machine Langage assembleur

Adresse Contenu Code op. Opéran Commentaires


de
A6 LDA B,X Charger l’accu. A par le contenu de l’adresse :
85 (X) + (B)

Adressage indexé. Base=compteur programme

Dans ce mode d’adressage, un déplacement en complément à deux de 8 ou 16 bits est


ajouté au contenu du PC pour obtenir l’adresse effective de la donnée.

Exemple :

LDA $F0,PC Charger l’accu. A par le contenu de l’adresse :

(PC) + $F0
KARIM Mohammed FSDM Fès Page 8 04/12/2007

9. Adressage indexé indirect


Le principe de l’adressage indexé est qu’on accède à l’adresse effective en transitant par
une adresse intermédiaire.
On peut donc écrire :

Adresse effective = contenu mémoire dont l’adresse de base est la somme du registre
d’index et le déplacement.

Tous les modes d’adressage indexé peuvent travailler en indirect sauf les modes auto-
incrémentation/décrémentation par un et le mode déplacement constant sur 5 bits.

Exemples :

LDA [ , X] chargement de A avec le contenu mémoire dont l’adresse de base est le contenu de
X

LDA [ $1000, X] chargement de A avec le contenu mémoire dont l’adresse de base est (X) + $1000

Вам также может понравиться