★ CODING ★ CLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★ |
9/8.05.2 - Programme de Dump en Assembleur | Coding Classeurs Weka |
9/8.5.2 Programme de Dump en AssembleurPartons de la logique développée pour le Dump Basic mais détaillons-la de façon à ne laisser passer aucun point obscur. Entrée des données Affichage de messages Plusieurs messages vont être affichés dans ce sous-programme. Pour faciliter les choses, nous utiliserons la routine TST Output du Firmware (en #8B5AI qui a l'avantage de préserver l'état de tous les indicateurs et de tous les registres. Cette routine affiche un caractère à la position courante du curseur. Pour afficher un texte, il faut donc réaliser une boucle sur cette routine. De plus, pour savoir que le texte à afficher est fini, il faut insérer un terminateur en fin de texte. Nous avons choisi le caractère de code ASCII 0 (nul). Lecture de données au clavier Le programme d'entrée des données va lire plusieurs données alphanumériques au clavier. Pour réaliser la lecture d'un caractère, nous utilisons la routine KM WAIT CHAR (en #BB06 ). Pour lire une chaîne alphanumérique, nous devrons donc faire une boucle sur cette routine. Connaissant la longueur de la chaîne à saisir, la fin de la saisie se fera automatiquement. Les routines d'affichage et de lectures mises en place, la structure du module d'entrée des données sera la suivante : Affichage des données lues en mémoire Initialisation Pour augmenter le nombre de données par ligne (dans le cas où le résultat est sorti sur écran), le mode d'affichage choisi est le mode 80 colonnes (MODE 2). Ce mode est activé grâce à la fonction SCR SET MODE (#BC0E) du FIRMWARE. Si la sortie se fait sur Imprimante, le message « Impression en cours » est affiché sur l'écran, toujours grâce à la routine TXT OUTPUT. Affichage du DUMP L'affichage se réalise en trois étapes : – adresse ; * Affichage de l'adresse L'adresse est affichée/imprimée en utilisant une routine dont le but est de : Une telle routine est nécessaire car l'affichage ou l'impression ne peut se faire qu'à travers des caractères ASCII. La conversion HEXA – ASCII est faite en séparant l'octet de poids fort de l'octet de poids faible (chacun donnera un caractère ASCII). Chacun des deux quartets ainsi obtenus est comparé au chiffre 10. S'il est supérieur ou égal, le nombre # 37 est ajouté à quartet ; sinon, le nombre # 30 est ajouté au quartet. Ce qui se traduit par l'organigramme page suivante. * Affichage des données octets Chaque octet est affiché/imprimé en utilisant la routine de conversion/affichage décrite ci-dessus. A noter à ce sujet que deux routines ont * Affichage des données ASCII correspondantes Les données ASCII affichables et imprimables sur des imprimantes clas siques ont des codes compris entre 32 et 128. Tous les autres code: sont systématiquement ignorés par le programme de Dump et rempla ces par un point décimal (.). Une fois les données ASCII affichées, la ligne de Dump suivante es amorcée : – dans le cas d'un affichage écran, si la 23" ligne n'a pas été atteinte Les différents tests et actions cités ci-dessus s'enchaînent comme le montre l'organigramme suivant : Le programme assembleur a été saisi sous « ZEN ». Les instructions LOAD et END ne sont pas forcément nécessaires avec d'autres assembleurs. Le listing du programme est le suivant :
Ci-dessous, nous donnons un exemple d'impression obtenu entre les adresses #6000 et #610F. Dump sur imprimante avec le programme ASM de Dump de 6000 à 6100 Il est également possible (pour aller plus vite) de saisir les codes hexadé-cimaux correspondant au programme assembleur sous BASIC.
Si vous décidez d'entrer le programme assembleur sous Basic, vérifiez les codes entrés grâce au programme de checksum (voir Partie 9, chap. 8.4). C6 30 7F B4 E3 95 59 38 5F B7 87 14 32 4F 27 57 42 6F 95 Î9 F9 72 4B 77 DA 1E 1F C1 62 55 79 80 A6 DC 5C CE F5 7D C8 A7 E4 4A 5 2B 47 76 F8 43 AB 2D E8 4B BC F1 8B 8F Si une ou plusieurs des données de vérification ne correspondent pas avec celles données ci-dessus, vérifiez la ligne correspondante. Remarque : Plusieurs données ont été rajoutées en fin de listing afin d'assurer la compatibilité avec le programme de checksum.
|