Microprocesseur 6809
(2° GIM )
Mr KHATORY
1
Naissance du microprocesseur
2
Organisation matérielle du 6809
3
Organisation matérielle du 6809
39
XTAL
38 EXTAL
Horloge A0
35 Bus
Q 8
34 des
E
33
23 adresses
DMA/BREQ
5
BS
6
BA A15
2
Bus de commande NMI
3
IRQ D0 24
4 Bus
FIRQ
des
40 HALT 31
37
données
RESET
36 D7
Signaux MRDY
mémoire 32
R/ W
BROCHAGE DU MC 6809
4
Organisation matérielle du 6809
0V +5V
39
XTAL
38 EXTAL
Horloge A0
35 Bus
Q 8
34 des
E
33
23 adresses
DMA/BREQ
5
BS
6
BA A15
2
Bus de commande NMI
3
IRQ D0 24
4 Bus
FIRQ
des
40 HALT 31
37
données
RESET
36 D7
Signaux MRDY
mémoire 32
R/ W
BROCHAGE DU MC 6809
5
Architecture 6809
16 bits
8 bits 8 bits
Accumulateurs. A B
Manipulation
des données D
Registres X
d'index
Y
Pointeurs de U
pile
S
DP Registre page direct
PC Compteur programme
6
Architecture 6809
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
UAL
UAL
Registre A Registre B
11
Architecture 6809
DP
Registre de page: DP
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
H Demi-retenue
H Demi-retenue
H Demi-retenue
H Demi-retenue
H Demi-retenue
H Demi-retenue
H Demi-retenue
H Demi-retenue
Instruction (mnémoniques)
Opération Opérande
LDA $2000
Charger (Load ) dans
le registre A
23
Mode d’adressage
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 :
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 Mémoire
PC ADR
ADR+1 ADR+ 1 Code Opération
de ABX
D A
B 14
3A ADR
X 2008
201C 2008 + 14
Y
DP
7 6 5 4 3 2 1 0
CCR
Attente d'interruption.
26
Mode d’adressage
MPU Mémoire
PC ADR
ADR +2
ADR+ 2
D A
B
1F ADR
X
34 ADR+1
Y
ADR+2
S 1000
U 1000
DP
7 6 5 4 3 2 1 0
Post-octet transfert/échange :
code Registre
0000 D Code Opération
0001 X 1F
0010 Y
0011 U TFR U,S transfert de U dans S
0100 S
Post-Octet
0101 PC 34
1000 A
1001 B
1010 CCR
1011 DP
28
Mode d’adressage
Post-octet transfert/échange :
code Registre
0000 D Code Opération
0001 X 1F
0010 Y
0011 U TFR U,S transfert de U dans S
0100 S
3 4 Post-Octet
0101 PC 34
1000 A
1001 B
1010 CCR
1011 DP
29
Mode d’adressage
MPU Mémoire
PC ADR
ADR+2 ADR+ 2
34 ADR
16 ADR + 1
A aa ADR + 2
D
B bb
X xx x’x’
aa SSS’S’ -4
Y
bb SSS’S’ -3
S ss SSS’S’-4 s’s’ SSS’S’ - 4 xx SSS’S’ -2
U x’x’ SSS’S’ -1
DP SSS’S’
7 6 5 4 3 2 1 0
CCR Adressage inhérent paramétré 30
Instructions d’accès aux piles
EMPILEMENT
Mnémoniques :
PSHS liste explicite de registres à empiler
ou (implicitement)
PSHS #$xy
b7 b6 b5 b4 b3 b2 b1 b0
(#$xy) PC U Y X DP B A CCR
=
MPU Mémoire
3C ADR
PC ADR
ADR+2 ADR+ 2 FF ADR + 1
ADR + 2
A aa
D
CCR SSS’S’ -C
B bb
aa SSS’S’ -B
bb SSS’S’ -A
X xx x’x’ pp SSS’S’ -9
Y yy y’y’ xx SSS’S’ -8
SSS’S’ - C
S ss SSSS’-C s’s’ x’x’ SSS’S’ -7
U uu u’u’ yy SSS’S’ -6
pp y’y’ SSS’S’ -5
DP
Masque INT IRQ uu SSS’S’ -4
7 6 5 4 3 2 1 0 u’u’ SSS’S’ -3
7 6 5 4 3 2 1 0
CCR x x x x x x x x ADR +2 SSS’S’ -2
CCR 1 1 x 1 x x x x
SSS’S’ -1
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 :
34
Ex : LDA #$15 charger la valeur $15 dans l’accumulateur A. Le
premier octet contient le code opératoire
MPU Mémoire
$15 86 ADR
X
15 ADR+1
Y
ADR+2
S
U
DP
7 6 5 4 3 2 1 0
CCR Adressage immédiat
Instructions sur deux octets
35
Instructions sur trois octets
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
PC ADR
ADR +3 Code Opération
ADDD
D A 31 11
B 22
27 $1122+$2005 C3 ADR
20 ADR+1
X
05 ADR+2
Y
ADR+3
S
DP
E F H I N Z V C
37
Instructions sur quatre octets
38
Ex :LDY # $2008 charger l’index Y avec la valeur $2008
MPU Mémoire
ADR + 4 Octet
PC ADR
ADR +4 supplémentaire
D A
B
10 ADR
$10
8E ADR+1
X
20 ADR+2
Y 2008
08 ADR+3
S
ADR+4
U $2008
DP
E F H I N Z V C
39
Mode adressage Exemple
I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
a. Echange, transfert registre a.TRF U,S
b. Accès aux piles b. PSHS A,B,X
c. attente interruptions c. CWAI #$FF
II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0
2. sur trois octets 2. ADDD #$2009
3. sur quatre octets 3. LDY #$10B4
III. Mode adressage Direct
IV. Mode adressage étendu
V. Mode adressage étendu indirect
DP ¨PF
42
Instructions sur deux octets
Le premier octet définit le code opératoire, le second les poids faible de
l’adresse effective.
PC ADR ADR + 2
ADR +2
96 ADR
A 08 ADR+1
D 11
ADR+2
B
S
11 20 08
U
DP 20
E F H I N Z V C
44
Ex : LDY $05 ou LDY < $05 chargement du registre Y avec le
contenu de $2005/06 (DP=$20)
MPU Mémoire
PC ADR
ADR+3 ADR + 3
10 ADR
A 9E ADR+1
D
B 05 ADR+2
X
Y 1122
1122
S
11 20 05
U
22 20 06
DP 20
E F H I N Z V C
CCR Adressage direct
Instructions sur trois octets
45
Mode adressage Exemple
I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
a. Echange, transfert registre a.TRF U,S
b. Accès aux piles b. PSHS A,B,X
c. attente interruptions c. CWAI #$FF
II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0
2. sur trois octets 2. ADDD #$2009
3. sur quatre octets 3. LDY #$10B4
III. Mode adressage Direct 1.LDA $40 ou
1. sur deux octets LDA <$40
adresse = $2040 : (DP)=$20
2. LDY $50
2. sur trois octets
Adresse=$3050/51 (DP=30)
IV. Mode adressage étendu
V. Mode adressage étendu indirect
Le symbole « > » est une directive assembleur qui force l’adressage étendu.
Il existe deux types d’instructions dans ce mode d’adressage
47
Ex : LDA $21A5 ou LDA > $ 21A5 chargement de l’accumulateur A
avec le contenu de l’adresse $21A5
MPU Mémoire
PC ADR
ADR+3 ADR + 3
B6 ADR
A 11 21 ADR+1
D
B A5 ADR+2
X $11
Y
S
11 21 A5
U
DP
E F H I N Z V C
CCR Adressage étendu
Instructions sur trois octets
48
Mode d'adressage étendu
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 ADR + 4
10 ADR
A BE ADR+1
D
B 2C ADR+2
B5 ADR+3
X $1122 ADR+4
Y 1122
S
U 11 2C B5
DP 22 2C B6
E F H I N Z V C
CCR Adressage étendu
Instructions sur quatre octets
50
Mode adressage Exemple
I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
52
Ex :LDA [$2000] chargement de l’accumulateur avec le contenu dont
l’adresse se trouve en $2000 et $2001.
D A 11 ADR+2
20
B
00 ADR+3
ADR+4
X
$11
Y
30 2000
S
00 2001
U
DP
11 3000
E F H I N Z V C
CCR
54
Ex:LDY [$2004] chargement du registre d’index Y avec le contenu
dont l’adresse se trouve en $2004 et $2005.
X
Y 1122
30 2004
S
00 2005
U $11 22
DP
11 3000
E F H I N Z V C
22 3001
CCR
57
Ex: Arret EQU $3000
BPL ARRET
ARRET = ADR + 2 + Depl
MPU Mémoire
PC
ADR ARRET
ADR+2 ADR
ADR ++2
2
+Depl 2A ADR
A Depl ADR+1
D
B ADR+2
ADR +2 +Depl
X
S
ARRET $3000
U
DP
Si N=0 alors il
E F H I N Z V C y a branchement
Le déplacement (Depl) est calculé en fonction de la valeur de ADR par rapport à l’étiquette ARRET ($3000).
58
Mode adressage Exemple
I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
VI. Mode adressage relatif court mode d'adressage est réservé BHS FIN
pour les instructions de
branchement ( (déplacement ±
7 bits)
VII. Mode adressage relatif long
60
Exemple : ARRET EQU $4000
LBPL ARRET ARRET = ADR + 4 + Depl
MPU Mémoire
La présence d’un pré-octet ($10) permet de différencier l’adressage relatif long de l’adressage relatif court.
61
Mode adressage Exemple
I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
VI. Mode adressage relatif court mode d'adressage est réservé pour BHS FIN
les instructions de branchement (
(déplacement ± 7 bits)
VII. Mode adressage relatif long mode d'adressage est réservé pour LBPL ARRET
les instructions de branchement (
(déplacement ± 15 bits)
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
8. Mode d'adressage indexé
LDB $20, X
Instruction déplacement Base : X ou Y ou U ou S ou PC
LDA , Y+
Toutes ces options sont sélectionnées par le post-octet
qui suit le code opératoire.
64
Bit du registre post octet Mode d’adressage indexé
7 6 5 4 3 2 1 0 AE= , Base + Déplacement
0 R Déplacement AE= , R 4 bits
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)
65
Bit du registre post octet Mode d’adressage indexé
7 6 5 4 3 2 1 0 AE= , Base + Déplacement
0 R Déplacement AE= , R 4 bits
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)
BASE R b6 b5
Index X 0 0
Index Y 0 1
Pointeur U 1 0
Pointeur S 1 1
Indifférent, la sélection de la base PC se fait à laide 66
Compteur Programme
des bits 2 et 3 (1,1)
Bit du registre post octet Mode d’adressage indexé
7 6 5 4 3 2 1 0 AE= , Base + Déplacement
0 R Déplacement AE= , R 4 bits
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)
67
Bit du registre post octet Mode d’adressage indexé
7 6 5 4 3 2 1 0 AE= , Base + Déplacement
0 R Déplacement AE= , R 4 bits
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)
68
Bit du registre post octet Mode d’adressage indexé
7 6 5 4 3 2 1 0 AE= , Base + Déplacement
0 R Déplacement AE= , R 4 bits Déplacement const
1 R 0 0 0 0 0 AE= , R +
1 R 0/1 0 0 0 1 AE= , R ++ Auto
1 R 0 0 0 1 0 AE= , - R Increm/Décrem
1 R 0/1 0 0 1 1 AE= , - -R
1 R 0/1 0 1 0 0 AE= , R 0 Déplacement nul
1 R 0/1 0 1 0 1 AE= , R Acc B
Dépl accumul
1 R 0/1 0 1 1 0 AE= , R Acc A
1 R 0/1 1 0 0 0 AE= , R 7 bits
Déplacement const
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) Dépl accumul
1 0/1 1 1 0 0 AE= , PC 7 bits
Dépl PC
1 0/1 1 1 0 1 AE= , PC 15 bits
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
Post-
octet
PC ADR ADR + 2
ADR +2
A6 ADR
A 84 ADR+1
D 11
B ADR+2
X xxxx 11
U
11 xxxx
DP
E F H I N Z V C
Déplacement nul
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 LDB ,X
a. Sur trois octets LDY ,U
2. Auto Incrémentation/décrémentation :
a. Sur deux octets LDA ,Y+
a. Sur trois octets LDY ,--X
3. Déplacement constant :
a. Sur ± 4 bits ADDB -14,X
a. Sur ± 7 bits LDA $30,X
a. Sur ± 15 bits LDB $8000,Y
4 .Déplacement accumulateur :
a. Déplacement sur 7 bits. Acc A ou B LDA B,X
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
Post-
octet
PC ADR ADR + 2
ADR +2
A6 ADR
A 80 ADR+1
D 11
B ADR+2
11
X xxxx xxxx+1
S
xxxx+1
U
11 xxxx
DP
E F H I N Z V C
A AE ADR+1
D
B 83 ADR+2
ADR+3
X xxxx xxxx-2 xxxx -2
Y 1122
U
11 xxxx- 2
DP 1122
22 xxxx - 1
xxxx
E F H I N Z V C
Auto-incrémentation/Décrémentaion(3 octets)
1 0 0 0 0 0 1 1
Dans ce cas le post-octet est égale $83 :
•b7=1 b4=0 signifie que l’adressage est indexé direct X Double
pré_décrémentation
•b6.b5=0.0 l’index est X
•b3.b2.b1.b0=0.0.1.1 double pré décrémentation. Adressage indexé direct 78
NB: Le mode auto-incrémentation/décrémentation par deux est utilisé pour gérer des tables d’adresses
VIII. Mode adressage indexé 1. Déplacement NUL :
a. Sur deux octets LDB ,X
a. Sur trois octets LDY ,U
2. Auto Incrémentation/décrémentation :
a. Sur deux octets LDA ,Y+
a. Sur trois octets LDY ,--X
3. Déplacement constant :
a. Sur ± 4 bits ADDB -14,X
a. Sur ± 7 bits LDA $30,X
a. Sur ± 15 bits LDB $8000,Y
4 .Déplacement accumulateur :
a. Déplacement sur 7 bits. Acc A ou B LDA B,X
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
PC ADR ADR + 2
ADR+2
EB ADR
A 3D ADR+1
D
B bb bb+11 ADR+2
bb+11
X
Y yyyy
-3
S
11 yyyy - 3
U
yyyy - 2
-3 + yyyy
DP yyyy - 1
yyyy
E F H I N Z V C Post Octet
CCR Adressage indexé
0 0 1 1 1 1 0 1
Le post-octet prend la valeur $3D :
•b7=0 le bit b4 est le bit de signe de déplacement. Y Déplacement (en compl à
2) = -3
•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. 81
Déplacement sur 7 bits
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 Mémoire
Post-
octet
PC ADR ADR + 4
ADR+4
10 ADR
A AE ADR+1
D
B uuuu+$30
C8 ADR+2
30 ADR+3
X ADR+4
Y 1122
S
1122
U uuuu 11 uuuu+$30
DP 22 uuuu+$31
Post Octet
E F H I N Z V C
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 Mémoire
Post-
octet
PC ADR ADR + 4
ADR+4
A6 ADR
D A 11 89 ADR+1
B xxxx 30 ADR+2
+ $3000
00 ADR+3
X xxxx ADR+4
Y
$11
S
U xxxx +$3000
11
DP
E F H I N Z V C Post Octet
CCR Adressage indexé
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 Mémoire
Post-
octet
PC ADR ADR + 2
ADR+2
A6 ADR
D A 11 85 ADR+1
B bb ADR+2
$11
X xxxx
S
xxxx+bb 11 xxxx+bb
U
Post Octet
DP
E F H I N Z V C
MPU Mémoire
Post-
ADR + 2 octet
PC ADR ADR+2
31 ADR
D A aa 8B ADR+1
B bb ADR+2
aabb
X xxxx + xxxx
Y aabb + xxxx
S
U
DP Post Octet
E F H I N Z V C
CCR Adressage indexé
Déplacement sur 15 bits. Accumulateur D
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.
91
Déplacement sur 7 bits.
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 Mémoire Post-
octet
ADR + 3
PC ADR ADR+ 3
A6 ADR
D A 11 8C ADR+1
B 20 ADR+2
$11 ADR+3
X
Y
S 11 ADR + 3+$20
U ADR +
Post Octet
DP 3+$20
E F H I N Z V C
CCR Adressage indexé
Base=PC
93
Déplacement sur 15 bits.
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 Mémoire
Post-
octet
PC ADR ADR+ 4
ADR + 4 AB ADR
D A aaaa + 11 8D ADR+1
B 20 ADR+2
aa+11 00 ADR+3
X ADR+4
Y
S
11 ADR + 4+$2000
U ADR +
DP 4+$2000 Post Octet
E F H I N Z V C
CCR Adressage indexé
Déplacement const sur 15 bits
D A 8D ADR+1
B 00 ADR+2
11 ADR+2
X xxxx= 0011 ADR+2
xxxx= ETIQ –
Y (ADR+4)
S
ETIQ
U
DP
E F H I N Z V C
CCR Adressage indexé
Etiquette localisée
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 94 ADR
ADR+1
D A 11 ADR+2
B
X xxxx
Y
20 xxxx
S
08 xxxx+1
U
11
DP
11 2008
E F H I N Z V C
CCR
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 Mémoire Post Octet
AB ADR
PC ADR ADR+2
ADR + 2 D1 ADR+1
ADR+2
A aa
aa+11
D
B
aa+11
X
Y
20 uuuu
S
08 uuuu+1
U uuuu
DP
uuuu+2
11 2008
E F H I N Z V C
CCR
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 Mémoire Post Octet
A6 ADR
PC ADR ADR+4
ADR + 4 99 ADR+1
20 ADR+2
D A 11
00 ADR+3
B ADR+4
$11
X xxxx
Y
30 xxxx+2000
S
xxxx 00 xxxx+2001
U +$2000
DP
11 3000
E F H I N Z V C
CCR
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 Mémoire Post Octet
PC ADR ADR+2
ADR + 2 EE ADR
BB ADR+1
D A aa
ADR+2
B bb
X yyyy +
aabb
Y yyyy
30 yyyy+aabb
S 00 yyyy+aabb+1
U 1122
DP
11 3000
E F H I N Z V C 1122
22 3000+1
CCR
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 Mémoire Post
Octet
A6 ADR
PC ADR
ADR+4 ADR + 4
9D ADR+1
F0 ADR+2
D A 11
00 ADR+3
B
ADR+4
ADR+4+$F000=
X MMmm
Y
PP MMmm
S
pp MMmm+1
U
DP
11 11 PPpp
E F H I N Z V C
CCR
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 Mémoire Post Octet
A6 ADR
PC ADR
ADR+4 ADR + 4 9D ADR+1
DD ADR+2
D A 11
dd ADR+3
B
ADR+4
TABLE-(ADR+4)
X =DDdd
Y
PP TABLE
S
pp
U
DP
11 11 PPpp
E F H I N Z V C
CCR
LDB $20, X
Instruction déplacement Base : X ou Y ou U ou S ou PC
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 Base : X ou Y ou U ou S ou PC
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
LDB $20, X
Instruction déplacement Base : PC
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
114
Classification des
instructions
115
Classification des instructions
116
Classification des instructions
117
I. Instructions de traitement des données
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
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
119
I. Instructions de traitement des données
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
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
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
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
Instruction Fonction
EXB Echange du contenu de deux registres
TRF Transfert de registre à registre
124
III Instructions de tests et branchements
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
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
126
N.B : La lettre (L) précédant le mnémonique précise qu’il s’agit d’un déplacement long (16 bits).
III Instructions de tests et branchements
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
Instruction Fonction
LEA Chargement d’un registre pointeur avec une adresse effective
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
129