Microprocesseur 6809
I. Objectifs :
Maîtriser le fonctionnement d’un ensemble d’instructions Assembleur 6809 ;
Construire des programmes en Code Machine 6809 ;
Vérifier le fonctionnement de ces programmes en testant les registres 6809 et les
mémoires.
II. Présentation du MC 6809:
Le MC 09 est un système didactique autonome spécialement conçu pour la
formation au fonctionnement du microprocesseur 6809 et de ses périphériques.
Circuits Périphériques
Le MC 09 est équipé des principaux circuits périphériques du 6809 :
PIA 6821: boîtier d’entrées/sorties parallèles
TIMER 6840: circuit intégrant 3 compteurs 16 bits
ACIA 6850: boîtier d’entrées/sorties séries
VIA 6522: ce circuit est muni de 2 ports parallèles 8 bits, 2 timers 16 bits registre
à décalage, et 4 lignes de contrôle
Capacité Mémoire:
Le MC 09 est équipé de 5 supports pouvant accueillir :
2 RAM de 2 ko
3 EPROM de 4 ko de type 2732
Clavier et Afficheurs
Le MC 09 est équipé d’un clavier de 30 touches pour l’écriture de programmes en
langage machine. Les cases mémoires et les opérandes sont visualisées sur 6 afficheurs
réservés à cet effet. L’acquisition de la carte d’extension référencée 008 permet d’écrire
des programmes en assembleur sur PC et de télécharger le binaire dans la mémoire vive
du système.
III. Manipulation :
Vérification du fonctionnement de
quelques instructions 6809:
Instruction Codage Mode
d’addressage
1-LDA #$12 86 12 Immédiat
2-LDA$37 B6 37 Étendu
3-LDA$0100 B6 0100 Etendu
4-LDA[$0100] A6 9F 0100 Entendu
5-LDA-3,X A6 1D indirect
6-STA $0100 B7 0100 Indexé
7-ADCA #$2C 89 2C Etendu
8-ABX 3A Immédiat
9- LDY-3,X 10 AE 1D Inhérent
10-LSRA 44 Indéxé
11-ASRA 47 Inhérent
12-ROLA 49 Inhérent
13-TFR X,Y 1F 12 Inhérent
14-PSHU A,X,Y 36 32 Inhérent
15-PULU A,X,Y 37 32 Inhérent
Inhérent
Réalisation de programmes simples:
Calcul de la somme de deux nombres situés respectivement aux adresses
$0F00 et $0F02 et qui met le résultat dans $0F04:
8 bits:
Programme Code Machine 6809
LDA $0F00 B6 0F00
ADDA $0F02 BB 0F02
STA $0F04 B7 0F04
SWI 3F
16 bits:
Programme Code Machine 6809
LDD $0F00 FC 0F00
ADDD $0F02 F3 0F02
STD $0F04 FD 0F04
SWI 3F
Ecriture d’une zone mémoire
1) Programme qui met la valeur #$AA dans la zone mémoire allant de
$0F00 à $0F0F :
Programme Code Machine 6809
LDA #$AA 86 AA
LDX #$0F00 8E 0F 00
STA , X+ A7 80
CMP X #$0F10 8C 0F 10
BNE 26 F9
SWI 3F
Déplacement d’une zone mémoire
Programme Code Machine 6809
LDX #$0100 8E 01 00
LDY#$0200 10 8E 02 00
LDA, X+ A6 80
STA,Y+ A7 A0
CMP X #$010F 8C 010F
BLS 23 F7
SWI 3F
Calcul le nombre des valeurs negatives:
Programme Code Machine 6809
LDX#$0100 8E 0100
CLR B 5F
LDA,X+ A6 80
CMPA#$00 81 00
BGE 2C 01
INCB 5C
CMPX#$0110 8C 0110
BNE 26 F4
STB$0200 F7 0200
SWI 3F
Calcul le nombre de valeurs paires:
Programme Code Machine 6809
LDX#$0100 8E 0100
CLR B 5F
LDA,X+ A6 80
ANDA#$01 84 01
CMPA#$00 81 00
BNE 26 01
INCB 5C
CMPX#$0110 8C 01 10
BNE 26 F2
STB$0200 F7 02 00
SWI 3F
CALCUL DE VALEUR SUPERIEUR A (+2)
Programme Code Machine 6809
LDX#$0100 8E 0100
CLRB 5F
LDA, X+ A6 80
CMPA#$02 81 02
BLS 23 05
CMPA#$0A 81 0A
BHS 24 01
INCB 5C
CMPX#$0110 8C 01 10
BNE 26 F0
STB$0200 F702 00
SWI 3F
CALCUL LE NOMMBRE SUPERIEUR A (-3):
Programme Code Machine 6809
LDX#$0100 8E 0100
LDB#$00 C6 00
LDA, X+ A6 80
CMPA#$FD 81 FD
BLT 2D 01
INCB 5C
CMPX#$010F 8C 01 0F
BLS 23 F4
STB$0200 F7 02 00
SWI 3F
Comptage
1) Programme qui compte dans les adresses allant de $0100 à $0200,
le nombre de fois que l’on détecte la valeur FF
Programme Code Machine 6809
LDX #$0100 8E 01 00
LDB #$00 C6 00
LDA , X+ A6 80
CMPA #$FF 81 FF
BNE 26 FA
INCB 5C
CMPX #$0201 8C 02 01
BNE 26 FA
SWI 3F
Operations arithmétiques:
1) Programme qui calcule la somme et la multiplication et qui met le
résultat final dans $0F20 et $0F21 :
Programme Code Machine 6809
LDA $0050 B6 00 50
ADDA $0080 BB 00 80
LDB $0090 F6 00 90
MUL 3D
STD $0F20 FD 0F 20
SWI 3F
CONCLUSION:
Au cours de ce TP,on s'est familiarisé
avec le microprocesseur 6809
avec ses diverses instructions .On a établi
aussi quelques remarques:
-Une petite faute dans le codage machine
provoque une erreur dans le
fonctionnement .
-L'exécution se fait directement après
l'écriture du programme et il faut
que la zone d'exécution soit différente de
celle du programme pour que
ce dernier s'exécute correctement.