CODINGHEBDOGICIEL ★ FORMATION A L'ASSEMBLEUR PRATIQUE LANGAGE MACHINE SUR AMSTRAD ★

La page pédagogique d'Hebdogiciel n°111: Basic et Langage MachineCoding Hebdogiciel

O vous, possesseurs d'Amstrad, ce jour tant attendu est enfin arrivé ! Vous pour qui le basic n'a plus de secret, vous qui en avez ras le bol de voir, dans les jeux de café, des vaisseaux se déplacer à des vitesses supersoniques alors que votre pauvre sprite basic vous laisse le loisir de boire trois cafés en attendant sa traversée de l'écran, vous qui, sachant parfaitement piloter votre machine en première, aimeriez terriblement savoir comment passer la seconde. O vous qui mijotez dans votre petite tête un jeu d'aventure avec trois mille pièces, cinq mille personnages, le double de situations, sans compter les vues en trois dimensions (3D pour les intimes) des chutes du Niagara, votre héros les remontant à la pagaie, vous qui demandez comment caser tout cela dans 42000 petits octets, ce jour sacré est venu... Il est là !

Aujourd'hui, vous entrez dans une nouvelle ère, bientôt le langage machine n'aura plus de secret pour vous. On dira de votre personne, dans les soirées chic :
"- T'as vu le mec, là ? Il programme en langage machine...
- Non?...
- Si ! J'te jure !...
- Ouah ! Le mec ! Y doit être vachement intelligent !..."
Intelligent, vous l'êtes certainement, mais si vous avez un doute, souvenez-vous du temps où vous disiez dans les soirées chic
"- T'as vu le mec, là ? Il programme en basic... etc"
Car j'ose le proclamer bien haut, le langage machine est PLUS FACILE QUE LE BASIC ! La preuve ? Savez-vous compter jusqu'à deux ? Non ? Alors je ne peux rien pour vous ! Oui ? Ces nouveaux cours vous prouveront qu'avec un simple certificat d'études primaires, et la passion du clavier, n'importe qui PEUT programmer en langage machine. Ah mais !

BASIC ET LANGAGE MACHINE

Quand vous allez en Italie sans connaître l'italien, vous faites appel à un interprète pour communiquer avec les autochtones (les italiennes si vous préférez). En revanche, si vous maîtrisez la langue du pays, il vous sera possible d'approfondir vos relations avec ses habitants. L'Italie c'est votre Amstrad, les italiennes sont le microprocesseur et l'interprète, le Basic ! A vous de crier aujourd'hui : "L'interprète aux chiottes, vivent les italiennes !...". Le langage machine est donc au microprocesseur ce que l'italien est aux italiennes. L'interprète parle italien, de même le basic parle 'LANGAGE MACHINE'. Seulement attention ! S'il vous suffisait de taper l'ordre 'PRINT "bonjour"' pour voir apparaître le mot 'bonjour' à l'écran, en langage machine il vous faudra décomposer 'PRINT' en multiples ordres du genre : 'Prends le contenu de A, mets-le dans B et ce qu'il y a dans B, sauvegarde-le... etc'. Un programme en langage machine, bien que beaucoup plus rapide à l'exécution, sera donc plus long à mettre au point qu'un programme basic.

LANGAGE MACHINE ET ASSEMBLEUR

Et c'est ici que commencent les premiers exemples. Vous connaissez l'instruction basic 'RETURN' ? Elle existe aussi en langage machine : 11001001. (Et il dit que c'est facile !) soit en hexadécimal : &HC9 (ouh là là I) attention, voici maintenant en assembleur 'RET' (Ah ! ça va mieux !).

BASIC LANGAGE MACHINE ASSEMBLEUR

RETURN 11001001 ou &HC9 RET

L'assembleur est un langage qui permet d'écrire un programme sous forme de mnémoniques (mot facile à retenir qui correspond à une instruction du microprocesseur) et qui les transforme en code machine. Il va de soi que RET est plus parlant que 11001001 !

VOTRE PREMIER PROGRAMME MACHINE

Mais où donc est implanté un programe en langage machine ? Dans la mémoire bien sûr ! Oui, mais où ? c'est une bonne question, et je vous remercie de me l'avoir posée ! La réponse est : n'importe où en RAM. L'interprète Basic, par exemple, se trouve entre les adresses &HC000 et &HFFFF. L'instruction RET de l'exemple précédent prend une case mémoire (octet), le microprocesseur peut en adresser 65536. Nous verrons pourquoi plus tard, je vois que vous brûlez d'impatience d'essayer le programme annoncé, alors le voici !

Tapez :

10 RETURN
GOSUB 10

Ce n'est pas un cours de Basic, me direz-vous ? D'accord ! Tapez donc :

POKE &8000,&C9
CALL &8000

Décevant ? Pas si je vous dis que vous venez de réaliser votre premier programme en langage machine (souvenez-vous un peu avec émotion du PRINT BONJOUR de vos débuts).

ATTACHEZ VOS CEINTURES

Ca y est ? Vous êtes fin prêt pour le décollage ? Si vous n'avez pas compris l'instruction RET, il est toujours temps de descendre. Sinon, attachez votre ceinture, l'hôtesse va vous parler du voyage.

Nous allons survoler les numérotations binaire et hexadécimale qu'il sera indispensable de bien connaître. Puis, après une escale dans la capitale de l'Amstrad (le microprocesseur), nous effectuerons un vol de repérage de la mémoire, de l'adresse 0 à l'adresse 65535. Ensuite, chaque instruction sera étudiée en détail et toujours avec un programme d'exemple. A chaque étape, ayez votre machine à portée de la main, ainsi que l'un des trois logiciels suivants :

Z80 EASY-AMSCODE (Amsoft) : parfaitement adapté si vous ne voulez que vous initier au langage machine et faire quelques bidouilles. Il propose une exécution pas-à-pas très détaillée.
DEVPAC ASSEMBLEUR (Amsoft) : si vous espérez écrire de longs et beaux programmes. Il s'agit d'un véritable assembleur et d'un débugger. Je me sers de celui-ci, et je m'en sors très bien.
DAMS (Micro Application) : dans le même esprit que le précédent. Doté de fonctions Trace très puissantes, écrit par un français (cocorico !).

Si vous avez les moyens, offrez-vous tous ces programmes ! Ils ont chacun leur application spécifique.

RECREATION

Ce petit paragraphe vous donnera, à la fin de chaque cours, l'adresse d'une routine intéressante, ou un mini-programme que vous pourrez essayer rapidement pour vous détendre.
Aujourd'hui, récréation n'intéressera que les propriétaires d'un 464, puisqu'il s'agit de créer un équivalent de l'instruction COPYCHR$ que connaissent les deux autres machines. Cette instruction lit un caractère affiché à l'écran, à la position du curseur.

Il s'agit d'une routine existant déjà en ROM et que l'on appelle à l'adresse &HBB60. Il suffit donc d'appeler la routine pour avoir dans l'accumulateur le code ASCII du caractère se trouvant sous le curseur. Notre petit programme va simplement récupérer ce caractère par l'intermédiaire d'une case mémoire.

Amusez-vous bien et à la prochaine !

10 FOR L=&8000 T0 &8006 ; Implantation
20 READ A: POKE L,A ; en mémoire
30 NEXT ; du langage machine
40 DATA &CD,&60,&BB,&32,&07,&80,&C9
50 CLS : PRINT "A" ; A en haut de l'écran
60 LOCATE 1,1
70 CALL &8000 ; appel de la routine
80 LOCATE 10,10
90 PRINT CHR$(PEEK(&8007)) ; Récriture du caractère

Hebdogiciel n°111 , Patrick DUBLANCHET

★ ANNÉES: 1985
★ AUTEUR: Patrick Dublanchet

Page précédente : La page pédagogique d'hebdogiciel 107: Les Outils Logiciels

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » La page pédagogique d'Hebdogiciel n°86
» Coding » La page pédagogique d'hebdogiciel 139: La Pile
» Coding » La page pédagogique d'hebdogiciel 116: Registres et adressage
» Coding » La page pédagogique d'hebdogiciel 082: Generalite sur les Routines
» Coding » La page pédagogique d'hebdogiciel 155: Adressage
» Coding » La page pédagogique d'hebdogiciel 119: Registres et Adressage
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 639 millisecondes et consultée 3422 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.