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

La page pédagogique d'hebdogiciel 127: La MemoireCoding Hebdogiciel

MÉMOIRE SUITE ET FIN

Le mois dernier, notre leçon s'est terminée par un point d'interrogation et, juste avant lui, une question en supens, restée sans réponse jusqu'à aujourd'hui. Cette question Comment les couleurs sont-elles codées dans un octet écran ? je m'en vais la dé-pendre à l'instant même et y répondre sans plus attendre, le supense devenant beaucoup trop insupportable. Commençons par le mode le plus facile, le mode 2 :

MODE 2 : 8 pixels 2 couleurs

Chaque bit code 1 pixel. Selon qu'il est à zéro ou à un, le point sera d'encre 0 ou d'encre 1.

MODE 1 : 4 pixels 4 couleur

2 bits codent 1 pixel de la manière suivante

4 bits codent 1 pixel de la manière suivante :

RÉCAPITULONS

Vous savez compter en binaire, en hexadécimal, ce qu'est un octet, un microprocesseur, vous connaissez tous les registres du Z80, le contenu de la mémoire des CPC Amstrad, vous savez coder un octet écran. Il ne vous reste plus qu'à programmer ! Alors, prenez votre assembleur préféré (les listings de ce cours seront faits avec Hisoft Dev-pac, mais vous pouvez très bien travailler avec DAMS de Micro Application, notre but n'étant pas de vous apprendre à utiliser l'un ou l'autre, mais de vous familiariser avec les instructions Z80). Maintenant que vous avez chargé votre assembleur chouchou, voyons de quoi se compose un programme assembleur. Voyons un peu ce que c'est que tout ça. Les champs : adresse et code objet sont générés par l'assembleur, ce qui veut dire que vous n'avez pas à vous en occuper. Voyons ceux que vous devez rentrer :

LE CHAMP LABEL

Dans ce champ, qui commence juste après le numéro de ligne, vous pouvez mettre un mot (qui doit obligatoirement commencer par un caractère alphabétique) pour nommer la ligne et pouvoir demander par la suite à l'assembleur de s'y référer. Un peu comme si, en basic, vous appeliez la ligne 100 Amélie et que vous ordonniez GOTO Amélie. Pratique non ? Ce nom doit être suivi du signe : .

LE CHAMP OPÉRATION

C'est dans ce champ que vous mettrez l'instruction ou la directive assembleur. Il est obligatoire, sauf dans le cas d'une ligne uniquement commentaire commençant par le signe ; (lignes de 30 à 60 dans notre exemple). Les directives assembleur, contrairement aux instructions, ne génèrent pas de code objet. Elles servent à indiquer une adresse, un début, une valeur. Exemple : ORG (ligne 10), qui signifie ORIGINE, ou encore c'est à cette adresse que doit être assemblé le programme qui va suivre.

LE CHAMP OPÉRANDE

Ce champ est intimement lié au précédent, dans le cas d'une instruction. Il peut avoir un argument, exemple : C (ligne 150), ou deux arguments, très souvent séprés par une virgule. Exemple : A,B (ligne 140). Dans ce dernier cas, le premier argument représente toujours une destination et le second une source. Dans notre exemple de la ligne 140, c'est le contenu du registre B qui va dans le registre A, et non le contraire. Chaque argument peut être soit :

1 un nom de registre (LD A,B)
2 une valeur (LD A,255)
3 une adresse (LD HL, #C000)
4 un pointeur adresse (LD (HL),A)
5 un label (JR NZ,BOUCLE)

LE CHAMP COMMENTAIRE

Ça, c'est le champ libre ! Vous commencez par un petit point-virgule, puis vous écrivez ce que bon vous semble. Vous pouvez même faire un programme avec uniquement des commentaires, vous aurez au moins la certitude de ne pas avoir fait d'erreur.

COMMENT ÇA MARCHE ?

C'est jour de fête ! Vous allez enfin écrire votre premier programme en langage machine ! Puisque vous avez chargé votre assembleur, commencez par taper le programme (il est bien entendu que vous n'entrerez ni le champ adresse, ni le champ code objet, ceux-ci sont générés par l'assembleur au moment de l'assemblage). C'est fait ? Bien, maintenant faites-le assembler (si vous ne savez comment faire, consultez le manuel de votre programme assembleur. Avec Devpac, il faut taper A puis RETURN trois fois). Maintenant votre petit chef-d'œuvre est implanté en mémoire à partir de l'adresse #8000. Vous pouvez le sauvegarder sous le nom de OEUVRE (avec Devpac O,,OEUVRE). Revenez au basic, puis tapez :

10 MEMORY &7FFF
20 LOAD"OEUVRE",&8000
30 CALL &8000
RUN

Si votre écran est devenu tout rouge, c'est que vous pouvez l'être également... de fierté ! Si rien ne marche, cherchez l'erreur, ce sera l'occasion de savoir exactement ce qu'est programmer en assembleur :

CHERCHER ! CHERCHER ! CHERCHER !

RÉCRÉATION

Soyons un peu sérieux, pour une fois. Voici une adresse du système d'exploitation qui permet de changer l'emplacement de l'écran :

10 ORG #8000
20 ;
30 EC4000 : LD A, #40
40 CALL #BC08
50 RET
60 ;
70 ECC000 LD A,#C0
80 CALL #BC08
90 RET

Hebdogiciel n°127, Patrick Dublanchet

★ ANNÉE: 1985
★ AUTEUR: Patrick Dublanchet

Page précédente : La page pédagogique d'hebdogiciel 123: La Mémoire

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

Lien(s):
» Coding » La page pédagogique d'hebdogiciel 131: Les Instruction de Transfert
» Coding » La page pédagogique d'hebdogiciel 115 : Formation à l'assembleur - Logique ou Arithmetiques
» Coding » La page pédagogique d'hebdogiciel 085
» Coding » La page pédagogique d'hebdogiciel 084: Formation à l'assembleur - La Pile
» Coding » La page pédagogique d'hebdogiciel 127: Registre F
» Coding » La page pédagogique d'hebdogiciel 087: Formation à l'assembleur
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 288 millisecondes et consultée 3315 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.