![]() ![]() ![]() |
Un fichier source, c'est un fichier ASCII portant l'extension .asm, il est écrit directement avec un traitement de texte quelconque comme Notepad, WordPad, Edit... ou spécialisé comme FargEdit de Benoît Scherrer.
Ce fichier, une fois compilé, donnera soit un programme exécutable soit une bibliothèque utilisable, avec l'extension .92p.
Pour ne pas vous imposer ma manière personnelle d'organiser les choses, je vous indique à chaque fois ce qui est obligatoire et ce qui peut être modifié.
Enfin, je vous explique aussi ce que sont les fichiers .h et .bin, les défauts et avantages de ceux-ci...
![]() ![]() ![]() |
Par ailleurs, macros et sous-programmes sont expliqués en détail.
; ------------------------------------------------- ; | | ; | <Titre> | ; | réalisé par <Auteur> à partir du <date> | ; | compiler avec Fargo 0.2.7.1 | ; | | ; ------------------------------------------------- include <bibliothèque.h> ; inscrivez autant d'include que de bibliothèques nécessaires xdef _main ; vous devez exporter le label qui pointe la première instruction xdef _comment ; vous devez éventuellement exporter le label qui pointe le commentaire ; ------------------ ; | Macros | ; ------------------ ; inutile si vous ne voulez pas de macros dans le programme principal ; ------------------ ; | Sous-programme | ; ------------------ ; inutile si vous ne voulez pas de sous-programmes dans le programme principal ; ------------------ ; | Programme | ; ------------------ _main: ; label pointant la première instruction ; mettre ici les ; | instructions composant ; | le programme principal RTS ; dernière instruction obligatoire d'un programme ; ------------------ ; | Données | ; ------------------ ; il est presque impératif de mettre les données après le code, ; prenez garde à mettre les variables de type octet après les types mot et double mot. doublemot: dc.l $00289123 ; déclaration en base hexadécimale mot: dc.w 1999,2091 ; deux déclarations en base décimale octet: dc.b %01101000 ; déclaration en base binaire _comment: dc.b "Commentaire du programme",0 ; chaîne terminée par un caractère nul ; ------------------ ; | Fin | ; ------------------ end ; fin du programme source
; ------------------------------------------------- ; | | ; | <Titre> | ; | réalisé par <Auteur> à partir du <date> | ; | compiler avec Fargo 0.2.7.1 | ; | | ; ------------------------------------------------- xdef _main xdef _comment ; ------------------ ; | Macros | ; ------------------ ; ------------------ ; | Sous-programme | ; ------------------ ; ------------------ ; | Programme | ; ------------------ _main: RTS ; ------------------ ; | Données | ; ------------------ ; ------------------ ; | Fin | ; ------------------ end
![]() ![]() ![]() |
; ------------------------------------------------- ; | | ; | <Titre> | ; | réalisé par <Auteur> à partir du <date> | ; | compiler avec Fargo 0.2.7.1 | ; | | ; ------------------------------------------------- include <bibliothèque.h> ; inscrivez autant d'include que de bibliothèques nécessaires xdef _library ; vous devez exporter le label qui pointe le nom de la bibliothèque xdef _nomlib@0000 xdef _nomlib@0001 xdef _nomlib@xxxx ; inscrivez autant d'xdef que de fonctions nécessaires ; ------------------ ; | Macros | ; ------------------ ; inutile si vous ne voulez pas de macros dans le programme principal ; ------------------ ; | Sous-programme | ; ------------------ ; inutile si vous ne voulez pas de sous-programmes dans le programme principal ; ------------------ ; | Bibliothèque | ; ------------------ _nomlib@0000: ; label pointant la fonction _nomlib@0000 ; mettre ici les ; | instructions composant ; | la fonction _nomlib@0000 RTS ; dernière instruction obligatoire de la fonction _nomlib@0001: ; label pointant la fonction _nomlib@0001 ; mettre ici les ; | instructions composant ; | la fonction _nomlib@0001 RTS ; dernière instruction obligatoire de la fonction _nomlib@xxxx: ; label pointant la fonction _nomlib@xxxx ; mettre ici les ; | instructions composant ; | la fonction _nomlib@xxxx RTS ; dernière instruction obligatoire de la fonction ; ------------------ ; | Données | ; ------------------ ; il est presque impératif de mettre les données après le code, ; prenez garde à mettre les variables de type octet après les types mot et double mot. doublemot: dc.l $00289123 ; déclaration en base hexadécimale mot: dc.w 1999,2091 ; deux déclarations en base décimale octet: dc.b %01101000 ; déclaration en base binaire _library: dc.b "_nomlib",0 ; chaîne terminée par un caractère nul ; ------------------ ; | Fin | ; ------------------ end ; fin de la bibliothèque source
; ------------------------------------------------- ; | | ; | <Titre> | ; | réalisé par <Auteur> à partir du <date> | ; | compiler avec Fargo 0.2.7.1 | ; | | ; ------------------------------------------------- xdef _library xdef _nomlib@0000 ; ------------------ ; | Macros | ; ------------------ ; ------------------ ; | Sous-programme | ; ------------------ ; ------------------ ; | Bibliothèque | ; ------------------ _nomlib@0000: RTS ; ------------------ ; | Données | ; ------------------ _library: dc.b "_nomlib",0 ; ------------------ ; | Fin | ; ------------------ end
![]() ![]() |
![]() ![]() |
![]() ![]() ![]() |
Pour accéder à ce code, il faut lier ce fichier .h au programme avec la ligne include "nom".h où nom est le nom du fichier .h.
Désormais vous appelez une macro, vous sautez à un sous-programme... comme si de rien n'était :-)
Notez que d'autres fichiers portant l'extension .h représentent un autre type (ne nous intéresse pas dans cette page) qui est utilisé pour les bibliothèques, ils contiennent les noms des fonctions avec les paramètres ainsi qu'une courte description et enfin l'état de certains registres en entrée et en sortie.
![]() ![]() |
Je pense que ces fichiers sont utilisés principalement pour sauvegarder des images, peut être pour inclure des opcodes (instructions en assembleur compilées, donc en... binaire) sans avoir à retaper le code assembleur original :-)
Ce code binaire, contrairement aux fichiers .h, n'est pas lié au programme.
L'assembleur génère ce code à l'endroit exacte où est déclarée la ligne incbin "nom.bin", où nom est le nom du fichier à inclure.
Pour connaître l'adresse de ce code, il vous suffirait d'écrire :
pointeur_binaire: incbin "image1.bin"
LEA pointeur_binaire(PC) ; l'adresse du code est dans A0
Zguide © 1998 - 1999 par Florian DREVET. Tous droits réservés