Vous êtes sur la page 1sur 11

Université Sidi Mohammed Ben Abdellah

École Supérieure de Technologie de Fès


Filière Génie Industriel et Maintenance

TP INFO INDUST
(Assembleur 6809)

MR KHATORY

1
1. FAMILIARISATION AVEC L’UTILISATION DU MICROSYSTEME MC09

Description de la maquette MC09


Elle se présente comme une carte mère d’un ordinateur personnel (PC). Elle héberge le microprocesseur 6809
et les différents périphériques avec lesquels il dialogue.

Afficheurs de la maquette MC09


C’est un affichage en six digits hexadécimaux (chaque digit est codé sur 4 bits). Le champ des quatre premiers
digits représente, en général, les adresses mémoire (16 bits) $XYZT (0  X, Y, Z, T  F ) et le champ des deux
derniers digits le contenu mémoire (8 bits) pointé par l’adresse mémoire $XYZT.

Clavier de la maquette MC09


Il est composé de deux ensembles de touches :
o 16 touches (0 à F) constituant le clavier hexadécimal et permettant de saisir directement un
programme par son code machine.
o 14 touches de fonctions dont le rôle de chacune est rappelé brièvement dans le tableau ci-dessous.

Touche de fonction Rôle de la touche de fonction


RST (Reset) : Initialisation du système MC09. Cela initialise le
processeur (ses registres internes) mais pas la RAM où est chargé
le programme utilisateur.
LEC (Lecture de programme à partir d’une bande magnétique
(magnétophone)
PRG (touche programme pour magnétophone !?)

OFS (Offset) calcul de sauts de programme (branchement)


NMI Envoi d’une interruption (non masquable) au processeur
ECR Ecriture (Enregistrement de programme dans une bande
magnétique (magnétophone)
BRK (Break) : Insertion de points d’arrêt dans un programme.
REG Exploration des contenus des registres internes du processeur (A,
B, D, X, Y, U, S, PC, CCR, DP)
FIN Fin d’une tâche demandée au système MC09.
Insertion: permet d’insérer une nouvelle instruction dans un
INS programme déjà existant en RAM.
Décrémentation d’adresse : On passe d’une adresse mémoire à la
DEC précédente en vue de l’exploration du contenu mémoire de ces
adresses. S’utilise conjointement avec la touche INC.
EXC Exécution de programme
Accès ponctuel à la mémoire : Le moniteur permet à l’utilisateur
MEM de spécifier une adresse mémoire dans le champ des quatre
premiers digits d’affichage. Les deux derniers digits affichent
alors le contenu de l’octet mémoire pointé par cette adresse.
Incrémentation d’adresse : On passe d’une adresse mémoire à la
INC suivante en vue de l’exploration du contenu mémoire de ces
adresses. S’utilise conjointement avec la touche DEC.
Figure 1

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

Adresses sur le MC09 Capacité


Emplacement
Composant mémoire
Zi (1  i  20 ) de à

EPROM système 2732 dans laquelle réside le E000 FFFF


programme du moniteur MC09
EPROM 2732 extension utilisateur C000 DFFF
EPROM 2732 extension utilisateur A000 BFFF
PIA 6821 utilisateur 8000 8003
VIA 6522 utilisateur 8400 840F
Timer 6840 utilisateur 8800 8807
ACIA 6850 utilisateur 8C00 8C01
PIA 6821 système (afficheurs et clavier) 9000 9FFF
RAM utilisateur 0000 0F5F
90 octets réservés au moniteur MC09 0F60 0FFF
Processeur 6809
Clavier 30 touches
Deux connecteurs 50 points chacun
Alimentation +5V
Borne de masse 0V

b- Initialisation du système MC09


Cela se fait par appui sur la touche RST. L’affichage M C 0 9, sur les quatre digits de gauche, signifie que l’on est
sous contrôle du moniteur MC09.

Appuyer sur la touche RST et noter le contenu des afficheurs :

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.

1.1.1. Accès en lecture

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.

Soit à écrire la valeur $17 dans l’octet mémoire d’adresse $0012.

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

Taper 17 Modification du contenu 0 0 1 2 1 7 ($0012) = $17


de l’octet mémoire
d’adresse $0012
Touche FIN Fin de tache M C 0 9 Retour sous contrôle du
moniteur système MC09
Figure 3

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.

1.3. Exploration du contenu des registres internes du processeur (touche REG)

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.

Action Commentaire de l’action Affichage Commentaire de l’affichage


Touche RST Initialisation du système M C 0 9 Nous sommes sous contrôle
MC09. du moniteur MC09
Touche REG Demande d’accès aux X y C C Visualisation du registre
registres internes du d’état CC :
processeur (CC) = $xy
Touche INC U v A Visualisation de
On passe au registre
l’accumulateur A :
suivant
(A) = $uv
Touche INC

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 :

Registre interne Contenu du registre interne


CC
A
B
D
DP
X
Y
U
PC
S

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.

Soit le petit programme suivant

Colonne 1 Colonne 2 Colonne 3


$0000 86 00 LDA #$00
$0002 1F 8B TFR A, DP
$0004 9B 21 ADDA $21
$0006 97 22 STA $22
$0008 3F SWI
Figure 5

1- Que représente globalement les contenus des colonnes 1 et 2


Colonne 1 :…………………………………………………………………………………
Colonne 2 :…………………………………………………………………………………

2- Réécrire le programme précédent selon le modèle du tableau suivant.

Code machine Code Mode Nombre


Adresse Code Code Etiquette mnémonique d’adressage d’octets Commentaire
opération opérande qu’occupe
l’instruction
en mémoire

6
Figure 6

1.4.1. Saisi de programme


Manip 6
1- En vous servant des procédures d’accès mémoire des manips 2 et 3, saisir le programme ci-dessus en
saisissant la colonne 2 du tableau de la figure 5 dans la colonne 1, du même tableau, comme suit :

($0000) = $86 ($0005) = $21


($0001) = $00 ($0006) = $97
($0002) = $1F ($0007) = $22
($0003) = $8B ($0008) = $3F
($0004) = $9B

2- Appuyer sur la touche FIN pour revenir sous contrôle du moniteur.


3- En vous servant des procédures d’accès mémoire des manips 2 et 3, vérifier que vous avez saisi le
programme sans erreurs en examinant la zone mémoire dans laquelle il est stocké. Revenir ensuite
sous contrôle du moniteur (touche FIN).

1.4.2. Exécution de programme

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):

Action Commentaire de l’action Affichage Commentaire de


l’affichage
Touche FIN
(si cela n’a pas été fait à la
fin de l’étape 6)
Demande d’exécution du A d Ad (abréviation de
Touche EXC programme en mémoire. Adresse): le moniteur
MC09 attend la saisie de
l’adresse mémoire du
début du programme.
Taper 0000 et appuyer Saisie de l’adresse de M C 0 9 Retour au moniteur après
ensuite sur la touche EXC début du programme exécution totale du
saisi) et demande de son programme.
exécution.
Figure 7

3- Vérifier les résultats de l’exécution du programme:

o Contenu du registre A : (A) = ……………..


o Contenu de l’octet mémoire d’adresse $0021.. ………($0021) = ………….
o Contenu de l’octet mémoire d’adresse $0022…………($0022) =…………..

4- Le programme a t-il rempli son rôle (oui/non) ? :… ……………………………….

5- Touche FIN pour revenir sous contrôle du moniteur MC09

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)

(Remplir les zones vides du tableau)

Action Commentaire de l’action Affichage Commentaire de


l’affichage
Touche FIN M C 0 9

Demande de mise d’un b P bP (abréviation de break


Touche BRK point d ‘arrêt dans le point). Prise en compte
programme en mémoire. par le moniteur MC09 de
la demande de mise d’un
point d’arrêt dans le
programme.
Touche EXC 1 Le moniteur attend de lui
spécifier l’adresse où un
premier (1) point d’arrêt
va être mis.
Taper 0000 Adresse à laquelle on veut 0 0 0 0 1
mettre un point d’arrêt.

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

Action Commentaire de l’action Affichage Commentaire de


l’affichage
Touche EXC A d

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

a- Interpréter, sur la colonne 4 du tableau ci-dessus, l’affichage de la colonne 3.


b- Reprendre l’exécution du programme en mode pas à pas en visualisant à chaque pas le contenu des
registres internes du processeur. Noter les registres dont le contenu est affecté par ce programme.
(On vérifiera d’abord le contenu des registres internes du processeur avant l’exécution du programme.
Une fois l’exécution en mode pas à pas est lancée, après chaque appui sur la touche INC, on examine
les différents registres à l’aide des touches REG et INC. Pour continuer l’exécution du programme, on
appuie sur la touche FIN et on poursuit l’exécution pas à pas à l’aide de la touche INC).

Registres affectés :…………………………………………………..

1.6. Insertion/suppression d’instructions dans un programme existant (touche INS)

1.6.1. Insertion d’instructions

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

Taper 0004 puis touché n b Nb : le moniteur


EXC demande le nombre
d’octets à insérer.
Taper le nombre d’octets i n S x x xx représente le
qu’occupe l’instruction en nombre d’octets que
mémoire. vous avez spécifié à
l’étape précédente.

Touche EXC 0 0 0 4 1 2 12 correspond au code


machine (ou code
objet) de l’instruction
NOP
Taper le code opération 0 0 0 5 1 2
de l’instruction LDA, et
appuyer sur INC
Taper le code opérande
de l’instruction LDA
Touche FIN

a- Vérifier que l’instruction a bien été insérée dans le programme.


b- Que réalise au juste ce nouveau programme

1.6.2. Suppression d’instructions

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

Action Commentaire de l’action Affichage Commentaire de


l’affichage
Touche FIN

Touche INS

0000 puis touche EXC

000A puis touche EXC

0001 puis touche EXC n b

FF On veut supprimer un S U P 0 1 Attente de confirmation


octet de suppression d’un octet
Touche EXC Confirmation de la 0 0 0 1 1 F Suppression de l’octet et
suppression décalage, dans la
mémoire, de l’ensemble
du programme d’un octet
vers le haut.
Touche FIN

Vérifier maintenant le contenu de la zone mémoire qu’occupe le programme :

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