Professional Documents
Culture Documents
TP INFO INDUST
(Assembleur 6809)
MR KHATORY
1
1. FAMILIARISATION AVEC L’UTILISATION DU MICROSYSTEME MC09
2
Manip 1
a- Observez la carte MC09 est identifiez les emplacements physiques des principaux composants
implantés sur cette carte. On complètera pour cela le tableau suivant (colonne 2 et 4):
1.1. Accès en lecture / écriture à la mémoire du système MC09 (touches MEM et FIN)
But : visualiser (lecture) sur les afficheurs le contenu d’un octet mémoire d’adresse $xyzt choisie, puis, modifier
(écriture) son contenu.
Soit à visualiser le contenu de l’octet mémoire d’adresse $0010. Les quatre afficheurs de gauche permettent de
visualiser l’adresse mémoire $0010 et les deux afficheurs de droite le contenu de l’octet mémoire pointé par
cette adresse.
3
Manip 2
Action Commentaire de l’action Affichage Commentaire de
l’affichage
Touche RST Initialisation du système MC09. M C 0 9 Nous sommes sous
contrôle du moniteur
MC09
Touche MEM Demande d’accès à la mémoire A d Ad (abréviation de
Adresse): le moniteur
MC09 attend la saisie de
l’adresse mémoire à
laquelle on veut accéder.
Taper 0010 Saisie de l’adresse à laquelle 0 0 1 0 x y Le moniteur affiche le
on veut accéder contenu xy de l’octet
mémoire d’adresse
$0010 :
($0010) = $xy
Touche FIN Fin de tache M C 0 9 Retour sous contrôle du
moniteur système MC09
Figure 2
1.1.2. Accès en écriture
On souhaite maintenant modifier (écriture) le contenu d’un octet mémoire d’adresse connue. Pour cela, on
spécifie d’abord au moniteur MC09 l’adresse de cet octet (manip 1) et on modifie ensuite son contenu.
Manip 3
Action Commentaire de l’action Affichage Commentaire de
l’affichage
Touche RST Initialisation du système M C 0 9 Nous sommes sous
MC09. contrôle du moniteur
MC09
Touche MEM Demande d’accès à la A d Ad (abréviation de
mémoire Adresse): le moniteur
MC09 attend la saisie de
l’adresse mémoire à
laquelle on veut accéder.
Taper 0012 Saisie de l’adresse à 0 0 1 2 u v Le moniteur affiche le
laquelle on veut accéder contenu uv de l’octet
mémoire d’adresse
$0012 :
($0012) = $uv
4
1.2. Exploration d’une zone mémoire d’adresses contiguës (touches INC et DEC)
Manip 4
a- En vous servant des procédures d’accès mémoire des manips 2 et 3, visualisez le contenu de l’octet
mémoire d’adresse $0005
b- A partir de l’adresse $0005, des actions successives sur la touche INC (DEC) vous permettent de voir
les contenus mémoires des adresses successives suivantes (précédentes). Vous pouvez, après chaque
appui sur la touche INC (DEC), modifier le contenu mémoire (sur les deux afficheurs de droite) de
l ‘adresse affichée (sur les quatre afficheurs de gauche).
c- Appuyer sur la touche FIN pour revenir sous contrôle du moniteur MC09.
d- Refaire la manip afin de banaliser l’utilisation des touches INC et DEC.
But : Quasiment toutes les instructions utilisent tout ou partie des registres internes du processeur 6809 (CC, A,
B, DP, X, Y, U, PC, S). la touche REG (registre) permet de visualiser le contenu de ces registres. Cette touche est
particulièrement utile lors de l’exécution d’un programme en mode pas à pas (voir plus loin dans ce TP).
Remarque :
Au niveau de l’affichage, le nom du registre s’affiche sur les deux afficheurs de droite et son contenu s’affiche
sur les quatre afficheurs de gauche.
Manip 5
Procédez comme indiqué dans le tableau suivant et remplir les zones vides.
Touche INC
Touche INC
Touche INC
Touche INC
Touche INC
Touche INC
Touche INC
Figure 4
5
Après un RESET général du processeur (touche RST), refaire la manip 5 en notant le contenu des registres
internes du processeur dans le tableau suivant :
1.4. Saisie et exécution d’un programme sur le microsystème MC09 (touche EXC)
Le processeur 6809 est un processeur 8 bits. Un programme, écrit en langage assembleur, est stocké en
mémoire sous forme d’une suite d’octets représentant le code machine ou le code objet de ce programme.
Chaque octet est identifié en mémoire par une adresse codée sur 16 bits. Dans ce qui suit, nous examinerons
un petit programme assembleur que nous saisirons directement à l’aide de son code objet et que nous
exécuterons ensuite et vérifions les résultats obtenus.
6
Figure 6
Manip 7
1- Charger les octets mémoire $21 et $22 respectivement par $10 et $20
2- Procédez comme suit pour exécuter votre programme (remplir les zones vides du tableau de la figure
7):
7
1.5. Exécution d’un programme en mode pas à pas avec points d’arrêt (touche BRK)
Il est rare que la première exécution d’un programme se fasse sans erreurs. Le mode pas à pas permet de
suivre l’exécution du programme instruction par instruction (pas à pas) afin de localiser les erreurs éventuelles
dans le programme. Après chaque instruction exécutée, l’exécution du programme s’arrête pour permettre au
programmeur d’accéder (en lecture/écriture) par exemple aux contenus des différents registres internes du
processeur et de façon générale au contenu des octets mémoire modifiés par le programme utilisateur.
Points d’arrêt
Les points d’arrêt servent à exécuter bloc par bloc un long programme saisi afin d’y déceler des éventuelles
erreurs. La taille des différents blocs est fixée par le programmeur. Lorsqu’un bloc d’instructions est exécuté,
l’exécution du programme s’arrête au point d’arrêt mis à la fin de ce bloc par le programmeur, pour permettre
à ce dernier de vérifier la santé du bloc exécuté.
Dans ce qui suit, on exécutera en mode pas à pas le programme saisi au cours de la manip 3. Pour cela, un
point d’arrêt est nécessaire au niveau de la première instruction.
Manip 8
1.5.1. Procédure de mise d’un point d’arrêt
On commence par mettre un point d’arrêt (touche de fonction BRK) au niveau de la première instruction
(tableau de la figure 8)
Touche FIN M C 0 9
Figure 8
On vient de mettre un point d’arrêt à l’adresse $0000 (début du programme)
8
Manip 9
Exécution du programme en mode pas à pas
0 0 0 0 i n i n : L’exécution en mode
Taper 0000 puis touche pas à pas est démarrée à
EXC l’adresse $0000
Touche INC 0 0 0 2 i n
Touche INC 0 0 0 4 i n
Touche INC 0 0 0 6 i n
Touche INC M C 0 9
Figure 9
Il se peut, qu’après avoir saisi un programme, on veuille, pour une raison ou une autre, insérer de nouvelles
instructions dans ce programme. Le microsystème MC09 permet cela sans avoir à retaper tout le programme
déjà saisi.
On veut insérer à l’adresse $0004, du programme saisi à la manip 5, l’instruction LDA $20.
9
Manip 10
Action Commentaire de l’action Affichage Commentaire de
l’affichage
Touche FIN M C 0 9
d P dP:Le moniteur
Touche INS demande l’adresse de
début du programme
Taper 0000 puis touche F P FP: le moniteur
EXC demande l’adresse de
fin du programme.
Taper 0008 puis touche A I AI: le moniteur
EXC demande l’adresse
d’insertion
Le programme précédent débute avec l’instruction LDA #$00 qui occupe deux octets mémoire résidant aux
adresses $0000 et $0001. L’instruction CLRA, occupant seulement un octet mémoire, peut avantageusement
remplacer l’instruction LDA #$00. Pour cela, il suffit de remplacer le code machine de LDA #$00, à l’adresse
$0000, par celui de CLRA ($4F) et de supprimer ensuite le second octet mémoire de LDA #$00, à l’adresse
$0001.
10
Manip 11
Touche INS
($0001) =……………..….
($0002) =……………..….
($0003) =……………..….
($0004) =……………..….
($0005) =……………..….
($0006) =……………..….
($0007) =……………..….
($0008) =……………..….
($0009) =……………..….
Remarque: Une autre alternative à la suppression du second octet de l’instruction LDA #$00 consiste tout
simplement à remplacer cet octet par le code machine de l’instruction NOP. Cette alternative présente
cependant l’inconvénient d’avoir un programme plus long d’un octet et donc moins rapide dans son exécution
que le programme sans l’instruction NOP.
11