★ CODING ★ AMSTRAD CPC 464 - CRÉER DE NOUVELLES INSTRUCTIONS ★ |
Nouvelles Instructions 005 |
EXEMPLES DE PROGRAMMES 2. INTÉGRATION D'UN PROGRAMME MACHINE Pour simplifier la manipulation des programmes en langage machine, et pour rendre leur emploi moins dangereux (on a vite fait de taper 43800 au lieu de 43880, par exemple), il est possible d'effectuer ce que l'on appelle une intégration. Cela permet de donner à ces programmes des noms, grâce auxquels il sera possible de les appeler en BASIC, comme s'il s'agissait véritablement de nouvelles instructions. |PAUSE,X Notons que l'extension d'instruction est signalée par un trait vertical (SHIFT + @) placé devant le mot. Le programme peut être divisié en quatre parties : * Lignes 1, 2 et 3 : Intégration proprement dite. Nous allons étudier tout cela dans le désordre pour que, paradoxalement, cela soit plus clair. Ligne 6 Il s'agit de la représentation hexadécimale des codes ASCII (à ce sujet, voir page A3.1 du guide de l'utilisateur) des lettres du mot choisi pour l'instruction, sauf la dernière (en l'occurrence, il s'agit donc des codes de P, de A, de U, et de S). Ligne 7 Représentation hexadécimale du code ASCII de la dernière lettre du mot d'instruction plus &80 (en l'occurrence, il s'agit donc du code ASCII de E, plus &80, ou plus 128 en décimal). Ligne 8 Le 0 signifie à la machine que le mot est terminé. Ligne 9 Ces quatre octets sont réservés pour la machine (et plus exactement pour un système appelé Kernel) ils lui serviront à gérer l'extension. La manière dont elle s'y prendra nous importe peu. Ligne 4 Il ne s'agit pas là d'une instruction, mais tout simplement de l'adresse en mémoire du code ASCII de la première lettre du mot d'instruction (ici &50, code ASCII de P, à l'adresse 43870). Ligne 5 L'instruction C3 est une instruction de saut que l'on peut comparer au GOTO BASIC. Cette instruction doit être suivie d'une adresse en mémoire (ici 43880 ou &AB68). Remarque importante D'une manière générale, lorsque l'on écrit une adresse ou une donnée quelconque dans un programme en langage machine, l'octet faible est toujours écrit avant l'octet fort. Voyons maintenant l'intégration : Ligne 1 Chargement, dans BC, de l'adresse du début de la table d'instruction (donc de l'adresse du premier code de la ligne 5). Ligne 2 Chargement, dans HL, de l'adresse du premier des quatre octets réservés. Ligne 3 Saut à l'adresse 48337. A cette adresse, qui fait partie du système interne de la machine, se trouve un programme que l'on pourrait appeler "Intégrer une instruction". Là encore, nous laisserons l'ordinateur faire son travail, sans nous préoccuper de la manière dont cela se passe. Quant à nous, il nous suffit de savoir que ça marche... Remarque Contrairement au programme précédent, celui-ci n'est pas directement relogeable. Il comprend en effet ce que l'on appelle des adresses internes ; la première ligne, par exemple, charge BC avec l'adresse &AB59 (43865), qui est une adresse du programme lui-même. Si vous souhaitez déplacer ce programme et le mettre ailleurs en mémoire, ce qui est toujours possible, il ne faut surtout pas oublier que cette adresse va également changer en fonction de la nouvelle place du programme, et qu'il faut donc modifier la ligne 1, ainsi que toutes les lignes comprenant des adresses internes. Pour faciliter les déplacements de programme que vous pourriez entreprendre, les adresses à modifier seront toujours soulignées dans les listings.
|