Le Microprocesseur 6809khatory.com/photos/051216_163956_fMFsmF.pdf · 2 Naissance du...
Transcript of Le Microprocesseur 6809khatory.com/photos/051216_163956_fMFsmF.pdf · 2 Naissance du...
1
COURS EXPO
Microprocesseur 6809
(2° GIM )
Mr KHATORY
2
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).
3
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.
Organisation matérielle du 6809
4
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.
Organisation matérielle du 6809
XTAL
EXTAL
Q
E
BS
DMA/BREQ
BA
NMI
IRQ
FIRQ
HALT
RESET
MRDY
R / W
39
Horloge
Signaux
mémoire
Bus de commande
A0
A15
Bus
des
adresses
Bus
des
données
BROCHAGE DU MC 6809
D0
D7
8
23
24
31
38
35
34
33
5
6
2
3
4
40
37
36
32
0V +5V
5
Organisation matérielle du 6809
XTAL
EXTAL
Q
E
BS
DMA/BREQ
BA
NMI
IRQ
FIRQ
HALT
RESET
MRDY
R / W
39
Horloge
Signaux
mémoire
Bus de commande
A0
A15
Bus
des
adresses
Bus
des
données
BROCHAGE DU MC 6809
D0
D7
8
23
24
31
38
35
34
33
5
6
2
3
4
40
37
36
32
0V +5V
6
Compteur programme
Registre page direct
Accumulateurs.
Manipulation
des données
16 bits
8 bits 8 bits
A B
D
X
Y
U
S
DP
PC
CCR
Registres
d'index
Pointeurs de
pile
Registre d’état
Le microprocesseur 6809 comporte NEUF registres internes
programmables accessibles par l'utilisateur:
Architecture 6809
7
Compteur Ordinal
PC
Registre d'index
Y
Registre d'index
X
Pointeur de Pile
S Pointeur de Pile
U
Registre de page
DP
Architecture 6809
UAL
Registre A
Registre B
Registre..d'état…
CCR
8
UAL
Registre A
Registre B
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)
Architecture 6809
9
Architecture 6809
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.
Registre d'index
X
Pointeur de Pile
S Pointeur de Pile
U
UAL
Registre A
Registre B
Registre d'index
Y
10
Architecture 6809
Registre d'index Registre d'index
X
Pointeur de Pile
S Pointeur de Pile
U
UAL
Registre A
Registre B
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.
11
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.
Architecture 6809
Compteur Ordinal
PC
UAL
Registre A
Registre B
12
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.
Architecture 6809
Registre d'index
X
Pointeur de Pile
S Pointeur de Pile
U
UAL
Registre A
Registre B
Registre d'index
Y
Compteur Ordinal
PC
DP
13
Architecture 6809
Registre d'index
X
Pointeur de Pile
S Pointeur de Pile
U
UAL
Registre A
Registre B
Registre d'index
Y
Compteur Ordinal
PC
DP
CCR
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
14
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z
V
C
Architecture 6809
15
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z
V
C
Architecture 6809
16
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z V
C
Architecture 6809
17
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z
V
C
Architecture 6809
18
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z
V
C
Architecture 6809
19
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue Lors de la somme sur (4bits)
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z
V
C
Architecture 6809
20
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z
V
C
Architecture 6809
21
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z
V
C
Architecture 6809
22
C Retenue (Carry) Positionné lors d'une opération arithmétique
V
Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique
déborde
Z Zéro Mis à 1 si le résultat de l'opération
précédente est nul
N Négatif Indique un résultat négatif.
I Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
IRQ
H Demi-retenue
F Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions
FIRQ
E Etat de sauvegarde Si à 1, tout le contexte du processeur est
sauvegardé dans la pile
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F
H
I
N
Z
V
C
Architecture 6809
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
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.
STRUCTURE D'UNE INSTRUCTION
Instruction (mnémoniques) Opération Opérande
LDA $2000
LDA $2000 code en hexadécimal = B6 2000 ( 3 octets)
Charger (Load ) dans
le registre A
24
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
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,…..
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.
25
Exemple:
ABX addition de l'accumulateur B à l'index X.
2008 X
Y
S
U
ADR
PC
14
A
B
D
7 6 5 4 3 2 1 0
CCR
2008 + 14
3A ADR
ADR+ 1
DP
Adressage inhérent simple
MPU Mémoire
Mode d’adressage
201C
Code Opération
de ABX
ADR+1
X (B) + (X)
26
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.
Mode d’adressage
27
X
Y
S
1000 U
ADR
PC
A
B
D
7 6 5 4 3 2 1 0
CCR
ADR+ 2
DP
1F ADR
34 ADR+1
ADR+2
Adressage inhérent paramétré
Échange et transfert des données
MPU Mémoire
É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
Mode d’adressage
ADR +2
1000
28
Post-octet transfert/échange :
TFR U,S transfert de U dans S
Code Opération
1F
Post-Octet
34
Mode d’adressage
code Registre
0000 D
0001 X
0010 Y
0011 U
0100 S
0101 PC
1000 A
1001 B
1010 CCR
1011 DP
29
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
TFR U,S transfert de U dans S
Code Opération
1F
Post-Octet
34
Mode d’adressage
3 4
30
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.
Mode d’adressage
Ex :PSHS A, B, X sauvegarde dans la pile de A, B, X
xx x’x’
ss s’s’
X
Y
S
U
ADR
PC
D aa
bb
A
B
7 6 5 4 3 2 1 0
CCR
SSS’S’ - 4
ADR+ 2
DP
ADR + 1
34 ADR
16
ADR + 2
SSS’S’
Adressage inhérent paramétré
MPU Mémoire
SSS’S’ -4 aa
SSS’S’ -2 xx
SSS’S’ -1 x’x’
SSS’S’ -3 bb
Instructions d’accès aux piles
ADR+2
SSS’S’-4
31
b7 b6 b5 b4 b3 b2 b1 b0
(#$xy)
=
PC U Y X DP B A CCR
Ordre d’empilement des registres
Mnémoniques :
PSHS liste explicite de registres à empiler
ou (implicitement)
PSHS #$xy
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.
Exemple: PSHS A,B,X PSHS #$16
EMPILEMENT
0 0 0 1 0 1 1 0
X B A
x’x’
xx
bb
aa
32
Attente d'interruption: le premier octet est associé à l'instruction CWAY, le second
sert à masquer ou à valider les interruptions.
EX :CWAY # $ FF attente d'interruption
Mode d’adressage
xx x’x’
yy y’y’
ss s’s’
X
Y
S
uu u’u’
U
ADR
PC
D aa
bb
A
B
7 6 5 4 3 2 1 0
1 1 x 1 x x x x CCR
SSS’S’ - C
pp
DP
3C ADR
FF ADR + 1
ADR + 2
Sauvegarde Masque INT
FIRQ
Masque INT IRQ
CCR SSS’S’ -C
aa SSS’S’ -B
bb SSS’S’ -A
pp SSS’S’ -9
xx
x’x’
SSS’S’ -8
SSS’S’ -7
y’y’
yy SSS’S’ -6
SSS’S’ -5
uu
u’u’
SSS’S’ -4
SSS’S’ -3
ADR +2 SSS’S’ -2
SSS’S’ -1
SSS’S’
Adressage inhérent paramétré
Attente d’interruption
MPU Mémoire
7 6 5 4 3 2 1 0
x x x x x x x x CCR
SSSS’-C
ADR+ 2
ADR+2
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
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
Mode d’adressage
(RECAP)
34
2. Mode d'adressage immédiat
Mode d’adressage
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.
35
X
Y
S
U
ADR
PC
A
B
D
7 6 5 4 3 2 1 0
CCR
$15 86 ADR
ADR + 2
DP
Adressage immédiat
MPU Mémoire
15 ADR+1
ADR+2
Instructions sur deux octets
Ex : LDA #$15 charger la valeur $15 dans l’accumulateur A. Le
premier octet contient le code opératoire
15
Code Opération
LDA
ADR+2
36
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.
37
X
Y
S
U
ADR
PC
11 A
B 22
D
E F H I N Z V C
CCR
20
ADR
ADR + 3
DP
Adressage immédiat
MPU Mémoire
05
ADR+1
ADR+2
Instructions sur trois octets
ADR+3
C3 $1122+$2005
ADR + 3
Ex : ADDD #$2005 addition du contenu de l’accumulateur D
et de $2005, le résultat se trouve dans D.
31
27
Code Opération
ADDD
38
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.
Instructions sur quatre octets
Ex :LDY #$2008 charger l’index Y avec la valeur $2008
39
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
8E
ADR
ADR + 4
DP
Adressage immédiat
MPU Mémoire
20
08
ADR+1
ADR+2
Instructions sur quatre octets
ADR+3
10 $10
Octet
supplémentaire
ADR+4
Ex :LDY # $2008 charger l’index Y avec la valeur $2008
2008
$2008
ADR + 4
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
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
41
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
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
DP ¨PF
42
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)
43
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)
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
11
ADR
ADR + 2
20 DP
Adressage direct
MPU Mémoire
ADR+1
ADR+2
Instructions sur deux octets
08
96
20 08
11
ADR +2
44
Instructions sur trois octets
Ex : LDY $05 ou LDY < $05 chargement du registre Y avec le contenu de $2005/06 (DP=$20)
Le code opératoire (sur 2 octet)
L'opérande ( 1 octet ) : Poids Faible (8 bits) de l’Adresse Effective
45
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
ADR
ADR + 3
20 DP
Adressage direct
MPU Mémoire
11
22
ADR+1
ADR+2
Instructions sur trois octets
9E
05
10
20 05
20 06
1122
Ex : LDY $05 ou LDY < $05 chargement du registre Y avec le contenu de $2005/06 (DP=$20)
1122
ADR+3
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. sur deux octets
1.LDA $40 ou
LDA <$40
adresse = $2040 : (DP)=$20
2. sur trois octets 2. LDY $50
Adresse=$3050/51 (DP=30)
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
47
4. Mode d'adressage étendu
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 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
Le code opératoire (sur 1 octet)
L'opérande ( 2 octet ) : Adresse Effective
48
Ex : LDA $21A5 ou LDA > $ 21A5 chargement de l’accumulateur A
avec le contenu de l’adresse $21A5
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
11
ADR
ADR + 3
DP
Adressage étendu
MPU Mémoire
ADR+1
ADR+2
Instructions sur trois octets
21
A5
B6
21 A5
$11
11
ADR+3
49
Instructions sur quatre octets
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
Le code opératoire (sur 2 octet)
L'opérande ( 2 octet ) : Adresse Effective
Mode d'adressage étendu
50
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
11
ADR
ADR + 4
DP
Adressage étendu
MPU Mémoire
22
ADR+1
ADR+2
Instructions sur quatre octets
BE
2C
10
2C B5
2C B6
$1122
B5 ADR+3
ADR+4
Pré-octet
Ex :LDY $2CB5 ou LDY > $2CB5 chargement du registre Y Avec le
contenu de $2CB5/B6
1122
ADR+4
Mode adressage Exemple I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
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. sur deux octets
1.LDA $40 ou
LDA <$40
adresse = $2040 : (DP)=$20
2. sur trois octets 2. LDY $50
Adresse=$3050/51 (DP=30)
IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145
2. sur quatre octets 2. CMPU $2009
V. Mode adressage étendu indirect
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
52
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.
5. Mode d'adressage étendu indirect
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.
Le code opératoire (sur 2 ou 3 octets)
L'opérande ( 2 octet ) : Adresse Effective
53
Ex :LDA [$2000] chargement de l’accumulateur avec le contenu dont l’adresse se trouve en $2000 et $2001.
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
00
ADR
ADR + 4
DP
Adressage étendu Indirect
MPU Mémoire
ADR+1
ADR+2
Instructions sur quatre octets
30
$11
9F
20
A6
00
2001
2000
11
ADR+3
ADR+4
3000
Post Octet
11
ADR+4
54
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.
Mode d’adressage
Instructions sur cinq octets
Ex:LDY [$2004] chargement du registre d’index Y avec le contenu dont l’adresse se trouve en $2004 et $2005.
55
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
00
ADR + 5
DP
Adressage étendu Indirect
MPU
Instructions sur cinq octets
30
9F
20
AE
$11 22
04
2005
2004
22
11
ADR
ADR+1
ADR+2
ADR+3
ADR+4
Post
Octet
3000
3001
Mémoire
10
Pré
Octet
Ex:LDY [$2004] chargement du registre d’index Y avec le contenu dont l’adresse se trouve en $2004 et $2005.
1122
ADR+5
Mode adressage Exemple I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
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. sur deux octets
1.LDA $40 ou
adresse = $2040 : (DP)=$20
2. sur trois octets 2. LDY $50
Adresse=$3050/51 (DP=30)
IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145
2. sur quatre octets 2. CMPU $2009
V. Mode adressage étendu indirect 1. sur quatre octets LDA [$2009]
2. sur cinq octets LDY [$2009]
VI. Mode adressage relatif court
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
57
Mode d’adressage
6. Mode d'adressage relatif court
Ce mode d'adressage est réservé pour les instructions de branchement
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)
Ex: Arret EQU $3000
BPL Arret
58
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
0 CCR
ADR
ADR + 2
+Depl
DP
Adressage relatif
court
MPU Mémoire
ADR+1
ADR+2
Depl
2A
$3000
ADR +2 +Depl
ARRET
Si N=0 alors il
y a branchement
Ex: Arret EQU $3000
BPL ARRET
Le déplacement (Depl) est calculé en fonction de la valeur de ADR par rapport à l’étiquette ARRET ($3000).
ARRET = ADR + 2 + Depl
ADR +2
ADR+2 ARRET
Mode adressage Exemple I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
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. sur deux octets
1.LDA $40 ou
adresse = $2040 : (DP)=$20
2. sur trois octets 2. LDY $50
Adresse=$3050/51 (DP=30)
IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145
2. sur quatre octets 2. CMPU $2009
V. Mode adressage étendu indirect 1. sur quatre octets LDA [$2009]
2. sur cinq octets LDY [$2009]
VI. Mode adressage relatif court mode d'adressage est réservé
pour les instructions de
branchement ( (déplacement ±
7 bits)
BHS FIN
VII. Mode adressage relatif long
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
60
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.
7. Mode d'adressage relatif long
Exemple : ARRET EQU $4000
LBPL ARRET
61
Exemple : ARRET EQU $4000
LBPL ARRET
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
0 CCR
ADR
ADR + 4
+ Depl
DP
Adressage relatif
long
MPU Mémoire
ADR+1
ADR+2
2A
Depl PFO
10
$4000
ADR + 4 +
Depl
ARRET
Si N=0 alors il y a
branchement
Depl PFA
ADR+3
ADR+4
ARRET
ARRET = ADR + 4 + Depl
La présence d’un pré-octet ($10) permet de différencier l’adressage relatif long de l’adressage relatif court.
ADR +4
ADR +4
Mode adressage Exemple I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
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. sur deux octets
1.LDA $40 ou
adresse = $2040 : (DP)=$20
2. sur trois octets 2. LDY $50
Adresse=$3050/51 (DP=30)
IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145
2. sur quatre octets 2. CMPU $2009
V. Mode adressage étendu indirect 1. sur quatre octets LDA [$2009]
2. sur cinq octets LDY [$2009]
VI. Mode adressage relatif court mode d'adressage est réservé pour
les instructions de branchement (
(déplacement ± 7 bits)
BHS FIN
VII. Mode adressage relatif long mode d'adressage est réservé pour
les instructions de branchement (
(déplacement ± 15 bits)
LBPL ARRET
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
63
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
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).
Registre
64
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.
Enfin, l’adressage indexé offre des possibilités d’auto-incrémentation
ou décrémentation de 1 ou de 2.
Toutes ces options sont sélectionnées par le post-octet
qui suit le code opératoire.
LDB $20, X
Instruction déplacement Base : X ou Y ou U ou S ou PC
LDA , Y+
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)
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.
66
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)
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)
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)
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 );
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
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
1 R 0/1 1 1 1 1 AE= , Adresse
Les bits 0 à 3 définissent le champ du mode d’adressage.
Nous allons voir toutes les combinaisons possibles.
69
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)
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
Auto
Increm/Décrem
Dépl accumul
Déplacement const
Déplacement const
Dépl accumul
Dépl PC
Déplacement nul
70
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)
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 nul
Auto Increm/
Décrem
Dépl accumul
Déplacement const
Déplacement const
Dépl accumul
Dépl PC
71
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.
8.1 Mode d'adressage indexé. Déplacement nul.
72
xxxx X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
11
ADR
ADR + 2
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Déplacement nul
84
A6
xxxx
11
Post-
octet
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 0 0 1 0 0
X Déplacement nul
LDA ,X chargement de A avec la valeur dont l’adresse est le contenu de l’index X.
11
ADR +2
Adressage indexé direct
73
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.
Instructions sur trois octets
Exemple :
LDY ,X chargement de l’index Y avec la valeur dont l’adresse de base
est le contenu de X.
74
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
a. Déplacement sur 15 bits. Acc D LEAY D,X
5. Base=Compteur Programme PC
a. Déplacement sur 7 bits. LDB $20,PC
a. Déplacement sur 15 bits. ADDA $2000,PC
a. Etiquette localisée LEAX ETIQ,PC
IX. Mode adressage indexé indirect
1. Déplacement nul LDA [,X]
2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
5. Base=Compteur Programme PC LDA [$F000,PC]
LDA [TABLE,PC]
75
On peut obtenir des pré-décrémentations de un ou deux et des post-
incré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.
8.2 Mode d'adressage indexé. Auto-incrémentation/décrémentation
76
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.
77
xxxx X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
11
ADR
ADR + 2
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Auto-incrémentation/Décrémentation(2 octets)
80
A6
xxxx
11
Post-
octet
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 0 0 0 0 0
X post_incrémentation
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
11
ADR +2
Adressage indexé direct
xxxx+1
xxxx+1
NB: Le mode auto-incrémentation/décrémentation par un est utilisé pour gérer des tables de données
Post Octet
78
Exemple :
LDY , --X chargement de Y avec la valeur dont l’adresse de base est le contenu
de X – 2.
Instructions sur trois octets :
xxxx X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
11
ADR
ADR + 3
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Auto-incrémentation/Décrémentaion(3 octets)
AE
83
10
xxxx- 2
1122
Post-
octet
xxxx -2
xxxx - 1
xxxx
22
ADR+3
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 0 0 0 1 1
X 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
xxxx-2
1122
ADR+3
79
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
a. Déplacement sur 15 bits. Acc D LEAY D,X
5. Base=Compteur Programme PC
a. Déplacement sur 7 bits. LDB $20,PC
a. Déplacement sur 15 bits. ADDA $2000,PC
a. Etiquette localisée LEAX ETIQ,PC
IX. Mode adressage indexé indirect
1. Déplacement nul LDA [,X]
2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
5. Base=Compteur Programme PC LDA [$F000,PC]
LDA [TABLE,PC]
80
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.
81
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.
yyyy
X
Y
S
U
ADR
PC
E F H I N Z V C
CCR
ADR
ADR + 2
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Déplacement sur 4 bits
11
3D
EB
yyyy - 2
bb+11
-3 + yyyy yyyy - 1
yyyy - 3
yyyy
-3
bb
A
B
D
bb+11
ADR+2
Le post-octet prend la valeur $3D :
•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.
0 0 1 1 1 1 0 1
Y Déplacement (en compl à
2) = -3
Post Octet
82
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
83
Exemple :
LDY $30, U chargement du pointeur Y avec le contenu mémoire dont l’adresse de base est
le contenu de U + $30
X
Y
S
uuuu U
ADR
PC
E F H I N Z V C
CCR
11
ADR
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Déplacement sur 7 bits
30
AE
C8
10
uuuu+$30
uuuu+$30
Post-
octet
1122
22
A
B
D
ADR+3
ADR+4
uuuu+$31
ADR + 4
ADR+4
1122
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 0 1 0 0 0
U Déplacement ±7 bits
Adressage indexé direct
Post Octet
84
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
85
Exemple :
LDA $3000, X chargement de l’accumulateur A avec le contenu mémoire d’adresse X + $3000
xxxx X
Y
S
U
ADR
PC
E F H I N Z V C
CCR
11
ADR
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Déplacement sur 15 bits
00
89
30
A6
xxxx +$3000
xxxx
+ $3000
Post-
octet
$11
A
B
D
ADR+3
ADR+4
ADR + 4
ADR+4
11
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 0 1 0 0 1
X Déplacement ±15
bits
Adressage indexé direct
Post Octet
86
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
a. Déplacement sur 15 bits. Acc D LEAY D,X
5. Base=Compteur Programme PC
a. Déplacement sur 7 bits. LDB $20,PC
a. Déplacement sur 15 bits. ADDA $2000,PC
a. Etiquette localisée LEAX ETIQ,PC
IX. Mode adressage indexé indirect
1. Déplacement nul LDA [,X]
2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
5. Base=Compteur Programme PC LDA [$F000,PC]
LDA [TABLE,PC]
87
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
Exemple :
LDA B, X chargement de l’accumulateur A avec le contenu mémoire
d’adresse X + B
Déplacement sur 7 bits. Accumulateurs A ou B
88
Exemple :
LDA B, X chargement de l’accumulateur A avec le contenu mémoire d’adresse X + B
xxxx X
Y
S
U
ADR
PC
E F H I N Z V C
CCR
ADR
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Déplacement sur 7 bits. Accu A ou B
11
85
A6
$11
xxxx+bb xxxx+bb
bb
A
B
D
Post-
octet
ADR + 2
ADR+2
11
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 0 0 1 0 1
X Déplacement =
contenu de B
(Compl à2)
Adressage indexé direct
Post Octet
89
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
xxxx X
Y
S
U
ADR
PC
E F H I N Z V C
CCR
ADR
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Déplacement sur 15 bits. Accumulateur D
8B
31
aabb
+ xxxx
aa
bb
A
B D
Post-
octet ADR + 2
ADR+2
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 0 1 0 1 1
X Déplacement =
Contenu D (En compl
2)
Adressage indexé direct
aabb + xxxx
Post Octet
90
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
a. Déplacement sur 15 bits. Acc D LEAY D,X
5. Base=Compteur Programme PC
a. Déplacement sur 7 bits. LDB $20,PC
a. Déplacement sur 15 bits. ADDA $2000,PC
a. Etiquette localisée LEAX ETIQ,PC
IX. Mode adressage indexé indirect
1. Déplacement nul LDA [,X]
2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
5. Base=Compteur Programme PC LDA [$F000,PC]
LDA [TABLE,PC]
91
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.
92
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
93
Exemple :
LDA $20, PC chargement de l’accumulateur A avec le contenu mémoire dont d’adresse est
la valeur de PC + $20
X
Y
S
U
ADR
PC
E F H I N Z V C
CCR
ADR
ADR + 3
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Base=PC
11
8C
20
A6
$11
ADR + 3+$20
A
B
D
Post-
octet
ADR +
3+$20
ADR+3
ADR+ 3
11
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 0 1 1 0 0
Indiférent Déplacement sur 8
bits ( en Compl à 2)
Adressage indexé direct
Post Octet
94
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.
95
X
Y
S
U
ADR
PC
E F H I N Z V C
CCR
ADR
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Déplacement const sur 15 bits
11
8D
20
AB
aa+11
ADR + 4+$2000
aa A
B
D
Post-
octet
ADR +
4+$2000
ADR+3
00
ADR+4
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.
ADR + 4
ADR+ 4
aa + 11
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 0 1 1 0 1
Indiférent Déplacement sur 16
bits ( en Compl à 2)
Adressage indexé direct
Post Octet
96
É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.
97
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
X
Y
S
U
ADR
PC
E F H I N Z V C
CCR
11
ADR
ADR + 4
DP
Adressage indexé
MPU Mémoire
ADR+1
ADR+2
Etiquette localisée
8D
00
30
xxxx= ETIQ –
(ADR+4)
A
B
D
Post-
octet
ADR+2
ADR+2
ETIQ
xxxx=0011
xxxx= 0011
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 0 1 1 0 1
Indiférent Déplacement sur 16
bits ( en Compl à 2)
Adressage indexé direct
ADR+4
Mode adressage Exemple
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
a. Déplacement sur 15 bits. Acc D LEAY D,X
5. Base=Compteur Programme PC
a. Déplacement sur 7 bits. LDB $20,PC
a. Déplacement sur 15 bits. ADDA $2000,PC
a. Etiquette localisée LEAX ETIQ,PC
IX. Mode adressage indexé indirect
1. Déplacement nul LDA [,X]
2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
5. Base=Compteur Programme PC LDA [$F000,PC]
LDA [TABLE,PC]
99
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.
100
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).
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
08
ADR
ADR + 2
DP
Adressage indexé Indirect
MPU
ADR+1
ADR+2
Déplacement nul
20
94
xxxx+1
11
xxxx
11 2008
Post Octet Mémoire
A6
11
xxxx
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
ADR+2
1 0 0 1 0 1 0 0
X Déplacement nul
Adressage indexé indirect
101
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.
102
X
Y
S
uuuu U
ADR
PC
aa A
B
D
E F H I N Z V C
CCR
08
ADR
ADR + 2
DP
Adressage indexé Indirect
MPU
ADR+1
ADR+2
Auto-incrémentation/décrémentation
20
D1
uuuu+1
aa+11
uuuu
11 2008
Post Octet Mémoire
AB
uuuu+2
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.
aa+11
ADR+2
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 1 0 0 0 1
U Post auto_incrémentation
de 2
Adressage indexé indirect
103
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.
104
xxxx X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
00
ADR
DP
Adressage indexé Indirect
MPU
ADR+1
ADR+2
Déplacement constant
30
20
00
99
$11
xxxx+2000
11 3000
Post Octet Mémoire
A6
xxxx
+$2000
ADR+3
ADR+4
xxxx+2001
Exemple :
LDA [$2000, X] chargement de l’accumulateur A avec le contenu mémoire dont l’adresse est
pointée par X+ $2000.
1 0 0 1 1 0 0 1
X Dépl constant sur ±15 bits
Adressage indexé indirect
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
ADR + 4
ADR+4
11
105
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.
106
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.
yyyy
X
Y
S
U
ADR
PC
aa
bb
A
B
D
E F H I N Z V C
CCR
00
DP
Adressage indexé Indirect
MPU
ADR
ADR+1
Déplacement accumulateur
30
BB
EE
1122
yyyy+aabb
22
11 3000
Post Octet Mémoire
yyyy +
aabb
ADR+2
3000+1
yyyy+aabb+1
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 1 1 0 1 1
Y Dépl accumulateur D
En compl à 2
Adressage indexé indirect
ADR + 2
ADR+2
1122
107
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.
108
Exemple :
LDA [$F000, PC] chargement de A avec la valeur dont l’adresse est pointée par la valeur
courante du PC + $F000.
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
pp
DP
Adressage indexé Indirect
MPU
ADR
ADR+1
Base= compteur programme
PP
F0
00
9D
11
MMmm
11 PPpp
Post
Octet
Mémoire
A6
ADR+4+$F000=
MMmm
ADR+2
MMmm+1
ADR+3
ADR+4
ADR + 4
ADR+4
11
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 1 1 1 0 1
indiférent Dépl codé sur ± 15 bits
Adressage indexé indirect
109
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.
110
Exemple :
LDA [TABLE, PC] chargement de A avec la valeur dont l’adresse est pointée par TABLE.
X
Y
S
U
ADR
PC
A
B
D
E F H I N Z V C
CCR
pp
DP
Adressage indexé Indirect
MPU
ADR
ADR+1
PC & (étiquette localisée)
PP
DD
dd
9D
11
TABLE
11 PPpp
Post Octet Mémoire
A6
TABLE-(ADR+4)
=DDdd
ADR+2
ADR+3
ADR+4
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 1 1 1 0 1
indiférent Dépl codé sur ± 15 bits
Adressage indexé indirect
ADR + 4
ADR+4
11
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 :
Déplacement
Nul 4 bits 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é
LDB $20, X
Instruction déplacement Base : X ou Y ou U ou S ou PC
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 :
Déplacement
Nul 4 bits 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é
LDB $20, X
Instruction déplacement Base : X ou Y ou U ou S ou PC
113
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 :
Déplacement
Nul 4 bits 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é
LDB $20, X
Instruction déplacement Base : PC
114
Merci de votre attention
FIN DE LA 1ère Partie
115
Classification des
instructions
116
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
117
4. Les instructions d'incrémentation-décrémentation,
mise à 0, complémentation
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
Classification des instructions
118
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
1. Les instructions arithmétiques
I. Instructions de traitement des données
119
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
I. Instructions de traitement des données
120
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
I. Instructions de traitement des données
121
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
I. Instructions de traitement des données
122
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
II Instructions de transfert des données
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
123
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
II Instructions de transfert des données
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)
124
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
II Instructions de transfert des données
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
125
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
III Instructions de tests et branchements
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
126
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
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)
N.B : La lettre (L) précédant le mnémonique précise qu’il s’agit d’un déplacement long (16 bits).
127
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.
III Instructions de tests et branchements
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
128
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 Fonction
LEA Chargement d’un registre pointeur avec une adresse effective
Il existe sur le 6809, trois interruptions logicielles et trois interruptions matérielles.
Instruction
Fonction
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
IV Instructions opérant sur les pointeurs
V. Traitement des interruptions
129
Merci de votre attention
FIN