Initiation à lassembleur 6809
Cours n°1
N'avez-vous jamais voulu apprendre à programmer en assembleur sur Thomson? L'assembleur étant pourtant le langage le
plus proche de la machine, cela vous permettrait sans aucun doute de réaliser
des programmes dont l'exécution serait beaucoup plus rapide que le Basic.
Familiarisons-nous donc avec ASSEMBLER, le programme d'assemblage sur Thomson:
- Lancez ASSEMBLER en fichier CHG ou cartouche (de préférence la version 2.0, cette version sachant mieux gérer les FAT double densité)
- Tapez "1" + RET. Vous êtes dans la barre de commande éditeur.
- Tapez "X" + RET. Vous êtes dans le moniteur.
- Tapez "Q" + RET. Vous êtes dans la page du menu.
- Tapez "2" + RET. Vous êtes dans le moniteur.
- Tapez "X" + RET. Vous êtes dans la barre de commande éditeur.
- Tapez "Q" + RET. Vous êtes dans la page du menu.
Après cette gymnastique bien épuisante, entrez dans l'éditeur en tapant "1" + RET.
- Tapez CNT+"C". Vous êtes dans l'éditeur.
- Tapez CNT+"C". Vous êtes dans la barre de commande de l'éditeur. Le curseur bleu foncé réapparaît.
CNT+"C" est donc la commande magique pour passer de l'éditeur à la barre de commande de l'éditeur. L'éditeur va vous permettre
d'écrire le programme en assembleur, la barre de commande de sauvegarder et charger
vos fichiers, de sortir de l'éditeur, d'effacer le texte édité, d'assembler
votre programme, etc...
Entrons dans l'éditeur en tapant une nouvelle fois CNT+"C" et écrivons notre premier programme assembleur
pour TO: nous allons afficher tous les caractères standard à l'écran.
- Tapez "DEBUT". Appuyez sur la barre espace.
- Tapez "LDB". Appuyez sur la barre espace.
- Tapez "#$20". Appuyez sur return.
- Tapez "SUITE". Appuyez sur la barre espace.
- Sur TO, tapez « JSR » ; sur MO, tapez « CALL ». Appuyez sur la barre espace.
- Sur TO, tapez « $E803 » ; sur MO, tapez « $02 ». Appuyez sur return puis sur la barre espace.
- Tapez « INCB ». Appuyez sur return puis sur la barre espace.
- Tapez « BPL ». Appuyez sur la barre espace.
- Tapez « SUITE ». Appuyez sur return puis sur la barre espace.
- Sur TO, tapez « SWI » ; sur MO, tapez « STOP ». Appuyez sur return puis sur la barre espace.
- Tapez « END » et éventuellement sur la touche return.
- Tapez CNT+C pour revenir à la barre de commande de l'éditeur.
Le texte que vous avez édité doit être le suivant (avec son équivalent Basic pour la compréhension du programme). Dans la
première colonne, le programme pour TO, dans la deuxième, le programme pour MO:
DEBUT LDB #$20 | DEBUT LDB #$20 | < 10 B=&H20
SUITE JSR $E803 | SUITE CALL $02 | < 20 PRINT CHR$(B);
INCB | INCB | < 30 B=B+1
BPL SUITE | BPL SUITE | < 40 IF B<&H80 THEN 20
SWI | STOP | < 50 END
END | END | - Fin du programme -
L'édition comporte 4 champs, c'est-à-dire 4 zones définies verticalement:
- Le premier champ (où se trouvent "DEBUT" et
"SUITE") est le champ étiquette (ou label). Sous Basic, chaque ligne
est numérotée pour assurer les branchements par les GOTO et les GOSUB. Ici, ce
ne sont pas des numéros de lignes mais des étiquettes que l'on utilise, qui
marquent les endroits des branchements. Le nom des étiquettes est laissé
évidemment au choix du programmeur.
- Le deuxième champ (où se trouvent, entre autres, « LDB », « JSR » et « CALL ») est le champ
instruction. Terme qui équivaut à « instruction » sous Basic.
- Le troisième champ (où se trouvent « #$20 »
/ « $E803 » / « $02 » ) est le champ opérande. Là
se trouvent les valeurs ou les registres incriminés.
- Le quatrième champ (non utilisé ici) se trouve en appuyant sur la
barre espace à partir du troisième champ. Vous pouvez inscrire là les
commentaires pour votre programme. Même les minuscules, accentuées ou non, sont
autorisées.
Le passage d'un champ à l'autre se fait donc par la barre espace.
Les déplacements du curseur se font, bien sûr, par les touches curseur.
Voyons succinctement comment fonctionne ce programme:
- LDB #$20 La valeur $20 est chargée dans le registre (ou accumulateur) B. Cet
accumulateur 8 bits est une espèce de mémoire flottante qui permet le passage
de paramètres entre les programmes assembleur.
- JSR $E803 (pour TO)/CALL $02 (pour MO)
Sur TO, le programme effectue un gosub (Jmp to SubRoutine) à l'adresse
$E803 qui effectue l'affichage dun caractère par le Moniteur. Sur MO, le
programme appelle la routine dexception n° $02 qui effectue laffichage dun
caractère par le Moniteur.
- INCB La valeur dans le registre B est INCrémentée, c'est-à-dire qu'on lui ajoute une valeur
(ici, une unité).
- BPL SUITE BPL (Branch if PLus) implique que le branchement (GOTO) se
fera tant que la valeur sera positive, les valeurs positives 8 bits allant de
$00 (0) à $7F (127) et les valeurs négatives de $80 (128) à $FF (255). Comme ce
sont les caractères standard qui nous intéressent, nous nous arrêterons à $7F
(127).
- SWI (pour TO)/STOP (pour MO) pour stopper l'exécution
- END pour stopper l'assemblage. Même sil se trouve du texte au-delà,
lassemblage sarrêtera dès quil rencontrera la directive END.
Il ne vous reste plus qu'à assembler le programme, puisqu'un programme qui n'a pas été assemblé ne peut être exécuté.
Tapez donc "A" + RETURN. Si le nombre d'erreurs devant l'expression
"Total errors" est différent de 00000, c'est que vous avez fait une
faute de frappe dans le texte édité. Corrigez-la à l'aide des touche INS ou EFF
et réassemblez le programme.
Passons maintenant dans le moniteur pour exécuter le programme assemblé. Appuyez sur une touche. Tapez donc
"X" + RETURN puis "GDEBUT" + RETURN, "GDEBUT"
équivalant à un "GOTO DEBUT". Tous les caractères standard sont
affichés à l'écran, suivis du message de break généré par l'instruction SWI.
Pour sauver votre programme, retournez dans la barre de commande d'éditeur, tapez "S" + le numéro de lecteur
+ ":" + le nom de votre fichier. Le numéro de lecteur peut être
"0", "1", "2", "3" pour le lecteur
disquette, "4" pour le RamDisk et "C" pour la cassette. Le
nom de fichier peut ne comporter qu'un maximum de 8 caractères puisque la
sauvegarde et le chargement se font avec un suffixe ".ASM" par
défaut. Sauf erreur, votre fichier est sauvé. Sinon, recommencez l'opération.
Pour le charger, tapez "L" + le numéro de lecteur +":" + le nom de votre fichier. Sauf erreur, votre fichier est chargé
et le texte s'affiche à l'écran.
Pour quitter ASSEMBLER, retournez à la page de menu en tapant « Q » + RETURN puis sur « 9 »... ou
appuyez sur le bouton poussoir du reset.
Vous découvrirez dans le « Manuel de lassembleur 6809 du TO7/TO7-70 » de Michel
Weissgerger (éditions Cedic Nathan) dautres commandes dAssembler, toutes
aussi pratiques les unes que les autres, valables autant sur TO que sur MO.
Elles y sont plus amplement expliquées. |