Tutorial 17
Les registres - Qu'est-ce que c'est ?

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.

Tutorial 18

    Cliquez pour revenir au menu du site... ou ici pour retourner au menu du tutorial.