Vous êtes sur la page 1sur 129

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 +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

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

Le microprocesseur 6809 comporte NEUF registres internes


programmables accessibles par l'utilisateur:

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

CCR Registre d’état

6
Architecture 6809

Pointeur de Pile Pointeur de Pile


S
U
Registre A Registre B

Registre..d'état… UAL Compteur Ordinal


CCR PC

Registre d'index Registre d'index


X 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


S
U
Registre A Registre B

UAL

Registre d'index Registre d'index


X 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


S
U
Registre A Registre B

UAL

Registre d'index Registre d'index


X
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


S
U
Registre A Registre B

UAL Compteur Ordinal


PC

Registre d'index Registre d'index


X 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


S
U
Registre A Registre B

CCR UAL Compteur Ordinal


PC

Registre d'index Registre d'index


X 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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 14
sauvegardé dans la pile
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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 15
sauvegardé dans la pile
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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 16
sauvegardé dans la pile
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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 17
sauvegardé dans la pile
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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 18
sauvegardé dans la pile
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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue Lors de la somme sur (4bits)

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 19
sauvegardé dans la pile
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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 20
sauvegardé dans la pile
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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 21
sauvegardé dans la pile
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
V déborde

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 22
sauvegardé dans la pile
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)
Opération Opérande
LDA $2000
Charger (Load ) dans
le registre A

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 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

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

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

CCR Adressage inhérent paramétré


Échange et transfert des données
27
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
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

 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 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
=

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 0 1 1 0
X B A
Exemple: PSHS A,B,X  PSHS #$16
aa
bb
xx
31
x’x’
Mode d’adressage
 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

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

Sauvegarde Masque INT SSS’S’


FIRQ
Adressage inhérent paramétré
Attente d’interruption 32
Mode d’adressage
(RECAP)

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

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 Mémoire

PC ADR ADR+2 ADR + 2


Code Opération
LDA
D A 15
B

$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

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
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

CCR 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
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

CCR Adressage immédiat

Instructions sur quatre octets

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

VI. Mode adressage relatif court


VII. Mode adressage relatif long

VIII. Mode adressage indexé

IX. Mode adressage indexé indirect


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

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

CCR 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 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

VI. Mode adressage relatif court


VII. Mode adressage relatif long

VIII. Mode adressage indexé


IX. Mode adressage indexé indirect
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 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

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 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é

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 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
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 Post Octet

PC ADR ADR + 4 ADR


ADR+4
A6
9F ADR+1

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

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.

MPU Pré Mémoire Post


Octet Octet
10 ADR
PC ADR ADR+5 ADR + 5 AE ADR+1
9F ADR+2
D A ADR+3
20
B
04 ADR+4

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

Adressage étendu Indirect


Instructions sur cinq octets 55
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.LDA $40 ou
1. sur deux octets
adresse = $2040 : (DP)=$20
2. LDY $50
2. sur trois octets
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
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 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

CCR 0 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 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.LDA $40 ou
1. sur deux octets
adresse = $2040 : (DP)=$20
2. LDY $50
2. sur trois octets
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é BHS FIN
pour les instructions de
branchement ( (déplacement ±
7 bits)
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 Mémoire

PC ADR ADR +4 ADR ++44


ADR 10 ADR
ARRET
+ Depl 2A ADR+1
D A
Depl PFO ADR+2
B
Depl PFA ADR+3
ADR+4
X
ADR + 4 +
Y Depl
S
U ARRET $4000
DP
Si N=0 alors il y a
branchement
E F H I N Z V C
CCR 0 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 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.LDA $40 ou
1. sur deux octets
adresse = $2040 : (DP)=$20
2. LDY $50
2. sur trois octets
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 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é

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
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.

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

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
 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)

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
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.

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

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
69
5 :Base= compteur Programme PC
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 Increm/
1 R 0 0 0 1 0 AE= , - R 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

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
70
5 :Base= compteur Programme PC
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
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

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
1 0 0 0 0 1 0 0

•b6.b5=0.0  l’index est X X Déplacement nul

•b3.b2.b1.b0=0.1.0.0  le déplacement est 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 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é 1. Déplacement nul LDA [,X]
indirect 2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
LDA [$F000,PC]
5. Base=Compteur Programme PC
LDA [TABLE,PC] 74
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 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.

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

CCR Adressage indexé 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
1 0 0 0 0 0 0 0

•b6.b5=0.0  l’index est X X post_incrémentation

•b3.b2.b1.b0=0.0.0.0  mode post_incrémentation.


Adressage indexé direct
77
NB: Le mode auto-incrémentation/décrémentation par un est utilisé pour gérer des tables de données
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 Mémoire
Post-
octet
PC ADR ADR + 3
ADR+3
10 ADR

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

CCR Adressage indexé

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

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é 1. Déplacement nul LDA [,X]
indirect 2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
LDA [$F000,PC]
5. Base=Compteur Programme PC
LDA [TABLE,PC] 79
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

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é

Déplacement sur  4 bits

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

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 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

CCR Adressage indexé

Déplacement sur  7 bits

Le post-octet prend la valeur C8 en hexa (1100 1000) : 1 1 0 0 1 0 0 0


•b7=1  b4=0 adressage indexé direct. U Déplacement ±7 bits
•b6.b5=1.0.  index U .
•b3.b2.b1.b0=1.0.0.0 le déplacement est codé sur 8 bits 83
en compléments à deux. Adressage indexé direct
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 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é

Déplacement sur  15 bits

Le post-octet prend la valeur 89 en hexa (1000 1001) : 1 0 0 0 1 0 0 1


•b7=1  b4=0 adressage indexé direct.
X Déplacement ±15
•b6.b5=0.0.  index X . bits
•b3.b2.b1.b0=1.0.0.1 le déplacement est codé sur 16 bits
en compléments à deux. Adressage indexé direct 85
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é 1. Déplacement nul LDA [,X]
indirect 2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
LDA [$F000,PC]
5. Base=Compteur Programme PC
LDA [TABLE,PC] 86
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 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

CCR Adressage indexé

Déplacement sur  7 bits. Accu A ou B

Le post-octet prend la valeur 85 en hexa (1000 0101) :


1 0 0 0 0 1 0 1
•b7=1  b4=0 adressage indexé direct.
•b6.b5=0.0.  index X . X Déplacement =
contenu de B
•b3.b2.b1.b0=0.1.0.1 le déplacement est égale (Compl à2)
au contenu de l’Acc B (en complément à 2) 88
Adressage indexé direct
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 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

Le post-octet prend la valeur 8B en hexa (1000 1011) :


1 0 0 0 1 0 1 1
•b7=1  b4=0 adressage indexé direct.
•b6.b5=0.0.  index X . X Déplacement =
Contenu D (En compl
•b3.b2.b1.b0=1.0.1.1 le déplacement = contenu 2)
de l’Acc D=(A :B )en complément à 2) Adressage indexé direct 89
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é 1. Déplacement nul LDA [,X]
indirect 2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
LDA [$F000,PC]
5. Base=Compteur Programme PC
LDA [TABLE,PC] 90
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 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

Le post-octet prend la valeur 8C en hexa (1000 1100) :


1 0 0 0 1 1 0 0
•b7=1  b4=0 adressage indexé direct.
•b6.b5  indifferent Indiférent Déplacement sur 8
bits ( en Compl à 2)
•b3.b2.b1.b0=1.1.0.0 le déplacement
sur 8 bits (en complément à 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 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

Le post-octet prend la valeur 8D en hexa (1000 1101) : 1 0 0 0 1 1 0 1


•b7=1  b4=0 adressage indexé direct. Indiférent Déplacement sur 16
•b6.b5  indifferent bits ( en Compl à 2)
•b3.b2.b1.b0=1.1.0.1 le déplacement sur 16 bits
95
(en complément à 2) Adressage indexé direct
 É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  xxxx=0011
ETIQ=$2015
MPU Mémoire
Post-
PC ADR octet
ADR+4 ADR + 4
30 ADR

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

Le post-octet prend la valeur 8D en hexa (1000 1101) : 1 0 0 0 1 1 0 1


•b7=1  b4=0 adressage indexé direct. Indiférent Déplacement sur 16
•b6.b5  indifferent bits ( en Compl à 2)
•b3.b2.b1.b0=1.1.0.1 le déplacement sur 16 bits
97
(en complément à 2) Adressage indexé direct
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é 1. Déplacement nul LDA [,X]
indirect 2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
LDA [$F000,PC]
5. Base=Compteur Programme PC
LDA [TABLE,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 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

Adressage indexé Indirect


Déplacement nul

Le post-octet prend la valeur 94 en hexa (1001 0100) :


•b7=1  b4=1 adressage indexé indirect. 1 0 0 1 0 1 0 0
•b6.b5 =0.0 index X X Déplacement nul
•b3.b2.b1.b0=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 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

Adressage indexé Indirect


Auto-incrémentation/décrémentation

Le post-octet prend la valeur D1 en hexa (1101 0001) : 1 1 0 1 0 0 0 1


•b7=1  b4=1 adressage indexé indirect.
U Post auto_incrémentation
•b6.b5 =1.0 index U
de 2
•b3.b2.b1.b0=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 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

Adressage indexé Indirect


Déplacement constant

Le post-octet prend la valeur 99 en hexa (1001 1001) : 1 0 0 1 1 0 0 1


•b7=1  b4=1 adressage indexé indirect.
X Dépl constant sur ±15 bits
•b6.b5 =0.0 index X
•b3.b2.b1.b0=1.0.0.1  déplacement 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 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

Adressage indexé Indirect


Déplacement accumulateur

Le post-octet prend la valeur BB en hexa (1011 1011) :


•b7=1  b4=1 adressage indexé indirect. 1 0 1 1 1 0 1 1

•b6.b5 =0.1 index Y Y Dépl accumulateur D


•b3.b2.b1.b0=1.0.1.1  déplacement accumulateur D En compl à 2

(en complément à deux) 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 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

Adressage indexé Indirect


Base= compteur programme

Le post-octet prend la valeur 9D en hexa (1001 1101) :


•b7=1  b4=1 adressage indexé indirect. 1 0 0 1 1 1 0 1
•b6.b5 =indifferent indiférent Dépl codé sur ± 15 bits
•b3.b2.b1.b0=1.1.0.1  déplacement 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 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

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. 1 0 0 1 1 1 0 1

•b6.b5 =indifferent indiférent Dépl codé sur ± 15 bits


•b3.b2.b1.b0=1.1.0.1  déplacement 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 Base : X ou Y ou U ou S ou PC

Pré- auto Post_auto


décrémentation décrémentation
7  15 Acc Acc Acc
Déplacement Nul 4 bits
bits bits A B D 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 Base : X ou Y ou U ou S ou PC

Pré- auto Post_auto


décrémentation décrémentation
7  15 Acc Acc Acc
Déplacement Nul 4 bits
bits bits A B D 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 Base : PC

Pré- auto Post_auto


décrémentation décrémentation
7  15 Acc Acc Acc
Déplacement Nul 4 bits
bits bits A B D 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
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

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 Fonction
LEA 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