CODINGLA BIBLE DU CPC 6128

La bible du CPC 6128 : 1.02.02 La structure des registres du Z80
Comme nous l'avons indiqué au début, le Z80 a été construit de telle façon que les programmes du 8080 puissent être repris sans problème. Mais le Z80 dispose d'un nombre de registres nettement supérieur.

Mais qu'est-ce donc qu'un registre?

Un registre n'est rien d'autre qu'une mémoire de lecture/écriture sur le chip du processeur. Chaque processeur doit disposer d'un minimum de registres. Dans ces cases de mémoire, les données peuvent être placées, ainsi que les résultats d'instructions arithmétiques et logiques. D'autres registres ont des fonctions spéciales, telles que la gestion de la pile, ou sont utilisés comme compteur de programme.

Comme les opérations telles qu'un transfert de données entre deux registres ou l'addition des contenus de deux registres ne peuvent se faire à travers le bus de données, de telles opérations peuvent être exécutées beaucoup plus rapidement que lorsque les valeurs nécessaires doivent être recherchées dans des cases de mémoire externes.

On peut donc dire en règle générale que les processeurs disposant d'une mémoire interne plus importante sont supérieurs aux processeurs disposant de peu de registres pour le traitement des mêmes programmes car le transfert de données est toujours plus rapide à l'intérieur du processeur qu'entre le processeur et les cases de mémoire externes.

Le Z80 dispose de 22 registres au total, 18 registres de 8 bits et 4 registres de 16 bits. La figure 1.2.2.1 montre la disposition de ces registres.


1.2.2.1 Jeu de registres Z80

Dans cette figure, certains registres sont marqués par un cadre plus épais. Ces registres existent également sur le 8080.

Vous voyez également que la plupart des registres 8 bits
apparaissent en double exemplaire. Il s'agit des registres A, F, B, C, D, E, H et L. Le programmeur peut choisir entre deux jeux de
registres.

Nous ne parlerons à l'avenir que d'un seul jeu de registres, d'autant que le programmeur du CPC ne dispose en fait, à moins de recourir à certaines astuces particulières, que d'un seul jeu de registres. Le jeu de registres alternatif est utilisé par le système d'exploitation pour la gestion des interruptions. Mais notez bien que toutes les tâches d'un jeu de registres peuvent également être prises en charge par le jeu de registres alternatif, si celui-ci n'est pas employé pour des opérations spécifiques.

Les registres B à L sont les registres 8 bits normalement disponibles, alors que les registres A et F répondent à des lâches particulières.

Le registre A est généralement qualifié d'accumulateur. C'est dans l'accumulateur qu'on obtient le résultat de toutes les opérations arithmétiques et logiques sur 8 bits. Pour ces opérations, un opérande doit d'autre part être placé dans l'accumulateur. Pour additionner par exemple deux octets, il faut placer un opérande dans l'accumulateur alors que le second opérande peut être placé dans un autre registre du processeur ou dans une case de la mémoire externe. Après l'addition, le résultat se trouve dans l'accumulateur.
Comme, lors de telles opérations, le résultat peut être supérieur à la valeur maximale qui peut être exprimée avec 8 bits (255+255=510), un bit supplémentaire est nécessaire pour représenter le résultat correctement. C'est le registre F qui remplit cette fonction. Le registre F, généralement qualifié de registre flag est divisé en ses différents bits. Un de ces bits a entre autre pour fonction de conserver une éventuelle retenue (carry en anglais) résultant de telles additions. Les autres bits indiquent si le résultat d'opérations de calcul ou de comparaisons est nul, etc..

Les registres B à L ne peuvent toutefois pas uniquement être appelés séparément. B et C, D et E ainsi que H et L peuvent être regroupés en registres 16 bits. Ces registres 16 bits reçoivent alors naturellement les noms BC, DE et HL. Les registres doubles conviennent parfaitement à l'adressage de tableaux ainsi qu'au transfert et à la recherche de blocs de données.

Le registre double HL a une signification particulière. Comme le Z80 dispose d'instructions d'addition et de soustraction sur 16 bits, le registre HL fait office, pour de telles instructions, d'accumulateur 16 bits.

Les registres PC, SP, IX et IY ne travaillent qu'avec des valeurs 16 bits (remarque: les spécialistes savent qu'il est également possible de manipuler les registres d'index octet par octet mais nous ne considérerons IX et IY que comme de purs registres 16 bits).
Le registre PC est le compteur de programme (Programm Counter). Le contenu du PC est placé sur le bus d'adresse comme adresse pour les mémoires externes. Avec chaque instruction, le PC est incrémenté (augmenté de 1) automatiquement. Pour les instructions sur plusieurs octets, le PC est automatiquement augmenté de la valeur correspondant à ce nombre d'octets. Si des sauts doivent se produire à l'intérieur d'un programme, la nouvelle adresse du programme est automatiquement chargée dans le PC et le processeur continue l'exécution à partir de cette adresse.

Le registre SP est le pointeur de pile (Stack Pointer). La pile est utilisée lorsque des sous-programmes sont appelés. Dans ce cas en effet, l'adresse de retour est automatiquement placée sur la pile puis rechargée dans le PC après exécution du sous-programme.

Les deux registres 16 bits IX et IY permettent, grâce à des instructions spéciales, un travail particulièrement efficace avec les tableaux.

Il ne reste plus que les registres I et R. Le registre I ou registre d'interruption (Interrupt Register) est utilisé en liaison avec le mode d'interruption spécial IM3. Dans ce mode d'interruption, l'élément produisant l'interruption doit fournir, à la demande du processeur, une valeur 8 bits. Cette valeur comme low byte et le contenu du registre I comme high byte constituent l'adresse de la routine d'interruption.

Le registre R ou Refresh Register est utilisé en liaison avec le Refresh que le Z80 exécute automatiquement. Chaque fois qu'une instruction a été retirée, les sept bits inférieurs de ce registre sont automatiquement incrémentés. Le huitième bit reste toujours à 1 ou à 0, suivant sa programmation.

Les registres I et R ne sont pas utilisés sur le CPC. Cependant, comme la valeur du registre R se modifie sans cesse, celui-ci peut être utilisé comme générateur de hasard.

★ ANNÉE: ???

Page précédente : La bible du CPC 6128 : 1.02.01 Les connexions du Z80
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.732-desktop/c
Page créée en 551 millisecondes et consultée 1642 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.