Le Microprocesseur 6809

publicité
COURS EXPO
Microprocesseur 6809
(2° GIM )
Mr KHATORY
1
Naissance du microprocesseur
•
Le 15 novembre 1971 est célébré l'acte de naissance du microprocesseur. Dans une
publicité de la revue Electronic News, la firme Intel annonce «A microprogrammable
computer on a chip» (un ordinateur programmable dans une puce).
2
Organisation matérielle du 6809
Le microprocesseur 6809 est un processeur 8 bits dont l'organisation
interne est orientée 16 bits. Il est fabriqué en technologie MOS et se
présente sous la forme d'un boîtier 40 broches.
3
Organisation matérielle du 6809
Le microprocesseur 6809 est un processeur 8 bits dont l'organisation
interne est orientée 16 bits. Il est fabriqué en technologie MOS et se
présente sous la forme d'un boîtier 40 broches.
0V
39
38
Horloge
35
34
33
5
+5V
XTAL
EXTAL
Q
E
DMA/BREQ
BS
6
BA
2
Bus de commande
3
4
40
37
Signaux
mémoire
36
32
A0






A15
8
23
Bus
des
adresses
NMI
IRQ
D0





D7
FIRQ
HALT
RESET
MRDY
24
31
Bus
des
données
R/ W
BROCHAGE DU MC 6809
4
Organisation matérielle du 6809
0V
39
38
Horloge
35
34
33
5
+5V
XTAL
EXTAL
Q
E
DMA/BREQ
BS
6
BA
2
Bus de commande
3
4
40
37
Signaux
mémoire
36
32
A0






A15
8
23
Bus
des
adresses
NMI
IRQ
D0





D7
FIRQ
HALT
RESET
MRDY
24
31
Bus
des
données
R/ W
BROCHAGE DU MC 6809
5
Architecture 6809
Le microprocesseur 6809 comporte NEUF
programmables accessibles par l'utilisateur:
registres
internes
16 bits
Accumulateurs.
Manipulation
des données
8 bits
8 bits
A
B
D
Registres
d'index
X
Pointeurs de
pile
U
Y
S
DP
PC
Registre page direct
Compteur programme
CCR
Registre d’état
6
Architecture 6809
Pointeur de Pile
Pointeur de Pile
U
S
Registre A
Registre..d'état…
Registre B
UAL
Compteur Ordinal
PC
CCR
Registre d'index
X
Registre d'index
Y
Registre de page
DP
7
Architecture 6809
 Accumulateurs : A, B et D
Les calculs arithmétiques et les manipulations de données se font grâce
aux accumulateurs A et B. Ces deux registres sont interchangeables sauf
pour quelques instructions (ABX, DAA) et les opérations sur 16 bits.
D= A B (Concaténation de A et B)
Registre A
Registre B
UAL
8
Architecture 6809
Pointeur de Pile
Pointeur de Pile
U
S
Registre A
Registre B
UAL
Registre d'index
X
Registre d'index
Y
 Registres pointeurs: S, U, X, Y
 Registres d'index : X,Y
Ces deux pointeurs d'utilisation parfaitement identique sont utilisés
dans les modes d'adressage indexé. Le contenu des ces registres (16
bits) permet de pointer des données.
9
Architecture 6809
Pointeur de Pile
Pointeur de Pile
U
S
Registre A
Registre B
UAL
Registre d'index
X
Registre d'index
Registres d'index : X,Y
Le pointeur de pile S (Système) est utilisée par le
microprocesseur pour gérer le sauvegarde de ses registres internes
pendant l'exécution
de programmes d'interruptions ou de sous
programmes. Le pointeur de pile U (Utilisateur) est utilisé uniquement
par le programmeur pour réaliser des passages d'arguments de ou
vers des sous programmes.
10
Architecture 6809
Registre A
Registre B
UAL
Compteur Ordinal
PC
Registre compteur programme PC
Le contenu de ce registre (16 bits) détermine l'adresse de
l'instruction que doit exécuter le processeur. Il pointe en permanence
l'adresse de la prochaine instruction à exécuter. Dans certain cas, ce
compteur programme peut être utilisé comme un index.
11
Architecture 6809
Pointeur de Pile
Pointeur de Pile
U
S
Registre A
Registre B
UAL
Registre d'index
X
Compteur Ordinal
PC
Registre d'index
Y
DP
Registre de page: DP
Ce registre (8 bits) est prévu pour étendre les possibilités
d'adressage direct à tout l'espace mémoire, sous contrôle du logiciel.
12
Architecture 6809
Pointeur de Pile
Pointeur de Pile
U
S
Registre A
Registre B
UAL
CCR
Registre d'index
X
Compteur Ordinal
PC
Registre d'index
Y
DP
Registre de codes condition: CCR
Le registre codes condition (8 bits) définit à tout instant l'état
des indicateurs du processeur.
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
E
F
H
I
N
Z
V
C
13
Architecture 6809
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
E
F
H
I
N
Z
V
C
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
V
Z
N
I
H
F
E
Demi-retenue
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
14
Architecture 6809
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
E
F
H
I
N
Z
V
C
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
V
Z
N
I
H
F
E
Demi-retenue
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
15
Architecture 6809
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
E
F
H
I
N
C
N
I
H
F
E
Z
Bit 1
Bit 0
V
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
V
Z
Bit 2
Demi-retenue
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
16
Architecture 6809
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
E
F
H
I
N
Z
V
C
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
V
Z
N
I
H
F
E
Demi-retenue
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
17
Architecture 6809
Bit 7
Bit 6
Bit 5
E
F
H
C
Bit 4
I
N
I
H
F
E
Bit 2
Bit 1
Bit 0
N
Z
V
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
V
Z
Bit 3
Demi-retenue
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
18
Architecture 6809
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
E
F
H
I
N
Z
V
C
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
Demi-retenue
Lors de la somme sur (4bits)
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
V
Z
N
I
H
F
E
19
Architecture 6809
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
E
F
H
I
N
Z
V
C
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
V
Z
N
I
H
F
E
Demi-retenue
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
20
Architecture 6809
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
E
F
H
I
N
Z
V
C
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
V
Z
N
I
H
F
E
Demi-retenue
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
21
Architecture 6809
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
E
F
H
I
N
Z
V
C
C
Retenue (Carry)
Positionné lors d'une opération arithmétique
Dépassement (oVerflow)
Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Zéro
Mis à 1 si le résultat de l'opération
précédente est nul
Négatif
Indique un résultat négatif.
Masque d'interruptions IRQ
Lorsqu'il est à 1, masque les interruptions
IRQ
V
Z
N
I
H
F
E
Demi-retenue
Masque d'interruptions FIRQ
Lorsqu'il est à 1, masque les interruptions
FIRQ
Etat de sauvegarde
Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
22
Mode d’adressage
Le MPU possèdent 59 instructions de base mais en conjonction avec les
NEUF modes d'adressage disponibles, on parvient à 1 464 possibilités
STRUCTURE D'UNE INSTRUCTION
Elle comporte de un à 5 octets ( dépend du mode d'adressage).
 Le premier (parfois le deuxième) octet indique l'action à effectuer
correspond au code de l'instruction,
 Les octets suivants précisent les opérandes ou sur quelques registres
cette action agira.
Instruction (mnémoniques)
Charger (Load ) dans
le registre A
Opération
Opérande
LDA
$2000
LDA $2000  code en hexadécimal = B6 2000 ( 3 octets)
23
Mode d’adressage
Le MPU possèdent 59 instructions de base mais en conjonction avec les
NEUF modes d'adressage disponibles, on parvient à 1 464 possibilités
1.mode d'adressage inhérent
L'adressage inhérent est utilisé par les instructions qui agissent sur les
registres internes du MPU et non sur la mémoire. Il existe deux types de
mode d'adressage inhérent :
Adressage inhérent simple
Le code opération contient toute l'information nécessaire à l'exécution de
l'instruction.
Ces instructions codées sur un octet sont: ABX, INCB,NEGA,…..
Exemple:
ABX  addition de l'accumulateur B à l'index X.
24
Mode d’adressage
Exemple:
ABX  addition de l'accumulateur B à l'index X.
X  (B) + (X)
MPU
ADR
PC
Mémoire
ADR+1
ADR+ 1
Code Opération
de ABX
A
D
B
X
14
3A
2008
201C
ADR
2008 + 14
Y
S
U
DP
7
6
5
4
3
2
1
0
CCR
Adressage inhérent simple
25
Mode d’adressage
Adressage inhérent paramétré
L'instruction comporte un octet supplémentaire permettant de préciser les
opérandes intervenant dans l'instruction. La présence de cet octet
supplémentaire est indispensable pour les instructions de type:
Échange et transfert de registres;
Instructions d'accès aux piles;
Attente d'interruption.
26
Mode d’adressage
Échange et transfert de registres: le premier octet détermine le code opération
pur, le second les registres source et destination:
Ex
:TFR U,S  transfert de U dans S
MPU
Mémoire
ADR
ADR
+2
PC
ADR+ 2
A
D
B
1F
ADR
34
ADR+1
X
Y
ADR+2
S
1000
U
1000
DP
7
CCR
6
5
4
3
2
1
0
Adressage inhérent paramétré
Échange et transfert des données
27
Mode d’adressage
Post-octet transfert/échange :
code
Registre
0000
D
0001
X
0010
Y
0011
U
0100
S
0101
PC
1000
A
1001
B
1010
CCR
1011
DP
Code Opération
1F
TFR U,S  transfert de U dans S
Post-Octet
34
28
Mode d’adressage
Post-octet transfert/échange :
3 4
code
Registre
0000
D
0001
X
0010
Y
0011
U
0100
S
0101
PC
1000
A
1001
B
1010
CCR
1011
DP
Code Opération
1F
TFR U,S  transfert de U dans S
Post-Octet
34
29
Mode d’adressage
 Instructions d'accès aux piles: le premier octet détermine le code
opératoire pur, le post-octet: les registres concernés par l'accès à la
pile.
Ex
:PSHS A, B, X  sauvegarde dans la pile de A, B, X
MPU
ADR+ 2
ADR
ADR+2
PC
D
X
Mémoire
34
16
A
aa
B
bb
ADR + 2
x’x’
xx
Y
S
SSS’S’-4
ss
s’s’
U
DP
7
CCR
ADR
ADR + 1
6
5
4
SSS’S’ - 4
aa
SSS’S’ -4
bb
SSS’S’ -3
xx
SSS’S’ -2
x’x’
SSS’S’ -1
SSS’S’
3
2
1
0
Adressage inhérent paramétré
Instructions d’accès aux piles
30
EMPILEMENT
Mnémoniques :
PSHS liste explicite de registres à empiler
ou (implicitement)
PSHS #$xy
(#$xy)
=
b7
b6
b5
b4
b3
b2
b1
b0
PC
U
Y
X
DP
B
A
CCR
Ordre d’empilement des registres
Si bi (0 i  7) = 1, alors le registre correspondant est empilé dans la pile S.
Ainsi la donnée immédiate #$xy permet de sélectionner le(s) registre(s) à
sauvegarder.
0
0
0
1
X
0
1
1
B
A
0
Exemple: PSHS A,B,X  PSHS #$16
aa
bb
xx
x’x’
31
Mode d’adressage
 Attente d'interruption: le premier octet est associé à l'instruction CWAY, le second
sert à masquer ou à valider les interruptions.
:CWAY # $ FF  attente d'interruption
EX
MPU
Mémoire
ADR
ADR+2
PC
ADR+ 2
3C
FF
ADR
ADR + 1
ADR + 2
D
A
aa
B
bb
X
xx
x’x’
Y
yy
y’y’
S
ss
U
uu
SSSS’-C
SSS’S’ - C
s’s’
u’u’
pp
DP
Masque INT IRQ
CCR
CCR
7
7
x
1
Sauvegarde
6
6
x
1
5
5
x
x
4
4
x
1
Masque INT
FIRQ
3
3
x
x
2
2
x
x
1
1
x
x
0
0
x
x
CCR
SSS’S’ -C
aa
SSS’S’ -B
bb
SSS’S’ -A
pp
SSS’S’ -9
xx
SSS’S’ -8
x’x’
SSS’S’ -7
yy
SSS’S’ -6
y’y’
SSS’S’ -5
uu
SSS’S’ -4
u’u’
SSS’S’ -3
ADR +2
SSS’S’ -2
SSS’S’ -1
SSS’S’
Adressage inhérent paramétré
Attente d’interruption
32
Mode d’adressage
(RECAP)
Mode adressage
I. mode d'adressage inhérent
II. Mode adressage immédiat
III. Mode adressage Direct
IV. Mode adressage étendu
V. Mode adressage étendu
indirect
VI. Mode adressage relatif
court
VII. Mode adressage relatif
long
VIII. Mode adressage indexé
IX. Mode adressage indexé
indirect
Exemple
1. inhérent simple
ABX ; NEG…
2. inhérent paramétré
a. Echange, transfert registre
b. Accès aux piles
c. attente interruptions
a.TRF
b. PSHS
c. CWAI
U,S
A,B,X
#$FF
Mode d’adressage
2. Mode d'adressage immédiat
Dans ce mode d'adressage, le code opératoire 8 bit est suivi d'une valeur
qui est l'opérande de l'instruction.
Ce type d'adressage permet de charger les registres internes du
microprocesseur avec la valeur de l'opérande.
Le symbole « # » signifie immédiat dans la syntaxe assembleur. Il existe
trois types d’instructions dans ce mode d’adressage :
Instructions sur deux octets
Le premier octet contient le code opératoire, le second la constante 8 bits.
Ce type d’instruction est réservé pour travailler sur les registres 8 bits du
microprocesseur.
34
Ex
: LDA #$15  charger la valeur $15 dans l’accumulateur A. Le
premier octet contient le code opératoire
MPU
PC
ADR
Mémoire
A
B
D
ADR + 2
ADR+2
Code Opération
LDA
15
$15
X
Y
86
ADR
15
ADR+1
ADR+2
S
U
DP
7
CCR
6
5
4
3
2
1
0
Adressage immédiat
Instructions sur deux octets
35
Instructions sur trois octets
Le premier octet contient le code opératoire, le second et le troisième
contiennent la constante 16 bits. Ce type d’instructions est réservé
pour travailler sur les registres 16 bits du microprocesseur.
Ex
: ADDD #$2005  addition du contenu de l’accumulateur D
et de $2005, le résultat se trouve dans D.
36
Ex
: ADDD #$2005  addition du contenu de l’accumulateur D
et de $2005, le résultat se trouve dans D.
MPU
Mémoire
ADR + 3
ADR
ADR
+3
PC
31 11
A
D
Code Opération
ADDD
B
27
22
$1122+$2005
C3
ADR
20
ADR+1
05
ADR+2
X
Y
ADR+3
S
U
DP
E
CCR
F
H
I
N
Z
V
C
Adressage immédiat
Instructions sur trois octets
37
Instructions sur quatre octets
Dans ce type d’instruction, le code opératoire utilise deux octets
mémoire, la constante également. Le premier octet ($10) est
nécessaire pour les instructions : CMPD, CMPS, CMPU, CMPY,
LDS, LDY, STY, STS.
Ex
:LDY #$2008  charger l’index Y avec la valeur $2008
38
:LDY # $2008  charger l’index Y avec la valeur $2008
Ex
MPU
Mémoire
Octet
supplémentaire
ADR + 4
ADR
ADR
+4
PC
A
D
B
$10
10
ADR
8E
ADR+1
20
ADR+2
08
ADR+3
X
Y
2008
S
ADR+4
$2008
U
DP
E
CCR
F
H
I
N
Z
V
C
Adressage immédiat
Instructions sur quatre octets
39
Mode adressage
I. mode d'adressage inhérent
II. Mode adressage immédiat
III. Mode adressage Direct
IV. Mode adressage étendu
V. Mode adressage étendu indirect
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
Exemple
1. inhérent simple
ABX ; NEG…
2. inhérent paramétré
a. Echange, transfert registre
b. Accès aux piles
c. attente interruptions
1. sur deux octets
2. sur trois octets
3. sur quatre octets
a.TRF
b. PSHS
c. CWAI
1. LDA
2. ADDD
3. LDY
U,S
A,B,X
#$FF
#$A0
#$2009
#$10B4
Mode d’adressage
3. Mode d'adressage direct
 Le code opératoire (un ou 2 octet)
 L'opérande ( 1 octet ) : Poids Faible (8 bits) de l’Adresse Effective
DP
¨PF
Le symbole « < » est une directive assembleur qui force l’adressage
direct. Il existe deux types d’instructions dans ce mode d’adressage :
 Instructions sur deux octets
 Instructions sur trois octets
41
 Instructions sur deux octets
Le premier octet définit le code opératoire, le second le poids faible de
l’adresse effective.
Ex
:LDA $08 ou LDA < $08 chargement de l’accumulateur A
avec le contenu de $ 2008 ( DP= $20)
42
 Instructions sur deux octets
Le premier octet définit le code opératoire, le second les poids faible de
l’adresse effective.
Ex
:LDA $08 ou LDA < $08 chargement de l’accumulateur A
avec le contenu de $ 2008 ( DP= $20)
MPU
Mémoire
ADR + 2
ADR
ADR
+2
PC
A
D
11
96
ADR
08
ADR+1
ADR+2
B
X
Y
S
11
20 08
U
20
DP
E
CCR
F
H
I
N
Z
V
C
Adressage direct
Instructions sur deux octets
43
Instructions sur trois octets
 Le code opératoire (sur 2 octet)
 L'opérande ( 1 octet ) : Poids Faible (8 bits) de l’Adresse Effective
Ex
: LDY $05 ou LDY < $05  chargement du registre Y avec le
contenu de $2005/06 (DP=$20)
44
Ex
: LDY $05 ou LDY < $05  chargement du registre Y avec le
contenu de $2005/06 (DP=$20)
MPU
PC
Mémoire
ADR
ADR+3
D
ADR + 3
10
ADR
A
9E
ADR+1
B
05
ADR+2
11
20 05
22
20 06
X
Y
1122
1122
S
U
20
DP
E
CCR
F
H
I
N
Z
V
C
Adressage direct
Instructions sur trois octets
45
Mode adressage
I. mode d'adressage inhérent
II. Mode adressage immédiat
1. inhérent simple
2. inhérent paramétré
a. Echange, transfert registre
b. Accès aux piles
c. attente interruptions
1. sur deux octets
2. sur trois octets
3. sur quatre octets
III. Mode adressage Direct
1. sur deux octets
2. sur trois octets
IV. Mode adressage étendu
V. Mode adressage étendu indirect
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
Exemple
ABX ; NEG…
a.TRF
U,S
b. PSHS
A,B,X
c. CWAI
#$FF
1. LDA
#$A0
2. ADDD
#$2009
3. LDY
#$10B4
1.LDA
$40
ou
LDA
<$40
adresse = $2040 : (DP)=$20
2. LDY
$50
Adresse=$3050/51 (DP=30)
Mode d’adressage
4. Mode d'adressage étendu
 Le code opératoire (sur 1 ou 2 octet)
 L'opérande ( 2 octet ) : Adresse Effective
Le symbole « > » est une directive assembleur qui force l’adressage étendu.
Il existe deux types d’instructions dans ce mode d’adressage
Instructions sur trois octets
Le premier octet (code opératoire) est suivi de l’adresse 16 bits
spécifiant l’emplacement de l’opérande (8 ou 16 bits).
 Le code opératoire (sur 1 octet)
 L'opérande ( 2 octet ) : Adresse Effective
47
Ex : LDA $21A5 ou LDA > $ 21A5  chargement de l’accumulateur A
avec le contenu de l’adresse $21A5
MPU
PC
Mémoire
ADR
ADR+3
11
A
D
ADR + 3
B
X
B6
ADR
21
ADR+1
A5
ADR+2
11
21 A5
$11
Y
S
U
DP
E
CCR
F
H
I
N
Z
V
C
Adressage étendu
Instructions sur trois octets
48
Mode d'adressage étendu
Instructions sur quatre octets
 Le code opératoire (sur 2 octet)
 L'opérande ( 2 octet ) : Adresse Effective
Le premier octet est seulement nécessaire pour les instructions qui
opèrent sur les pointeurs S et Y et sur les instructions de comparaison
CMPU, CMPD.
Ex :LDY $2CB5 ou LDY > $2CB5  chargement du registre Y Avec le
contenu de $2CB5
49
Ex :LDY $2CB5 ou LDY > $2CB5  chargement du registre Y Avec le
contenu de $2CB5/B6
MPU
Mémoire
Pré-octet
PC
ADR
ADR+4
D
ADR + 4
10
ADR
A
BE
ADR+1
B
2C
ADR+2
B5
ADR+3
X
ADR+4
$1122
Y
1122
S
U
DP
E
CCR
F
H
I
N
Z
V
11
2C B5
22
2C B6
C
Adressage étendu
Instructions sur quatre octets
50
Mode adressage
I. mode d'adressage inhérent
1. inhérent simple
Exemple
ABX ; NEG…
2. inhérent paramétré
II. Mode adressage immédiat
1. sur deux octets
2. sur trois octets
3. sur quatre octets
1. sur trois octets
1. LDA
#$A0
2. ADDD
#$2009
3. LDY
#$10B4
1.LDA
$40
ou
LDA
<$40
adresse = $2040 : (DP)=$20
2. LDY
$50
Adresse=$3050/51 (DP=30)
1. LDB
$2145
2. sur quatre octets
2. CMPU
III. Mode adressage Direct
1. sur deux octets
2. sur trois octets
IV. Mode adressage étendu
V. Mode adressage étendu indirect
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
$2009
5. Mode d'adressage étendu indirect
Ce mode d’adressage est identique au mode d’adressage étendu mais
il possède en plus une indirection.
La notation assembleur " [ ]" force l'adressage étendu indirect.
 Le code opératoire (sur 2 ou 3 octets)
 L'opérande ( 2 octet ) : Adresse Effective
Instructions sur quatre octets
Les deux premiers octets déterminent le code opératoire ; code
opératoire de l’adressage étendu simple suivi d’un post-octet
déterminant l’indirection. Les 3ème et 4ème octets représentent
l’adresse de transit.
52
Ex :LDA [$2000]  chargement de l’accumulateur avec le contenu dont
l’adresse se trouve en $2000 et $2001.
MPU
Mémoire
ADR
PC
A
D
ADR + 4
ADR+4
11
B
A6
Post Octet
ADR
9F
ADR+1
20
ADR+2
00
ADR+3
ADR+4
X
$11
Y
S
30
2000
00
2001
11
3000
U
DP
E
F
H
I
N
Z
V
C
CCR
Adressage étendu Indirect
Instructions sur quatre octets
53
Mode d’adressage
Instructions sur cinq octets
Pour certaines instructions, il est nécessaire d’ajouter un pré-octet Cela est
nécessaire pour les instructions opérant sur les pointeurs S et Y ($10) et
pour les instructions de comparaison CMPU et CMPD ($11). Le reste de la
codification est identique au cas précédent.
Ex:LDY [$2004]  chargement du registre d’index Y avec le contenu
dont l’adresse se trouve en $2004 et $2005.
54
Ex:LDY [$2004]  chargement du registre d’index Y avec le contenu
dont l’adresse se trouve en $2004 et $2005.
Pré
Octet
MPU
PC
ADR ADR+5
ADR + 5
A
B
D
Mémoire
10
Post
Octet
ADR
AE
ADR+1
9F
ADR+2
20
ADR+3
04
ADR+4
30
2004
00
2005
11
3000
3001
X
1122
Y
S
$11 22
U
DP
E
CCR
F
H
I
N
Z
V
C
22
Adressage étendu Indirect
Instructions sur cinq octets
55
Mode adressage
I. mode d'adressage inhérent
1. inhérent simple
Exemple
ABX ; NEG…
2. inhérent paramétré
II. Mode adressage immédiat
III. Mode adressage Direct
1. sur deux octets
2. sur trois octets
3. sur quatre octets
1. sur trois octets
1. LDA
#$A0
2. ADDD
#$2009
3. LDY
#$10B4
1.LDA
$40
ou
adresse = $2040 : (DP)=$20
2. LDY
$50
Adresse=$3050/51 (DP=30)
1. LDB
$2145
2. sur quatre octets
2. CMPU
$2009
1. sur quatre octets
LDA
[$2009]
2. sur cinq octets
LDY
[$2009]
1. sur deux octets
2. sur trois octets
IV. Mode adressage étendu
V. Mode adressage étendu indirect
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
Mode d’adressage
6. Mode d'adressage relatif court
Ce mode d'adressage est réservé pour les instructions de branchement
Ex: Arret EQU $3000
BPL Arret
Dans ce cas,BPL fait un test sur le bit N du registre CCR , le
branchement a lieu si N=0 ( Résultat de l’opération précédente positif)
57
Ex: Arret EQU $3000
BPL ARRET
ARRET = ADR + 2 + Depl
MPU
PC
ADR
ARRET
ADR+2
Mémoire
ADR ++2
2
ADR
+Depl
2A
Depl
A
D
ADR
ADR+1
ADR+2
B
ADR +2 +Depl
X
Y
S
ARRET
$3000
U
DP
E
CCR
F
H
I
N
0
Z
V
C
Si N=0 alors il
y a branchement
Adressage relatif
court
Le déplacement (Depl) est calculé en fonction de la valeur de ADR par rapport à l’étiquette ARRET ($3000).
58
Mode adressage
I. mode d'adressage inhérent
1. inhérent simple
Exemple
ABX ; NEG…
2. inhérent paramétré
II. Mode adressage immédiat
III. Mode adressage Direct
1. sur deux octets
2. sur trois octets
3. sur quatre octets
1. sur trois octets
1. LDA
#$A0
2. ADDD
#$2009
3. LDY
#$10B4
1.LDA
$40
ou
adresse = $2040 : (DP)=$20
2. LDY
$50
Adresse=$3050/51 (DP=30)
1. LDB
$2145
2. sur quatre octets
2. CMPU
$2009
1. sur quatre octets
LDA
[$2009]
2. sur cinq octets
LDY
[$2009]
mode d'adressage est réservé
pour les instructions de
branchement ( (déplacement ±
7 bits)
BHS
FIN
1. sur deux octets
2. sur trois octets
IV. Mode adressage étendu
V. Mode adressage étendu indirect
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
7. Mode d'adressage relatif long
Ce mode est identique au précédent, il est toujours réservé aux
branchements. Les instructions sont codées sur quatre octets, les deux
premiers déterminent le code opération, les 3è et 4è octets donnent la valeur
signée du déplacement.
Le déplacement est codé sur 16 bits.
Exemple :
ARRET EQU $4000
LBPL ARRET
60
Exemple :
ARRET EQU $4000
LBPL ARRET
ARRET = ADR + 4 + Depl
MPU
PC
Mémoire
ADR ++44
ADR
+ Depl
ADR ADR
+4
ARRET
A
B
D
10
ADR
2A
ADR+1
Depl PFO ADR+2
Depl PFA ADR+3
ADR+4
X
ADR + 4 +
Depl
Y
S
ARRET
U
$4000
DP
E
CCR
F
H
I
N
0
Z
V
C
Si N=0 alors il y a
branchement
Adressage relatif
long
La présence d’un pré-octet ($10) permet de différencier l’adressage relatif long de l’adressage relatif court.
61
Mode adressage
I. mode d'adressage inhérent
1. inhérent simple
Exemple
ABX ; NEG…
2. inhérent paramétré
II. Mode adressage immédiat
III. Mode adressage Direct
1. sur deux octets
2. sur trois octets
3. sur quatre octets
1. sur trois octets
1. LDA
#$A0
2. ADDD
#$2009
3. LDY
#$10B4
1.LDA
$40
ou
adresse = $2040 : (DP)=$20
2. LDY
$50
Adresse=$3050/51 (DP=30)
1. LDB
$2145
2. sur quatre octets
2. CMPU
$2009
1. sur quatre octets
LDA
[$2009]
2. sur cinq octets
LDY
[$2009]
mode d'adressage est réservé pour
les instructions de branchement (
(déplacement ± 7 bits)
mode d'adressage est réservé pour
les instructions de branchement (
(déplacement ± 15 bits)
BHS
FIN
LBPL
ARRET
1. sur deux octets
2. sur trois octets
IV. Mode adressage étendu
V. Mode adressage étendu indirect
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
8. Mode d'adressage indexé
Le mode d’adressage indexé présente l’avantage de pouvoir travailler en
indirection. Dans ce cas on accède à l’adresse effective en transitant par
une adresse intermédiaire
Registre
ADRESSE EFFECTIVE = BASE + DEPLACEMENT
La puissance d’un mode d’adressage indexé est déterminée par
l’éventail des bases dont on dispose et par toutes les possibilités que
l’on a.
la base peut être soit
 un des deux registres d’index (X ou Y) ( ce qui est normale),
 mais aussi un des deux pointeurs de pile (U ou S)
 Ou ce qui est très intéressant, le compteur programme PC lui-même
(l’adressage est alors, un cas particulier de l’adressage relatif).
63
Pour ce qui est du déplacement, il y a de multiples possibilités:
celui-ci peut être nul, codé sur cinq, huit ou seize bits, ou variable
dans le cas de l’utilisation d’un accumulateur A, B ou D.
LDB $20, X
Instruction
déplacement
Base : X ou Y ou U ou S ou PC
Enfin, l’adressage indexé offre des possibilités d’auto-incrémentation
ou décrémentation de 1 ou de 2.
LDA , Y+
Toutes ces options sont sélectionnées par le post-octet
qui suit le code opératoire.
64
Mode d’adressage indexé
Bit du registre post octet
7
6
5
4
3
2
1
0
AE= , Base + Déplacement
AE= , R  4 bits
0
R
Déplacement
1
R
0
0
0
0
0
AE= , R +
1
R
0/1
0
0
0
1
AE= , R ++
1
R
0
0
0
1
0
AE= , - R
1
R
0/1
0
0
1
1
AE= , - -R
1
R
0/1
0
1
0
0
AE= , R  0
1
R
0/1
0
1
0
1
AE= , R Acc B
1
R
0/1
0
1
1
0
AE= , R Acc A
1
R
0/1
1
0
0
0
AE= , R  7 bits
1
R
0/1
1
0
0
1
AE= , R  15 bits
1
R
0/1
1
0
1
1
AE= , R  D (ACC A +Acc B)
1
0/1
1
1
0
0
AE= , PC  7 bits
1
0/1
1
1
0
1
AE= , PC  15 bits
post-octet qui suit le code opératoire.
65
Mode d’adressage indexé
Bit du registre post octet
7
6
5
4
3
2
1
0
AE= , Base + Déplacement
AE= , R  4 bits
0
R
Déplacement
1
R
0
0
0
0
0
AE= , R +
1
R
0/1
0
0
0
1
AE= , R ++
1
R
0
0
0
1
0
AE= , - R
1
R
0/1
0
0
1
1
AE= , - -R
1
R
0/1
0
1
0
0
AE= , R  0
1
R
0/1
0
1
0
1
AE= , R Acc B
1
R
0/1
0
1
1
0
AE= , R Acc A
1
R
0/1
1
0
0
0
AE= , R  7 bits
1
R
0/1
1
0
0
1
AE= , R  15 bits
1
R
0/1
1
0
1
1
AE= , R  D (ACC A +Acc B)
1
0/1
1
1
0
0
AE= , PC  7 bits
1
0/1
1
1
0
1
AE= , PC  15 bits
Les bits 5 et 6 du post octet permettent de définir la base :
BASE R
b6
b5
Index X
0
0
Index Y
0
1
Pointeur U
1
0
Pointeur S
1
1
Compteur Programme
 Indifférent, la sélection de la base PC se fait à laide
des bits 2 et 3 (1,1)
66
Mode d’adressage indexé
Bit du registre post octet
7
6
5
4
3
2
1
0
AE= , Base + Déplacement
AE= , R  4 bits
0
R
Déplacement
1
R
0
0
0
0
0
AE= , R +
1
R
0/1
0
0
0
1
AE= , R ++
1
R
0
0
0
1
0
AE= , - R
1
R
0/1
0
0
1
1
AE= , - -R
1
R
0/1
0
1
0
0
AE= , R  0
1
R
0/1
0
1
0
1
AE= , R Acc B
1
R
0/1
0
1
1
0
AE= , R Acc A
1
R
0/1
1
0
0
0
AE= , R  7 bits
1
R
0/1
1
0
0
1
AE= , R  15 bits
1
R
0/1
1
0
1
1
AE= , R  D (ACC A +Acc B)
1
0/1
1
1
0
0
AE= , PC  7 bits
1
0/1
1
1
0
1
AE= , PC  15 bits
le bit 7 définit le rôle du bit4 :
• b7=0  b4 = bit de signe.
• b7=1  b4= choix du mode direct (b4=0) ou indirect (b4=1 );
67
Mode d’adressage indexé
Bit du registre post octet
7
6
5
4
3
2
1
0
AE= , Base + Déplacement
AE= , R  4 bits
0
R
1
R
0
0
0
0
0
AE= , R +
1
R
0/1
0
0
0
1
AE= , R ++
1
R
0
0
0
1
0
AE= , - R
1
R
0/1
0
0
1
1
AE= , - -R
1
R
0/1
0
1
0
0
AE= , R  0
1
R
0/1
0
1
0
1
AE= , R Acc B
1
R
0/1
0
1
1
0
AE= , R Acc A
1
R
0/1
1
0
0
0
AE= , R  7 bits
1
R
0/1
1
0
0
1
AE= , R  15 bits
1
R
0/1
1
0
1
1
AE= , R  D (ACC A +Acc B)
1
0/1
1
1
0
0
AE= , PC  7 bits
1
0/1
1
1
0
1
AE= , PC  15 bits
0/1
1
1
1
1
AE= , Adresse
1
R
Déplacement
Les bits 0 à 3 définissent le champ du mode d’adressage.
Nous allons voir toutes les combinaisons possibles.
68
Mode d’adressage indexé
Bit du registre post octet
7
6
5
4
3
2
1
0
AE= , Base + Déplacement
AE= , R  4 bits
0
R
Déplacement
1
R
0
0
0
0
0
AE= , R +
1
R
0/1
0
0
0
1
AE= , R ++
1
R
0
0
0
1
0
AE= , - R
1
R
0/1
0
0
1
1
AE= , - -R
1
R
0/1
0
1
0
0
AE= , R  0
1
R
0/1
0
1
0
1
AE= , R Acc B
1
R
0/1
0
1
1
0
AE= , R Acc A
1
R
0/1
1
0
0
0
AE= , R  7 bits
1
R
0/1
1
0
0
1
AE= , R  15 bits
1
R
0/1
1
0
1
1
AE= , R  D (ACC A +Acc B)
1
0/1
1
1
0
0
AE= , PC  7 bits
1
0/1
1
1
0
1
AE= , PC  15 bits
Les combinaisons possibles pour les modes d’adressage:
1 :Déplacement nul
2 :Auto Incrémentation/décrémentation
3 :Déplacement constant
4 :Déplacement accumulateur
5 :Base= compteur Programme PC
Déplacement const
Auto
Increm/Décrem
Déplacement nul
Dépl accumul
Déplacement const
Dépl accumul
Dépl PC
69
Mode d’adressage indexé
Bit du registre post octet
7
6
5
4
3
2
1
0
AE= , Base + Déplacement
AE= , R  4 bits
0
R
Déplacement
1
R
0
0
0
0
0
AE= , R +
1
R
0/1
0
0
0
1
AE= , R ++
1
R
0
0
0
1
0
AE= , - R
1
R
0/1
0
0
1
1
AE= , - -R
1
R
0/1
0
1
0
0
AE= , R  0
1
R
0/1
0
1
0
1
AE= , R Acc B
1
R
0/1
0
1
1
0
AE= , R Acc A
1
R
0/1
1
0
0
0
AE= , R  7 bits
1
R
0/1
1
0
0
1
AE= , R  15 bits
1
R
0/1
1
0
1
1
AE= , R  D (ACC A +Acc B)
1
0/1
1
1
0
0
AE= , PC  7 bits
1
0/1
1
1
0
1
AE= , PC  15 bits
Les combinaisons possibles pour les modes d’adressage:
1 :Déplacement nul
2 :Auto Incrémentation/décrémentation
3 :Déplacement constant
4 :Déplacement accumulateur
5 :Base= compteur Programme PC
Déplacement const
Auto Increm/
Décrem
Déplacement nul
Dépl accumul
Déplacement const
Dépl accumul
Dépl PC
70
8.1 Mode d'adressage indexé. Déplacement nul.
Dans ce mode, le registre pointeur sélectionné contient l’adresse
effective des données devant être utilisées par l’instruction. Ce mode est le
mode indexé le plus rapide. Il existe deux types d’instructions :
Instructions sur deux octets :
Le code opératoire est suivi du post-octet précisant les options choisies pour
l’instruction en cours.
Exemple :
LDA ,X  chargement de A avec la valeur dont l’adresse est le contenu de
l’index X.
71
LDA ,X  chargement de A avec la valeur dont l’adresse est le contenu de l’index X.
MPU
Mémoire
ADR
PC
ADR + 2
ADR +2
A
D
Postoctet
11
A6
ADR
84
ADR+1
ADR+2
B
X
11
xxxx
Y
S
U
xxxx
11
DP
E
F
H
I
N
Z
V
C
CCR
Adressage indexé
Déplacement nul
Dans ce cas le post-octet est égale $84 :
•b7=1  b4=0 signifie que l’adressage est indexé direct
•b6.b5=0.0  l’index est X
•b3.b2.b1.b0=0.1.0.0  le déplacement est nul.
1
0
0
X
0
0
1
0
0
Déplacement nul
Adressage indexé direct
72
Instructions sur trois octets
pour certains registres du microprocesseur il est nécessaire d’ajouter
un pré-octet, aux deux octets opératoires proprement dit. Cela mis à
part, ce mode est identique au précédent.
Exemple :
LDY ,X chargement de l’index Y avec la valeur dont l’adresse de base
est le contenu de X.
73
VIII. Mode adressage indexé
1. Déplacement NUL :
a. Sur deux octets
a. Sur trois octets
LDB
LDY
,X
,U
LDA
LDY
,Y+
,--X
ADDB
LDA
LDB
-14,X
$30,X
$8000,Y
2. Auto Incrémentation/décrémentation :
a. Sur deux octets
a. Sur trois octets
3. Déplacement constant :
a. Sur ± 4 bits
a. Sur ± 7 bits
a. Sur ± 15 bits
4 .Déplacement accumulateur :
a.
IX. Mode adressage indexé
indirect
Déplacement sur  7 bits. Acc A ou B LDA
B,X
a. Déplacement sur  15 bits. Acc D
5. Base=Compteur Programme PC
a. Déplacement sur  7 bits.
a. Déplacement sur  15 bits.
a. Etiquette localisée
1. Déplacement nul
LEAY
D,X
LDB
ADDA
LEAX
LDA
$20,PC
$2000,PC
ETIQ,PC
[,X]
2. Auto Incrémentation/décrémentation
ADDB
[,U++]
3. Déplacement constant
4 .Déplacement accumulateur
LDA
LDU
LDA
LDA
[$2000,X]
[D,PC]
[$F000,PC]
[TABLE,PC] 74
5. Base=Compteur Programme PC
8.2 Mode d'adressage indexé. Auto-incrémentation/décrémentation
On peut obtenir des pré-décrémentations de un ou deux et des postincrémentations de un ou deux.
Ces possibilités permettent de gérer facilement une table.
Le registre pointeur sélectionné contient l’adresse effective des données
utilisées par l’instruction.
75
Instructions sur deux octets
Exemple :
LDA ,X+  chargement de A avec la valeur dont l’adresse est le
contenu de X, post-incrémentation par un de X.
76
LDA ,X+ chargement de A avec la valeur dont l’adresse est le contenu de l’index X.post
incrémentation par un de X
MPU
Mémoire
ADR
PC
ADR + 2
ADR +2
A
D
Postoctet
11
A6
ADR
80
ADR+1
ADR+2
B
11
X
xxxx
xxxx+1
Y
S
xxxx+1
U
xxxx
11
DP
E
F
H
I
N
Z
V
C
Adressage indexé
CCR
Post Octet
Auto-incrémentation/Décrémentation(2 octets)
Dans ce cas le post-octet est égale $80 :
•b7=1  b4=0 signifie que l’adressage est indexé direct
•b6.b5=0.0  l’index est X
•b3.b2.b1.b0=0.0.0.0  mode post_incrémentation.
1
0
0
X
0
0
0
0
0
post_incrémentation
Adressage indexé direct
NB: Le mode auto-incrémentation/décrémentation par un est utilisé pour gérer des tables de données
77
Instructions sur trois octets :
Exemple :
LDY , --X  chargement de Y avec la valeur dont l’adresse de base est le contenu
de X – 2.
MPU
ADR
PC
D
Mémoire
Postoctet
ADR + 3
ADR+3
10
ADR
A
AE
ADR+1
B
83
ADR+2
ADR+3
X
xxxx
Y
xxxx-2
xxxx -2
1122
S
U
1122
DP
11
xxxx- 2
22
xxxx - 1
xxxx
E
F
H
I
N
Z
V
C
Adressage indexé
CCR
Auto-incrémentation/Décrémentaion(3 octets)
Dans ce cas le post-octet est égale $83 :
•b7=1  b4=0 signifie que l’adressage est indexé direct
•b6.b5=0.0  l’index est X
•b3.b2.b1.b0=0.0.1.1  double pré décrémentation.
1
0
0
X
0
0
0
1
1
Double
pré_décrémentation
Adressage indexé direct
NB: Le mode auto-incrémentation/décrémentation par deux est utilisé pour gérer des tables d’adresses
78
VIII. Mode adressage indexé
1. Déplacement NUL :
a. Sur deux octets
a. Sur trois octets
LDB
LDY
,X
,U
LDA
LDY
,Y+
,--X
ADDB
LDA
LDB
-14,X
$30,X
$8000,Y
2. Auto Incrémentation/décrémentation :
a. Sur deux octets
a. Sur trois octets
3. Déplacement constant :
a. Sur ± 4 bits
a. Sur ± 7 bits
a. Sur ± 15 bits
4 .Déplacement accumulateur :
a.
IX. Mode adressage indexé
indirect
Déplacement sur  7 bits. Acc A ou B LDA
B,X
a. Déplacement sur  15 bits. Acc D
5. Base=Compteur Programme PC
a. Déplacement sur  7 bits.
a. Déplacement sur  15 bits.
a. Etiquette localisée
1. Déplacement nul
LEAY
D,X
LDB
ADDA
LEAX
LDA
$20,PC
$2000,PC
ETIQ,PC
[,X]
2. Auto Incrémentation/décrémentation
ADDB
[,U++]
3. Déplacement constant
4 .Déplacement accumulateur
LDA
LDU
LDA
LDA
[$2000,X]
[D,PC]
[$F000,PC]
[TABLE,PC] 79
5. Base=Compteur Programme PC
8.3 Mode d'adressage indexé. Déplacement constant
Dans ce mode d’adressage, l’adresse effective de l’opérande est la
somme du déplacement (en complément à deux) et du contenu du
registre constituant la base.
Le registre de base n’est pas modifié. Il existe trois formes d’adressage
indexé à déplacement constant, suivant la valeur de cette constante.
Déplacement sur  4 bits
Ce déplacement codé sur 5 bits (en complément à deux) présente
l’avantage d’être contenu dans le post-octet d’indexation. Ce qui permet un
gain de place mémoire et une exécution plus rapide de cette instruction.
Les bits 0 à 4 du post-octet déterminent donc la valeur du déplacement
qui peut être de -16 octets en arrière (1 0000) et de + 15 octets en avant
(0 1111). Dans ce cas le bit constamment à zéro initialise le bit 4 comme
bit de signe.
80
Exemple :
ADDB -3,Y  addition du contenu d’adresse mémoire Y-3 au contenu de l’accumulateur B, le résultat est
dans B.
MPU
Mémoire
ADR
PC
ADR + 2
ADR+2
EB
ADR
3D
ADR+1
A
D
B
ADR+2
bb bb+11
bb+11
X
yyyy
Y
-3
S
11
yyyy - 3
U
yyyy - 2
-3 + yyyy
DP
yyyy - 1
yyyy
E
CCR
F
H
I
N
Z
V
Post Octet
C
Adressage indexé
Déplacement sur  4 bits
0
0
Le post-octet prend la valeur $3D :
Y
•b7=0  le bit b4 est le bit de signe de déplacement.
•b6.b5=0.1  index Y .
•b4.b3.b2.b1.b0=1.1.1.0.1 le déplacement est -3 en complément à deux.
1
1
1
1
0
1
Déplacement (en compl à
2) = -3
81
Déplacement sur  7 bits
Ce déplacement codé sur 8 bits (en complément à deux) est contenu
dans un seul octet, placé à la suite du code opératoire proprement dit et
du post-octet. Les déplacements possibles sont donc compris entre –
128 et + 127 octets.
Exemple :
LDY $30, U  chargement du pointeur Y avec le contenu mémoire dont
l’adresse de base est le contenu de U + $30
82
Exemple :
LDY $30, U  chargement du pointeur Y avec le contenu mémoire dont l’adresse de base est
le contenu de U + $30
MPU
PC
Mémoire
ADR
ADR + 4
ADR+4
A
D
Postoctet
B
uuuu+$30
10
ADR
AE
ADR+1
C8
ADR+2
30
ADR+3
X
ADR+4
Y
1122
S
U
1122
uuuu
DP
E
F
H
I
N
Z
V
11
uuuu+$30
22
uuuu+$31
Post Octet
C
CCR
Adressage indexé
Déplacement sur  7 bits
Le post-octet prend la valeur C8 en hexa (1100 1000) :
•b7=1  b4=0 adressage indexé direct.
•b6.b5=1.0.  index U .
•b3.b2.b1.b0=1.0.0.0 le déplacement est codé sur 8 bits
en compléments à deux.
1
1
0
U
0
1
0
0
0
Déplacement ±7 bits
Adressage indexé direct
83
Déplacement sur  15 bits
Ce déplacement codé sur 16bits (en complément à deux) est contenu dans
deux octets placés à la suite de ceux de l’instruction (code opératoire +
post octet).Les déplacements possibles sont donc compris entre – 32768 et
+ 32767 octets.
Exemple :
LDA $3000, X  chargement de l’accumulateur A avec le contenu
mémoire d’adresse X + $3000
84
Exemple :
LDA $3000, X  chargement de l’accumulateur A avec le contenu mémoire d’adresse X + $3000
MPU
PC
Mémoire
ADR
ADR + 4
ADR+4
11
A
D
B
X
Postoctet
xxxx
+ $3000
A6
ADR
89
ADR+1
30
ADR+2
00
ADR+3
xxxx
ADR+4
Y
$11
S
U
xxxx +$3000
11
DP
E
F
H
I
N
Z
V
Post Octet
C
CCR
Adressage indexé
Déplacement sur  15 bits
Le post-octet prend la valeur 89 en hexa (1000 1001) :
•b7=1  b4=0 adressage indexé direct.
•b6.b5=0.0.  index X .
•b3.b2.b1.b0=1.0.0.1 le déplacement est codé sur 16 bits
en compléments à deux.
1
0
0
X
0
1
0
0
1
Déplacement ±15
bits
Adressage indexé direct
85
VIII. Mode adressage indexé
1. Déplacement NUL :
a. Sur deux octets
a. Sur trois octets
LDB
LDY
,X
,U
LDA
LDY
,Y+
,--X
ADDB
LDA
LDB
-14,X
$30,X
$8000,Y
2. Auto Incrémentation/décrémentation :
a. Sur deux octets
a. Sur trois octets
3. Déplacement constant :
a. Sur ± 4 bits
a. Sur ± 7 bits
a. Sur ± 15 bits
4 .Déplacement accumulateur :
a.
IX. Mode adressage indexé
indirect
Déplacement sur  7 bits. Acc A ou B LDA
B,X
a. Déplacement sur  15 bits. Acc D
5. Base=Compteur Programme PC
a. Déplacement sur  7 bits.
a. Déplacement sur  15 bits.
a. Etiquette localisée
1. Déplacement nul
LEAY
D,X
LDB
ADDA
LEAX
LDA
$20,PC
$2000,PC
ETIQ,PC
[,X]
2. Auto Incrémentation/décrémentation
ADDB
[,U++]
3. Déplacement constant
4 .Déplacement accumulateur
LDA
LDU
LDA
LDA
[$2000,X]
[D,PC]
[$F000,PC]
[TABLE,PC] 86
5. Base=Compteur Programme PC
8.4 Mode d'adressage indexé. Déplacement accumulateur
Ce mode d’adressage est semblable au précédent à l’exception du
déplacement qui n’est plus codé sur des octets spécifiques mais
contenu dans les accumulateurs A,B ou D du microprocesseur..
L’adresse effective est donc la somme des registres pointeur et
accumulateur spécifiés dans le mnémonique de l’instruction
Déplacement sur  7 bits. Accumulateurs A ou B
Exemple :
LDA B, X  chargement de l’accumulateur A avec le contenu mémoire
d’adresse X + B
87
Exemple :
LDA B, X  chargement de l’accumulateur A avec le contenu mémoire d’adresse X + B
MPU
PC
Mémoire
ADR
ADR + 2
ADR+2
A
D
11
B
Postoctet
A6
ADR
85
ADR+1
bb
ADR+2
$11
X
xxxx
Y
S
xxxx+bb
11
xxxx+bb
U
Post Octet
DP
E
F
H
I
N
Z
V
C
CCR
Adressage indexé
Déplacement sur  7 bits. Accu A ou B
Le post-octet prend la valeur 85 en hexa (1000 0101) :
•b7=1  b4=0 adressage indexé direct.
•b6.b5=0.0.  index X .
•b3.b2.b1.b0=0.1.0.1 le déplacement est égale
au contenu de l’Acc B (en complément à 2)
1
0
0
X
0
0
1
0
1
Déplacement =
contenu de B
(Compl à2)
Adressage indexé direct
88
Déplacement sur  15 bits. Accumulateur D
Exemple :
LEAY D, X  chargement dans l’index Y de l’adresse effective donnée par la somme D + X
MPU
PC
ADR
D
Mémoire
ADR+2
X
Y
S
U
31
8B
aa
bb
A
B
Postoctet
ADR
ADR+1
ADR+2
ADR + 2
aabb
+ xxxx
xxxx
aabb + xxxx
DP
E
F
H
I
Post Octet
N
Z
V
C
Adressage indexé
CCR
Déplacement sur  15 bits. Accumulateur D
Le post-octet prend la valeur 8B en hexa (1000 1011) :
•b7=1  b4=0 adressage indexé direct.
•b6.b5=0.0.  index X .
•b3.b2.b1.b0=1.0.1.1 le déplacement = contenu
de l’Acc D=(A :B )en complément à 2)
1
0
0
X
0
1
0
1
1
Déplacement =
Contenu D (En compl
2)
Adressage indexé direct
89
VIII. Mode adressage indexé
1. Déplacement NUL :
a. Sur deux octets
a. Sur trois octets
LDB
LDY
,X
,U
LDA
LDY
,Y+
,--X
ADDB
LDA
LDB
-14,X
$30,X
$8000,Y
2. Auto Incrémentation/décrémentation :
a. Sur deux octets
a. Sur trois octets
3. Déplacement constant :
a. Sur ± 4 bits
a. Sur ± 7 bits
a. Sur ± 15 bits
4 .Déplacement accumulateur :
a.
IX. Mode adressage indexé
indirect
Déplacement sur  7 bits. Acc A ou B LDA
B,X
a. Déplacement sur  15 bits. Acc D
5. Base=Compteur Programme PC
a. Déplacement sur  7 bits.
a. Déplacement sur  15 bits.
a. Etiquette localisée
1. Déplacement nul
LEAY
D,X
LDB
ADDA
LEAX
LDA
$20,PC
$2000,PC
ETIQ,PC
[,X]
2. Auto Incrémentation/décrémentation
ADDB
[,U++]
3. Déplacement constant
4 .Déplacement accumulateur
LDA
LDU
LDA
LDA
[$2000,X]
[D,PC]
[$F000,PC]
[TABLE,PC] 90
5. Base=Compteur Programme PC
8.5 Mode d'adressage indexé. Base=compteur programme
Les paragraphes précédents nous ont permis d’aborder les différents modes
d’adressage indexé utilisant les pointeurs X, Y,S et U comme base.
L’utilisation du compteur ordinal comme base d’indexation impose des
restrictions sur les types de déplacements.
Seuls les déplacements constants codés sur 8 ou 16 bits (en
complément à 2) peuvent être utilisés.
91
Déplacement sur  7 bits.
L’adresse effective est égale au compteur programme courant plus un
déplacement codé sur 8 bits. L’instruction est codée sur 3 octets ( code
opératoire + post-octet+ déplacement).
Exemple :
LDA $20, PC  chargement de l’accumulateur A avec le contenu
mémoire dont d’adresse est la valeur de PC + $20
92
Exemple :
LDA $20, PC  chargement de l’accumulateur A avec le contenu mémoire dont d’adresse est
la valeur de PC + $20
MPU
PC
Mémoire
ADR
ADR + 3
ADR+ 3
11
A
D
Postoctet
B
A6
ADR
8C
ADR+1
20
ADR+2
$11
ADR+3
X
Y
S
11
U
ADR +
3+$20
DP
E
F
H
I
ADR + 3+$20
N
Z
V
Post Octet
C
CCR
Adressage indexé
Base=PC
Le post-octet prend la valeur 8C en hexa (1000 1100) :
•b7=1  b4=0 adressage indexé direct.
•b6.b5  indifferent
•b3.b2.b1.b0=1.1.0.0 le déplacement
sur 8 bits (en complément à 2)
1
0
0
Indiférent
0
1
1
0
0
Déplacement sur 8
bits ( en Compl à 2)
Adressage indexé direct
93
Déplacement sur  15 bits.
L’adresse effective est égale au compteur courant plus un déplacement
codé sur deux octets. Ce mode d’adressage présente l’avantage de
permettre des déplacements sur tout l’espace mémoire du processeur
Exemple :
ADDA $2000, PC  addition du contenu mémoire dont l’adresse est la
valeur courante du PC+ $2000 et de l’accumulateur A, le résultat est
dans A.
94
Exemple :
ADDA $2000, PC  addition du contenu mémoire dont l’adresse est la valeur courante du
PC+ $2000 et de l’accumulateur A, le résultat est dans A.
MPU
PC
ADR
Mémoire
ADR+ 4
aaaa + 11
A
D
ADR + 4
B
aa+11
Postoctet
AB
ADR
8D
ADR+1
20
ADR+2
00
ADR+3
X
ADR+4
Y
S
11
U
ADR +
4+$2000
DP
E
F
H
I
ADR + 4+$2000
N
Z
V
Post Octet
C
CCR
Adressage indexé
Déplacement const sur  15 bits
Le post-octet prend la valeur 8D en hexa (1000 1101) :
•b7=1  b4=0 adressage indexé direct.
•b6.b5  indifferent
•b3.b2.b1.b0=1.1.0.1 le déplacement sur 16 bits
(en complément à 2)
1
0
0
Indiférent
0
1
1
0
1
Déplacement sur 16
bits ( en Compl à 2)
Adressage indexé direct
95
 Étiquette localisée.
Dans ce cas, la syntaxe assembleur n’utilise pas directement un déplacement
mais une étiquette localisée située à  128 octets de l’instruction suivante
(déplacement sur 8 bits) ou n’importe où sur l’espace mémoire du
microprocesseur (déplacement sur 16 bits).
Comme précédemment l’adresse effective est égale au compteur
programme courant plus un déplacement codé sur 8 ou 16 bits.
L’instruction est codée sur trois ou quatre octets.
La syntaxe assembleur contient le mnémonique de l’instruction, le nom de
l’étiquette localisée plus la base.
L’assembleur calcule la valeur du déplacement en fonction de la position
de l’étiquette.
96
Exemple :
LEAX ETIQ, PC  chargement du registre d’index X avec l’adresse effective qui est donnée par la
position de l’étiquette par rapport au compteur programme courant.
Dans cet exemple on prend :
ADR=$2000
ETIQ=$2015
 xxxx=0011
MPU
PC
Mémoire
ADR
D
ADR+4
Postoctet
ADR + 4
30
ADR
A
8D
ADR+1
B
00
11
ADR+2
xxxx= 0011
X
ADR+2
ADR+2
xxxx= ETIQ –
(ADR+4)
Y
S
ETIQ
U
DP
E
F
H
I
N
Z
V
C
CCR
Adressage indexé
Etiquette localisée
Le post-octet prend la valeur 8D en hexa (1000 1101) :
•b7=1  b4=0 adressage indexé direct.
•b6.b5  indifferent
•b3.b2.b1.b0=1.1.0.1 le déplacement sur 16 bits
(en complément à 2)
1
0
0
Indiférent
0
1
1
0
1
Déplacement sur 16
bits ( en Compl à 2)
Adressage indexé direct
97
Mode adressage
VIII. Mode adressage indexé 1. Déplacement NUL :
a.
a.
Sur deux octets
Sur trois octets
Exemple
LDB
LDY
,X
,U
LDA
LDY
,Y+
,--X
ADDB
LDA
LDB
-14,X
$30,X
$8000,Y
2. Auto Incrémentation/décrémentation :
a. Sur deux octets
a. Sur trois octets
3. Déplacement constant :
a. Sur ± 4 bits
a. Sur ± 7 bits
a. Sur ± 15 bits
4 .Déplacement accumulateur :
a.
IX. Mode adressage indexé
indirect
Déplacement sur  7 bits. Acc A ou B LDA
B,X
a. Déplacement sur  15 bits. Acc D
5. Base=Compteur Programme PC
a. Déplacement sur  7 bits.
a. Déplacement sur  15 bits.
a. Etiquette localisée
1. Déplacement nul
LEAY
D,X
LDB
ADDA
LEAX
LDA
$20,PC
$2000,PC
ETIQ,PC
[,X]
2. Auto Incrémentation/décrémentation
ADDB
[,U++]
3. Déplacement constant
4 .Déplacement accumulateur
LDA
LDU
LDA
LDA
[$2000,X]
[D,PC]
[$F000,PC]
[TABLE,PC]
5. Base=Compteur Programme PC
9. Mode d'adressage indexé indirect
Le mode d’adressage indexé présente l’avantage de pouvoir travailler en
indirection.
Dans ce cas 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 de l’index + le déplacement.
La syntaxe assembleur utilisée pour définir l’indirection est la même que celle
de l’adressage étendu : « [ ] »
Les instructions sont codés sur deux octets, le premier définit le code opératoire
(identique à l’indexé simple), le second le type de déplacement, le type de base
et l’indirection.
99
9.1 Mode d'adressage indexé indirect. Déplacement nul
Exemple :
LDA [, X]  chargement de A avec le contenu mémoire dont l’adresse est le contenu de
(X,X+1).
MPU
Mémoire
Post Octet
A6
PC
ADR
ADR+2
ADR + 2
ADR
94
ADR+1
11
A
D
ADR+2
B
xxxx
X
Y
S
U
20
xxxx
08
xxxx+1
11
2008
11
DP
E
F
H
I
N
Z
V
C
CCR
Adressage indexé Indirect
Déplacement nul
Le post-octet prend la valeur 94 en hexa (1001 0100) :
•b7=1  b4=1 adressage indexé indirect.
•b6.b5 =0.0 index X
•b3.b2.b1.b0=0.1.0.0  déplacement nul
1
0
0
X
1
0
1
0
0
Déplacement nul
100
Adressage indexé indirect
9.2 Mode d'adressage indexé indirect. Auto-incrémentation/décrémentation
Le mode indexé travaille seulement en auto-incrémentation/décrémentation
par deux, ce qui est normal car ce mode permet de gérer des adresses
Exemple :
ADDA [, U++]  addition de l’accumulateur A et du contenu mémoire
dont l’adresse se trouve pointée par U,U+1, le résultat est dans A.
101
Exemple :
ADDA [, U++]  addition de l’accumulateur A et du contenu mémoire dont l’adresse se trouve
pointée par U,U+1, le résultat est dans A.
MPU
PC
Mémoire
ADR
ADR+2
ADR + 2
Post Octet
AB
ADR
D1
ADR+1
ADR+2
aa
aa+11
A
D
B
aa+11
X
Y
S
U
20
uuuu
08
uuuu+1
11
2008
uuuu
DP
E
F
H
I
uuuu+2
N
Z
V
C
CCR
Adressage indexé Indirect
Auto-incrémentation/décrémentation
Le post-octet prend la valeur D1 en hexa (1101 0001) :
•b7=1  b4=1 adressage indexé indirect.
•b6.b5 =1.0 index U
•b3.b2.b1.b0=0.0.0.1  post auto-incrémentation de 2
1
1
0
U
1
0
0
0
1
Post auto_incrémentation
de 2
102
Adressage indexé indirect
9.3 Mode d'adressage indexé indirect. Déplacement constant
Les déplacements constants sont codés sur 8 ou 16 bits (en complément à
deux). L’indirection n’est pas possible pour un déplacement codé sur 5
bits.
Exemple :
LDA [$2000, X]  chargement de l’accumulateur A avec le contenu
mémoire dont l’adresse est pointée par X+ $2000.
103
Exemple :
LDA [$2000, X]  chargement de l’accumulateur A avec le contenu mémoire dont l’adresse est
pointée par X+ $2000.
MPU
PC
Mémoire
ADR
ADR+4
A
D
ADR + 4
11
Post Octet
A6
ADR
99
ADR+1
20
ADR+2
00
ADR+3
B
ADR+4
$11
X
xxxx
Y
S
xxxx
+$2000
U
30
xxxx+2000
00
xxxx+2001
11
3000
DP
E
F
H
I
N
Z
V
C
CCR
Adressage indexé Indirect
Déplacement constant
Le post-octet prend la valeur 99 en hexa (1001 1001) :
•b7=1  b4=1 adressage indexé indirect.
•b6.b5 =0.0 index X
•b3.b2.b1.b0=1.0.0.1  déplacement constant sur  15 bits
1
0
0
X
1
1
0
0
1
Dépl constant sur ±15 bits
104
Adressage indexé indirect
9.4 Mode d'adressage indexé indirect. Déplacement accumulateur
Comme dans l’adressage indexé simple, le déplacement est contenu dans
les accumulateurs A, B ou D( en complément à deux)
Exemple :
LDU [D, Y]  chargement de U avec le contenu dont l’adresse mémoire
est pointée par le contenu de Y + celui de D.
105
Exemple :
LDU [D, Y]  chargement de U avec le contenu dont l’adresse mémoire est pointée par le contenu
de Y + celui de D.
MPU
PC
Mémoire
ADR ADR+2
D
A
aa
B
bb
ADR + 2
EE
ADR
BB
ADR+1
ADR+2
yyyy +
aabb
X
yyyy
Y
Post Octet
S
U
30
yyyy+aabb
00
yyyy+aabb+1
11
3000
22
3000+1
1122
DP
E
F
H
I
N
Z
V
C
1122
CCR
Adressage indexé Indirect
Déplacement accumulateur
Le post-octet prend la valeur BB en hexa (1011 1011) :
•b7=1  b4=1 adressage indexé indirect.
•b6.b5 =0.1 index Y
•b3.b2.b1.b0=1.0.1.1  déplacement accumulateur D
(en complément à deux)
1
0
1
Y
1
1
0
1
1
Dépl accumulateur D
En compl à 2
106
Adressage indexé indirect
9.5 Mode d'adressage indexé indirect. Base= compteur programme
Si la base est le compteur programme lui-même, les déplacements sont
codés sur 8 ou 16 bits en complément à deux, l’indirection est possible
dans ces deux cas.
Exemple :
LDA [$F000, PC]  chargement de A avec la valeur dont l’adresse est
pointée par la valeur courante du PC + $F000.
107
Exemple :
LDA [$F000, PC]  chargement de A avec la valeur dont l’adresse est pointée par la valeur
courante du PC + $F000.
MPU
PC
ADR
Mémoire
ADR+4
11
A
D
ADR + 4
Post
Octet
A6
ADR
9D
ADR+1
F0
ADR+2
00
ADR+3
B
ADR+4
ADR+4+$F000=
MMmm
X
Y
S
PP
MMmm
pp
MMmm+1
U
DP
E
F
H
I
N
Z
V
C
11
11
PPpp
CCR
Adressage indexé Indirect
Base= compteur programme
Le post-octet prend la valeur 9D en hexa (1001 1101) :
•b7=1  b4=1 adressage indexé indirect.
•b6.b5 =indifferent
•b3.b2.b1.b0=1.1.0.1  déplacement codé sur  15 bits.
1
0
0
indiférent
1
1
1
0
1
Dépl codé sur ± 15 bits
108
Adressage indexé indirect
Comme pour l’adressage indexé direct, on peut utiliser dans ce
mode non pas un déplacement mais une étiquette localisée, pour
ce qui est de la syntaxe assembleur.
Exemple :
LDA [TABLE, PC]  chargement de A avec la valeur dont l’adresse est
pointée par TABLE.
109
Exemple :
LDA [TABLE, PC]  chargement de A avec la valeur dont l’adresse est pointée par TABLE.
MPU
PC
Mémoire
ADR
ADR+4
ADR + 4
11
A
D
Post Octet
A6
ADR
9D
ADR+1
DD
ADR+2
dd
ADR+3
B
ADR+4
TABLE-(ADR+4)
=DDdd
X
Y
PP
S
TABLE
pp
U
DP
E
F
H
I
N
Z
V
C
11
11
PPpp
CCR
Adressage indexé Indirect
PC & (étiquette localisée)
Le post-octet prend la valeur 9D en hexa (1001 1101) :
•b7=1  b4=1 adressage indexé indirect.
•b6.b5 =indifferent
•b3.b2.b1.b0=1.1.0.1  déplacement codé sur  15 bits.
1
0
0
indiférent
1
1
1
0
1
Dépl codé sur ± 15 bits
110
Adressage indexé indirect
Conclusion
Le microprocesseur 6809 offre de nombreuses possibilités d’adressage
indexé (simple ou indirect) suivant le type de base et de déplacement choisi.
Le tableau suivant résume toutes ces possibilités :
LDB $20, X
Instruction
Déplacement
4 bits
Nul
Base : X ou Y ou U ou S ou PC
déplacement
7
bits
 15
bits
Acc
A
Acc
B
Acc
D
Pré- auto
décrémentation
Post_auto
décrémentation
de un :
de deux :
de un :
de deux :
« ,-  »
« ,-- »
« ,+ »
« ,-- ++»
Index X











Index Y











Pointeur S











Pointeur U











PC
X
X


X
X
X
X
X
X
X
Tableau : combinaisons des adressages indexé

: indexé avec indirection possible

: indexé avec indirection impossible
X
: pas d’adressage indexé
111
Conclusion
Le microprocesseur 6809 offre de nombreuses possibilités d’adressage
indexé (simple ou indirect) suivant le type de base et de déplacement choisi.
Le tableau suivant résume toutes ces possibilités :
LDB $20, X
Instruction
Déplacement
4 bits
Nul
Base : X ou Y ou U ou S ou PC
déplacement
7
bits
 15
bits
Acc
A
Acc
B
Acc
D
Pré- auto
décrémentation
Post_auto
décrémentation
de un :
de deux :
de un :
de deux :
« ,-  »
« ,-- »
« ,+ »
« ,-- ++»
Index X











Index Y











Pointeur S











Pointeur U











PC
X
X


X
X
X
X
X
X
X
Tableau : combinaisons des adressages indexé

: indexé avec indirection possible

: indexé avec indirection impossible
X
: pas d’adressage indexé
112
Conclusion
Le microprocesseur 6809 offre de nombreuses possibilités d’adressage
indexé (simple ou indirect) suivant le type de base et de déplacement choisi.
Le tableau suivant résume toutes ces possibilités :
LDB $20, X
Instruction
Déplacement
4 bits
Nul
Base : PC
déplacement
7
bits
 15
bits
Acc
A
Acc
B
Acc
D
Pré- auto
décrémentation
Post_auto
décrémentation
de un :
de deux :
de un :
de deux :
« ,-  »
« ,-- »
« ,+ »
« ,-- ++»
Index X











Index Y











Pointeur S











Pointeur U











PC
X
X


X
X
X
X
X
X
X
Tableau : combinaisons des adressages indexé

: indexé avec indirection possible

: indexé avec indirection impossible
X
: pas d’adressage indexé
113
FIN DE LA 1ère Partie
Merci de votre attention
114
Classification des
instructions
115
Classification des instructions
Les instructions du 6809 sont classées par groupe (5) :
I.
Instructions de traitement des données
II.
Instructions de transfert
III. Instructions de test et de branchements
IV. Instruction opérant sur les pointeurs
V.
Traitement des interruptions
116
Classification des instructions
I. Instructions de traitement des données
Les instructions de traitement des données se répartissent en Quatre
catégories:
1. Les instructions arithmétiques
2. Les instructions de rotation et décalage
3. Les instructions logiques
4. Les instructions d'incrémentation-décrémentation,
mise à 0, complémentation
117
I. Instructions de traitement des données
1. Les instructions arithmétiques
Instruction
Fonction
ADD
Addition du contenu mémoire à un accumulateur
ADC
Addition du contenu mémoire à un accumulateur avec retenue
ABX
Addition de l'accumulateur B à X(Non signé)
DAA
Ajustement décimal de l'accumulateur A
MUL
Multiplication de A par B (Non signé)
SUB
Soustraction du contenu mémoire à l'accumulateur
SBC
Soustraction du contenu mémoire à l'accumulateur avec retenue
SEX
Extension de signe de l'accumulateur B à l'accumulateur A
118
I. Instructions de traitement des données
2. Les instructions de rotation et décalage
Instruction
Fonction
ASR
Décalage arithmétique à droite
LSL ou ASL
Décalage logique ou arithmétique à gauche
LSR
Décalage logique à droite
ROL
Rotation à gauche
ROR
Rotation à droite
N.B: Ces instructions opèrent sur des déplacements de 1 bit seulement
119
I. Instructions de traitement des données
3 .les instructions logiques
Ces instructions portent toutes sur des données de 8 bits
Instruction
Fonction
AND
« ET logique » entre mémoire et registre interne
EOR
« OU Exclusif » entre mémoire et registre interne
OR
« OU logique» entre mémoire et registre interne
120
I. Instructions de traitement des données
4 Instructions d’incrémentation-décrémentation, mise à 0, complémentation
Ces instructions (Sauf NOP) agissent sur une seule opérande.
Instruction
Fonction
CLR
Remise à zéro du contenu mémoire ou de l’accumulateur
DEC
Décrémentation du contenu mémoire ou de l’accumulateur
INC
Incrémentation du contenu mémoire ou de l’accumulateur
NOP
Pas d’opération. Incrémentation du compteur programme
COM
Complément à un du contenu mémoire ou de l’accumulateur
NEG
Complément à deux du contenu mémoire ou de
l’accumulateur
121
II Instructions de transfert des données
On peut classer les instructions de transfert des données en TROIS catégories :
1. Instructions opérant sur les registres internes et la mémoire
2. Instructions de transfert opérant sur les pointeurs
3. Instructions opérant seulement sur les registres internes du microprocesseur
1. Instructions opérant sur les registres internes et la mémoire
Ce type d’instructions est très employé. Les transferts mémoire, registre interne du
microprocesseur se font su 8 (A, B) ou sur 16 bits(D, X, Y, S , U). Seuls les registres
PC et DP ne sont pas accessibles directement.
Instruction
Fonction
LD
Chargement des registres internes du MPU
ST
Mise en mémoire des registres internes du MPU
122
II Instructions de transfert des données
On peut classer les instructions de transfert des données en TROIS catégories :
1. Instructions opérant sur les registres internes et la mémoire
2. Instructions de transfert opérant sur les pointeurs
3. Instructions opérant seulement sur les registres internes du microprocesseur
2. Instructions de transfert opérant sur les pointeurs
Pour accéder aux piles du 6809, il existe deux instructions « d’empilage » et de
« dépilage ». Ces instructions transfèrent n’importe quel registre interne du
microprocesseur.
Instruction
Fonction
PSH
Empilement de(s) registre(s) sur la pile
PUL
Dépilement de(s) registre(s)
123
II Instructions de transfert des données
On peut classer les instructions de transfert des données en TROIS catégories :
1. Instructions opérant sur les registres internes et la mémoire
2. Instructions de transfert opérant sur les pointeurs
3. Instructions opérant seulement sur les registres internes du microprocesseur
3.Instructions opérant seulement sur les registres internes du microprocesseur
Ces instructions permettent tous les transferts possibles entre les registres internes
du microprocesseur.
Instruction
Fonction
EXB
Echange du contenu de deux registres
TRF
Transfert de registre à registre
124
III Instructions de tests et branchements
Ces instructions peuvent se répartir en trois catégories distinctes :
1.
Instructions de test et de comparaison
2.
Instructions de test et de branchement ;
3.
Instructions de saut et branchement
1.
Instructions de test et de comparaison
Ces instructions sont utilisées pour réaliser des tests de bits et des comparaisons. Les contenus
mémoire et accumulateur ne sont pas modifiés. Le résultat de ces instructions agit uniquement
sur les indicateurs du registre d’état, il n’entraîne pas de rupture de séquence( aucun
branchement n’est effectué).
Instruction
Fonction
BIT
Test de bits entre accumulateur et contenu mémoire
CMP
Comparaison du contenu mémoire (1 ou 2 octets) avec un registre interne (8 ou 16
bits) du microprocesseur
TST
Test du contenu mémoire ou d’un accumulateur
125
III Instructions de tests et branchements
2. Instructions de test et de branchement
Ces instructions permettent de réaliser des branchements conditionnels. Les tests s’effectuent sur
4 indicateurs du registre d’état :
- N : Bit de signe ou bit « négatif » (bit 3 du CCR) ;
- Z : indique si le résultat des opérations est égal ou différent de zéro (bit 2
du CCR) ;
- V : indicateur de débordement (bit 1 du CCR) ;
- C : bit de retenue (bit 0 du CCR)
Instruction
Fonction
(L)BCC ou (L)BHS
Branchement si pas de retenue
(L)BCS ou (L)BLO
Branchement si retenue
(L) BEQ
Branchement si égale à zéro
(L)BNE
Branchement si différent de zéro
(L)BGE
Branchement si supérieur ou égal à zéro
(L)BLT
Branchement si inférieur (signé)
(L)BGT
Branchement si supérieur (signé)
(L)BLE
Branchement si inférieur ou égal (signé)
(L)BHI
Branchement si supérieur (non signé)
(L)BLS
Branchement si inférieur ou égal (non signé)
(L)BMI
Branchement si négatif
(L)BPL
Branchement si positif
(L)BVC
Branchement si pas de débordement
(L)BVS
Branchement si débordement
N.B : La lettre (L) précédant le mnémonique précise qu’il s’agit d’un déplacement long (16 bits).
126
III Instructions de tests et branchements
3. Instructions de saut et branchement
Ces instructions entraînent des ruptures de séquence, sans conditions préalables. Il faut toutefois
différencier les instructions de branchement qui sont suivies d’un déplacement long ou court, des
instructions de saut qui sont, elles, suivies de l ‘adresse effective.
Instruction
Fonction
(L)BRA
Branchement inconditionnel
(L)BRN
Non branchement (non opération)
(L) BSR
Branchement à un sous programme
JMP
Saut inconditionnel à une adresse effective
JSR
Saut à un sous programme
RTS
Retour de sous programme
127
IV Instructions opérant sur les pointeurs
Le processeur calcule une adresse effective en fonction du mode d’adressage spécifique(toujours
indexé) puis charge cette valeur dans le pointeur (X, Y, S ou U).
Instruction
LEA
Fonction
Chargement d’un registre pointeur avec une adresse effective
V. Traitement des interruptions
Il existe sur le 6809, trois interruptions logicielles et trois interruptions matérielles.
Fonction
Instruction
CWAY
Validation puis attente d’une interruption
SYNC
Synchronisation du logiciel avec une ligne d’interruption
RTI
Retour du sous programme d’interruption
SW1/SW2/SW3
Interruption logicielle
128
FIN
Merci de votre attention
129
Téléchargement