Survol
Beaucoup de gens m'ont envoyé un email en me disant qu'ils ne sont pas très
familiers des registres. Si vous êtes nouveaux dans le domaine de la
programmation ou celui des ordinateurs en général, il y a des chances que vous
ne soyez pas familiers avec le concept de registres non plus. Dans ce cas, les
quelques tutoriaux qui vont suivre seront dédiés aux registres, leurs
utilisations, et leurs fonctions spécifiques.
Que sont les registres?
Vous avez probablement déjà appris au cours de votre
expérience passée que la plupart des données sont stockées dans la mémoire
utilisateur (RAM) de la calculatrice. C'est vrai, mais mettons que vous vouliez
manipuler (ajouter/soustraire/multiplier/diviser/etc.) un nombre que vous avez
stocké dans la mémoire utilisateur. C'est possible, mais c'est difficile, et
l'accès à la mémoire utilisateur est relativement lent. C'est pourquoi les
informaticiens ont décidé de créer des zones mémoire d'accès rapide dans le
microprocesseur lui-même juste pour stocker des données et des variables. Ils
ont baptisé ces zones de mémoire "Registres".
Il y a plusieurs registres pour le Z80. Non, vous ne pouvez pas prendre celui que voua aimez le plus à un moment, même si des fois vous pouvez. Les registres se nomment - a, b, c, d, e, h, l. Chaque registre (ceux dont le nom ne comporte qu'une lettre) fait 8 bits, ce qui signifie que vous pouvez enregistrer une information de 1 octet dedans. Par exemple, vous pouvez enregistrer des nombres décimaux de 0 à 255 dans n'importe lequel d'entre eux. Le registre "a" est particulier; il est aussi appelé accumulateur. Lorsque vous utilisez la commande cp, il vérifie ce que contient ce registre. Le registre "a " est utilisé dans de nombreuses commandes.
Vous avez aussi déjà probablement vu af, hl, de, bc à la place de a, b, c, d, e, h, I. Ce sont aussi des registres. Si vous voulez garder en mémoire des nombres plus grands que 255 (Décimaux de 0-65536), vous utiliserez probablement ces registres car ils sont sur 16 bits. Ils peuvent stocker 2 octets de données.
Voici une brève description des registres:
A,B,C,D,E Registres 8 bits AF Registre 16 bits contenant A et16-bit register containing A and flags BC Registre 16 bits contenant B et C DE Registre 16 bits contenant D et E HL Registre 16 bits utilisé pour l'adressage (mémoire) F 8-bit Flag register I 8-bit Interrupt Page address register IX,IY 16-bit index registers PC 16-bit Program Counter register R 8-bit Memory Refresh register SP 16-bit Stack Pointer register
Syntaxe
pour les Valeurs
Mettons que vous ayez voulu rentrer la valeur 4 dans le
registre "a", la syntaxe pour le faire aurait été:
ld a,14
La commande ld veut dire "load" ("charger", en anglais). Vous "chargez" la valeur 4 dans le registre "a". La même syntaxe est utilisée pour charger des valeurs dans n'importe quel autre registre.
Maintenant mettons que vous vouliez charger 0235 dans le registre "hl". Vous le "penserez" comme ça - ld hl,0235. Ce "0235" peut être une valeur décimale, hexadécimale, ou binaire(peut-être pas). Lors de l'assemblage du programme, TASM doit savoir de quel genre de valeur ce nombre est. Donc vous devrez mettre un h s'il s'agit d'une valeur hexadécimale, d si c'est une décimale, ou b si c'est une binaire à la fin de la valeur. Donc si par exemple "0235" soit un hexadécimal, la syntaxe serait:
ld hl,0235h
Remarquez le h à la fin. Ou, au lieu de mettre une lettre derrière la valeur, vous pouvez placer un symbole devant pour indiquer à TASM le type de la valeur. Un % indique une valeur binaire, et $ une valeur hexadécimale. Si vous utilisez des symboles, la syntaxe pour de l'hexadécimal ressemblerait à ça:
ld hl,$0235
Et pour du binaire:
ld hl,%0100101
Il faut remarquer que vous ne mettez pas de lettre si vous utilisez les symboles. En utilisant des décimaux (nombres entiers), aucun symbole ou lettre n'est nécessaire avant ou après la valeur, car TASM considèrera que si aucun format n'est spécifié, la valeur est décimale.
Cliquez pour revenir au menu du site... ou ici pour retourner au menu du tutorial.