You are on page 1of 7

Présentation Générale :

Le microprocesseur 6809 de chez Motorola est un microprocesseur 8 bits grand successeur


du 6800 dont l'organisation interne est orientée 16 bits.

Il possède 59 instructions (plus de 1460 instructions avec toutes les combinaisons) et il


comprend:

 Un bus Data sur 8 bits;


 Un bus d'adresse sur 16 bits permettant un adressage mémoire de 64 KiloOctets;
 Deux accumulateurs de 8 bits "A" et "B" transformables en 1 accumulateur de 16 bits
"D".
 Deux registres d'index de 16 bits "X" et "Y" pour la gestion des piles utilisateur et
système;
 Deux registres pointeur de pile "U" et "S";
 Un pointeur de page "DP" de 8 bits servant à l'adressage direct de la mémoire;
 Un registre d'état "CC" sur 8 bits;
 Le compteur de programme sur 16 bits "PC" pointant toujours sur l'adresse que le
microprocesseur doit exécuter.

Il existe deux versions de ce processeur, le 6809 et le 6809E. Leur brochage diffère ainsi que
leurs signaux mais leur jeu d'instruction est identique.

1. Le 6809 possède une horloge interne.


2. Le 6809E a lui besoin d'une horloge externe.

Le 6809 de Motorola fut au départ produit en versions 1 MHz et 2 MHz, mais des versions plus
rapides furent produites par la suite.

Le 6809 possède 9 modes d'adressage:

 L'adressage inhérent
 L'adressage immédiat
 L'adressage direct
 L'adressage étendu
 L'adressage étendu indirect
 L'adressage relatif court
 L'adressage relatif long

 L'adressage indexé
 L'adressage indexé indirect

1
Manipulation :

 Exercice 1 :

Différence entre LDD #$05 et LDD $05 ?

LDD #$05 charge la valeur $05 dans l’accumulateur D immédiatement or que LDD $05 charge
l’accumulateur D avec le contenu de l’adresse $05

 Exercice 2 :

Le programme :

LDA #$06
LDX #$0030
LDU #$3800
PSHU A,X
SWI

On Remarque après l’exécution des trois instructions en


vert , les registres A , X et U sont chargés immédiatement
respectivement par les valeurs $06 , $0030 et $3800

2
Apres l’exécution de l’instruction PSHU , on remarque dans la case mémoire d’adresse 37FD , la valeur
38 00 chargé en premier suivis de la valeur 00 30 et en fin 06 ; on remarque que l’instruction empile les
valeurs stocker dans les registres dans un ordre précis !

ORDRE D’EMPILEMENT

 Exercice 3 :

L’addition entre $F0 et $E0 produit elle une retenue ?

---------------------

(1)11010000
Le programme associé est :

LDA #$F0
ADDA #$E0
END

L’instruction LDA #$F0 charge immédiatement l’accumulateur A


par la valeur $F0 et puis , à l’exécution de l’instruction ADDA #$E0 , la
valeur $E0 est ajouté a la valeur $E0 ce qui nous donnent la valeur D0
qui sera charger dans le même accumulateur A avec une retenue qui
est simuler dans l’image avec C=1

Y’a-t-il un débordement ?

Oui , il y’a un débordement en raison de la retenue entre le bit 6 et le


bit 7 et le bit 7 sont différent !

3
 Exercice 4 :

Additionner le contenu de la mémoire 0030 à celle de la mémoire 0031 et mettre le résultat dans la
mémoire 0032 :

Le programme associé :

ORG $0000
LDA $0030
ADDA $0031
STA $0032
END

On doit donner d’abord des valeurs initiale au case mémoire $0030 et $0031 On a choisit
respectivement 05 et 05

Et après l’exécution de la dernière instruction , on voit bien que la nouvelle valeur de la case mémoire
$0032 est 0A

4
 Exercice 5 :

L’inconvénient dans le programme précédent c’est qu’il ne tient pas en compte de la retenue qui
peut être générer par l’addition des 2 cases mémoires 0030 et 0031 , donc pour corriger ce problème ,
en aura besoin de réserver une case mémoire additionnelle pour la retenue (0033)

Le nouveau programme est :

CLRB
LDA $0030
ADDA $0031
ADCB #$00
STA $0032
STB $0033
END

Pour un bon test de ce programme , on doit initialiser les cases mémoires 0030 et 0031 avec des valeurs
qui produirons , a leur addition , une retenue , donc on a choisit les valeurs de l’exercice 3 (F0 et E0).

L’instruction ADCB est la commande qui nous permet de prendre en compte la retenue d’une addition
ADCB = B + M + Carry (retenue) or que B = 00 via l’instruction CLEAR (CLR) et M = 00 , donc a l’exécution
L’accumulateur B ne contient que la valeur de la retenue (0 ou 1) et comme ça on a put résoudre notre
problème !

5
 Exercice 6 :
L’organigramme du programme :

 Mettre 29 dans l’accumulateur A


 Multiplier 2
 Mettre 7 dans l’accumulateur B
 Incrémenter B
 Faire la somme
 Stocker dans la mémoire

Le programme associé :

LDA #$29
LSLA
LDB #$07
INCB
STB $50
ADDA $50
STA $0020
END

On voit bien que le résultat est : 5A

6
 Exercice 7 :

LDX #$0050
LDA #$30
LDY #$0040
Loop LEAX A,Y
STX ,X+
INCA
LEAY 1,Y
CMPA #$35
BNE Loop
SWI