CODINGCLASSEURS WEKA ★ Comment exploiterr toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/2.6.1 - DEVPACCoding Classeurs Weka

4/2 - Assembleur Z80 : Définitions et rappels de base

4/2.6 - Assembleurs existants

4/2.6.1 - DEVPAC

Cet assembleur fonctionne sur CPC 464, 664 et 6128. Deux parties le composent :

  • GENA3 : Editeur de texte et Assembleur,
  • MONA3 : Désassembleur et Debugger.

I - GENA3

Présentation :

C'est grâce à ce programme que vous pourrez saisir le « source » de vos programmes assembleur.

C'est également avec GENA3 que vous fabriquerez le « binaire exécutable », c'est-à-dire le code hexadécimal exécutable.

  • Syntaxe des codes reconnus par le compilateur de GENA3 : Le format est le suivant :

LABEL : Mnémo. Opérande Commentaire
ADR : LD A, 10 ;A contient 10

Les caractères spéciaux reconnus par GENA3 sont les suivants :

; pour signaler le début d'un commentaire

* pour définir une commande :
*E affiche 3 lignes blanches à l'écran ou un saut de page sur l'imprimante.
*Hs affiche l'entête alphanumérique « s » après chaque saut de page.
*S stoppe le listage sur cette ligne. Le listage redémarre par l'appui sur une touche quelconque.
*L- Le listage à l'écran et l'impression sont arrêtés à partir de cette ligne.
*L+ Le listage à l'écran et l'impression sont validés à partir de cette ligne.
*D+ Le compteur d'adresse est donné en décimal au début de chaque ligne.
*D - Le compteur est donné en hexadécimal au début de chaque ligne.
*F< Nom de fichier > permet d'assembler le fichier spécifié sur cassette ou disquette.
*T+ < Nom de fichier> permet d'obtenir la sauvegarde du code machine généré par la compilation sous le nom précisé.
*T- ferme le fichier objet courant.

Directives d'assemblage :

Ce sont des mots-clés qui ne concernent que le compilateur et qui ne font pas partie des mnémoniques du Z80. Ces directives varient d'un assembleur à l'autre.

ORG < expression >

Donne l'adresse d'implantation du programme objet.

< Label: > EQU < expression >

Place la valeur de l'expression dans la variable précédant le mot clé EQU.

DEFB< expression >[, [...# < expression > ]...]

Réserve une zone de n octets (n est le nombre d'expressions spécifiées), et y place la ou les expression(s) spécifiée(s).

DEFW< expression >[, [..., < expression >]...]

Réserve une zone de 2#n octets (n est le nombre d'expressions spécifiées) et y place la ou les expression(s) spécifiée(s).

DEFS < expression >

Définit une zone dont la longueur est donnée par l'expression spécifiée et la remplit de zéro.

DEFM< chaîne alphanumérique >

Réserve une zone de n caractères (n est la longueur de la chaîne) et y place l'expression chaîne spécifiée.

ENT < expression >

Définit l'adresse d'exécution du programme (point d'entrée).

IF < expression logique >
< BLOC D'INSTRUCTIONS >
ELSE
< BLOC D'INSTRUCTIONS >

Assemblage conditionnel : le premier bloc d'instructions est assemblé si l'expression logique est vraie. Dans le cas contraire, le deuxième bloc d'instructions est assemblé.

Les bases de numération et les opérateurs suivants peuvent être utilisés :

aucun caractère spécial pour signaler la manipulation de nombres décimaux,
% indique que le nombre qui suit est exprimé en binaire,
# indique que le nombre qui suit est exprimé en hexadécimal.
+ addition
- soustraction & et logique (AND)
@ ou logique (OR)
! ou exclusif (XOR)
* multiplication entière
/ division entière
? fonction MODULO

• Chargement du logiciel :

Tapez RUN "GENA3" sur 664 et 6128, ou "RUN" sur 464 Le message suivant apparaît : "Load Address ?".

Entrez l'adresse où doit être stocké le premier octet de GENA3.

L'entête suivant apparaît :

AMSOFT PRESENTS
HISOFT DEVPAC
GENA3.1 Assembler Loader
Copyright Hisoft 1 984
Load address ?
Load MONA now ?

Please wait... Loading GENA3.1

Donnez une adresse d'implantation et répondez N(o) à la question « Load MONA now ? ».

Lorsque GENA est en mémoire, le menu suivant apparaît :

HISOFT GENA 3.1 ASSEMBLER AMSTRAD CPC464 Copyright HISOFT 1984 Ail rights reserved

Assemble Bye
Current State Delete
Edit Find
G et text Help
Insert CTRL/Jump to MONA
List Move
reNumber Object
Put text Q put ASCII
Run Separator
Tape speed Upper line
text info Width
Z print text Y print length

ASSEMBLE : Option A, Format A

Cette option permet de compiler le programme source en mémoire. Le message suivant apparaît :

Table size : < dim table des symboles >

Entrez la dimension en octets de la table des symboles. Si vous tapez < ENTER >, GENA affectera une valeur par défaut à cette table.
Le message « Options : » apparaît vous invitant à donner une option de compilation.

Cette option peut être :

  • 1 si vous désirez un listing de la table des symboles,
  • 2 si le code objet ne doit pas être généré,
  • 4 si vous ne désirez pas avoir de listing,
  • 8 si vous voulez un listing sur imprimante,
  • 16 si le code objet généré doit être placé juste après la table des symboles,
  • 32 si vous ne désirez effectuer aucune vérification sur l'adresse d'implantation du code objet (le temps de compilation est plus court).

Ces options peuvent être cumulées. Par exemple, en choisissant l'option 17, vous produirez les actions 1 et 16 (17 = 1 + 16), etc.

Le message suivant apparaît quand vous avez donné l'option de compilation :

Hisoft GENA 3.1 Assembler. Page 1.
Pass 1 errors : 00 Pass 2 errors : 00
Table used : xx From yy

xx indique la taille de la table utilisée, et yy la taille de la table réservée par l'option « table size ».

Si une erreur se produit durant la compilation, un numéro d'erreur sera affiché et la phase d'assemblage sera stoppée :

  • provisoirement jusqu'à l'appui sur une touche quelconque,
  • définitivement si vous appuyez simultanément sur CTRL et C.

BYE : Option B, Format B

Redonne le contrôle au BASIC.

CURRENT STATE : Option C, Format C

Affiche la valeur courante des délimiteurs N1, N2, S1 et S2.

DELETE : Option D, Format Dn,m

Efface les lignes comprises entre n et m.

EDIT : Option E, Format En

Edite la ligne n.

FIND : Option F, Format Fn, m, f[,s]

Cherche la chaîne « f » entre les lignes n et m.
Si la chaîne « s » est présente, remplace « f » par « s ».

GET TEXT : Option G, Frmat G,,s

Cherche le fichier source de nom « s » sur l'unité de cassette ou de disquette.

HELP : Option H, Format H

Affiche le résumé des commandes.

INSERT : Option I, Format I

Insère du texte à la position courante du pointeur de ligne.

CTRL/J : Option CTRL + J

Format CTRL et J pressées en même temps. Exécute MONA s'il est en mémoire ; sinon, ne produit aucune action.

LIST : Option L, Format L

Liste les lignes de la position courante du pointeur de ligne à la fin du fichier.

MOVE : Option M, Format Mn,m,d

Déplace le bloc compris entre les lignes n et m en d et efface les lignes déplacées.

RENUMBER : Option N, Format Nn,m

Renumérote la première ligne en lui donnant le numéro n, et donne un espacement entre deux lignes de m.

OBJECT : Option O, Format O,,s

Sauvegarde le programme source sur cassette ou disquette en lui donnant le nom s.

PUT TEXT : Option P, Format Pn,m,s

Sauvegarde le programme source sur cassette ou disquette à partir de la ligne n, jusqu'à la ligne m sous le nom s.

PUT ASCII : Option Q, Format Q,,s

Sauvegarde le programme source en ASCII sur cassette ou disquette en lui donnant le nom s.

RUN : Option R, Format R

Exécution du programme en mémoire.

SEPARATOR : Option S, Format S„d

Permet de choisir le caractère séparateur utilisé sur une ligne de commande. Le caractère séparateur par défaut est la virgule.

TAPE SPEED : Option T, Format Tn

Définit la vitesse de sauvegarde sur cassette.
T suivi de < ENTER > définit la vitesse lente, et T suivi d'un nombre supérieur à zéro définit la vitesse rapide.

UPPER LINE : Option U, Format U

Affiche la dernière ligne de texte entrée.

VERIFY : Option V, Format V,,s

Vérifie que le fichier texte en mémoire est identique au fichier cassette ou disquette lu de nom s.

TEXT INFO : Option X, Format X

Donne les adresses de début et de fin d'implantation du texte en mémoire.

WIDTH : Option W, Format W

Switch de passage en mode 40 ou 80 colonnes.

PRINT TEXT : Option Z, Format Z

Imprime le fichier texte actuellement en mémoire.

PRINT LENGTH : Option Y, Format Yn

Fixe le nombre de lignes par page pour les sorties sur imprimante.

II - MONA3

Présentation :

Comme GENA3, MONA3 peut être implanté à une adresse quelconque en mémoire vive.

Quand MONA3 est en mémoire, l'écran suivant apparaît :

0000 01 89 7F LD BC,#7F89

>PC 0F50 22 DC 1A 2A E1 1A 22 CF 1A
 SP BFF2 A2 B9 85 7F 8E F2 7B 96 E8
 IY AE70 CB 00 00 7 A 8A 6A 8E FF FF
 IX BFF8 7B 96 E8 03 98 3A 6F DE 00
 HL 0000 01 89 7F ED 49 C3 91 05 C3
 DE 1AB7 00 00 00 00 00 00 00 00 00
 BC 0000 01 89 7F ED 49 C3 91 05 C3
 AF 0044 01 89 7F ED 49 C3 91 05 C3
 IR 007D Z V

FFF4 00 FFFC 00 0004 49 000C 84
FFF5 00 FFFD 00 0005 C3 000D B9
FFF6 00 FFFE 00 0006 91 000E C5
FFF7 00 FFFF 00 0007 05 000F C9
FFF8 00  >0000 01 < 0008 C3 0010 C3
FFF9 00 0001 89 0009 8A 0011 10
FFFA 00 0002 7F 000A B9 0012 BA
FFFB 00 0003 ED 000B C3 0013 C3

Les commandes possibles sont les suivantes :

  • [DROITE] Pointeur mémoire + 1
  • [GAUCHE] Pointeur mémoire - 1
  • [BAS] Pointeur mémoire -8
  • [HAUT] Pointeur mémoire +8
  • ! Définition d'un point d'arrêt permettant au programmeur de visualiser l'état des registres ou/et de la mémoire (par exemple).
  • CTRL A Désassemble une page à partir du pointeur de mémoire.
  • CTRL C Continue l'exécution du programme à partir de l'adresse du pointeur de programme PC.
  • CTRL D Choix de la base de numération (10 ou 16).
  • CTRL J Permet d'entrer sous GENA3 s'il est en mémoire : sinon, ne produit aucune action.
  • CTRL L Commande identique à la commande L, mais le bloc de mémoire est dirigé vers l'imprimante.
  • CTRL S Exécution d'un programme pas à pas. Cette commande exécute l'instruction courante, met à jour les données affichées sur l'écran et attend une autre commande.
  • CTRL X Retour sous BASIC.
  • G[2A]< cr > Recherche d'un ou plusieurs octets.
  • [FF] < cr> Terminer la définition du ou des octets recherchés par < cr >.
  • H[:32123] Conversion décimale/hexadécimale.
  • I Option conversationnelle de copie d'un bloc de mémoire d'un endroit à un autre.
  • J[:932A] Exécution du code machine situé à l'adresse indiquée.
  • L Liste sur écran un bloc de mémoire à partir de l'adresse du pointeur de mémoire.
    Tapez ESC pour retourner au menu général, une autre touche pour poursuivre le listage.
  • M[:3212] Affecte la valeur spécifiée au pointeur de mémoire.
  • N Cherche la prochaine occurence des octets définis dans la commande G.
  • O Affiche la mémoire pointée par l'instruction de débranchement relatif située au pointeur de mémoire.
  • P Option conversationnelle de remplissage d'un bloc de mémoire avec l'octet spécifié.
  • S Chargement du pointeur de mémoire avec le pointeur de programme SP.
  • T Option conversationnelle de désassemblage d'un bloc de mémoire.
  • U Utilisée avec l'option 0. Permet de retourner à l'adresse où l'option 0 a été tapée.
  • V Utilisée avec l'option X. Permet de retourner à l'adresse où l'option X a été tapée.
  • W Option conversationnelle d'écriture d'un bloc de mémoire sur cassette ou disquette.
  • X Affiche la mémoire pointée par l'instruction de débranchement absolu située au pointeur de mémoire.
  • Y Permet d'entrer des caractères ASCII à partir du pointeur de mémoire.

Remarque :

Les valeurs entre crochets servent d'illustration aux commandes dans lesquelles ils apparaissent. Les crochets ne doivent pas être entrés lors de l'utilisation réelle de la commande.

III - CONCLUSIONS

GENA3 :

  • L'éditeur est de bonne qualité. Mais ce n'est qu'un éditeur de lignes et non un éditeur de texte pleine page, avec tout l'inconfort qu'un éditeur de lignes implique.
  • Les possibilités de l'éditeur sont multiples et il est assez simple à manipuler.
  • La commande H(elp) permet à tout moment d'avoir le sommaire des commandes disponibles. Ce sommaire est parfait quand on sait se servir de l'éditeur, mais le manuel utilisateur sera nécessaire pour le programmeur débutant.
  • Le compilateur à deux passes offre des options intéressantes que l'on trouve rarement sur les compilateurs disponibles sur les micro-ordinateurs de la catégorie des AMSTRAD CPC. Un reproche cependant, il ne gère pas les macro-instructions.

MONA3:

  • Les possibilités de ce debugger sont multiples, et lorsqu'on s'est familiarisé avec le maniement des PC et pointeur de mémoire, son emploi est souple et agréable.
    En conclusion, cet éditeur/compilateur/debugger est d'un niveau convenable et nous vous le conseillons si vous possédez un CPC 664 ou 6128. Sur 464, son emploi est laborieux à cause de la lenteur de chargement de GENA3 et MONA3.
    D'autre part, son implantation en mémoire est quasiment quelconque, ce qui permet de développer des programmes, qui ne seraient pas relogeables, à leur adresse réelle en RAM. 

Page précédente : 4/2.6 - Assembleurs existants

CPCrulez[Content Management System] v8.75-desktop/cache
Page créée en 341 millisecondes et consultée 203 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.