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

La page pédagogique d'hebdogiciel 119: Registres et AdressageCoding Hebdogiciel

Chose promise, chose due : nous allons entrer dans la cathédrale ! Voici le Z80 dans toute sa splendeur


Schéma 1

Attention, la visite va commencer !

ACCUMULATEUR (registre A):
C'est le registre le plus utilisé, il sert à tout : transferts de données, calculs arithmétiques et logiques. C'est aussi lui qui possède le plus d'instructions. Par exemple, si vous voulez transférer une valeur d'une case mémoire au registre B, vous devrez d'abord la charger dans l'accumulateur car H n'existe pas d'instruction pour la transférer directement dans le registre B.

DOUBLES REGISTRES ( B , C , D , E , H , L ) :
Ces six registres, quand ils sont utilisés seuls, se ressemblent comme des frères et ont la même utilité : ce sont des accumulateurs secondaires. Seulement, voila, si je les ai appelés doubles registres, c'est qu'il y a une raison ! Ils sont le plus souvent utilisés par paires : BC. DE et HL Dans ce cas. ils deviennent des registres 16 bits et servent à pointer une adresse ou même à exécuter certaines opérations sur 16 bits. Le double registre HL est alors le principal des trois, les instructions qui l'utilisent sont plus nombreuses et plus rapides. Sachez des à présent qu'il faut, chaque fois que c'est possible, réserver HL pour pointer la mémoire.

REGISTRE D'ÉTAT (F) :
Voici un registre unique qui a une utilité bien particulière. Il se nomme F, ce qui signifie Flags et en français Drapeaux. Il sert à renseigner sur les éventuels résultats de l'instruction qui vient d'être exécutée. Il est unique parce que c'est le seul à traiter ses bits de manière indépendante. Six d'entre eux sont appelés Indicateurs et renseignent, selon qu'ils sont à t ou a 0, sur l'étal du microprocesseur. Voici le rôle exact de chacun de ces indicateurs :

C Carry : C'est l'indicateur de retenue, très utilisé. Il sert principalement à savoir s'il y a une retenue après une instruction arithmétique. Dans les instructions de décalage, il permet de tester un bit et iI est mis a 0 par les instructions booléennes.

N Soustraction : un indicateur que vous pouvez oublier, car il est testé par le microprocesseur uniquement. Il est initialisé à l par toutes tes instructions de soustraction et A 0 par les instructions d'addition.

P/O Panté/Overflow : Il a plusieurs significations, selon le type d'opération exécuté . Pour les opérations arithmétiques, c'est un indicateur de dépassement de capacité (over-fiow). Pour tes Instructions d'entrées, logiques et de rotation, c'est un bit de partie : 1 pour parité paire et 0 pour impaire.

A/C Demi-retenue : Cet indicateur contient toute retenue du bit 3 vers le bit 4 résultant d'une instruction arithmétique.

Z Zéro : L'indicateur le plus utilisé avec Carry. et le plus facile à comprendre. Il est mis à 1 chaque fois qu'une opération arithmétique ou logique produit un résultat nul et à 0 dans tous les autres cas.

S Signe : cet indicateur acquiert la valeur du bit le plus significatif (souvenez-vous, le bit 7) du résultat de toute Instruction arithmétique ou logique.

BANQUE DE REGISTRES AUXILIAIRES :
Il s'agit là de la copie conforme de tous les registres que nous venons de visiter. Le programmeur a la possibilité de choisir entre la première banque et la banque secondaire, cela fonctionne un peu comme un échange standard. Deux instructions se chargent de réaliser cet échange, une qui s'occupe des registres A et F avec A' et F' et l'autre les registres B. C, D, E. H et L avec B', C' , D' , E'. H' et L'. La banque de registres auxiliaires est utilisée dans l'Amstrad par le système d'exploitation, ce qui veut dire qu'il est assez difficile de l'utiliser sans risquer de planter la machine.

POINTEUR DE PILE :
La pile est une idée géniale ! Nous en parlerons plus tard. Ce registre 16 bits contient l'adresse du haut de la pile. La seule chose à retenir, c'est que le bas de la pile est en haut et le haut en bas I Ne vous affolez pas, il suffit de le savoir une bonne fois pour toutes. Si, par exemple, vous déposez quelque chose sur la plie, la pile monte et le pointeur de pile se décrémente. Inversement si vous récupérez celle chose.

COMPTEUR ORDINAL :
Pointe sur la prochaine instruction. Ce registre ne peut être programmé directement, il sert au microprocesseur A savoir a quelle adresse se trouve la prochaine instruction à exécuter. Par exemple, quand, en basic, vous tapez CALL &8000. vous mettez la valeur &8000 dans le compteur ordinal et le microprocesseur exécutera l'instruction figurant à cette adresse.

LES REGISTRES D'INDEX (IX , IY) :
Ils permettent do traiter la notion d'indice. Nous verrons cela en détail plus tard. Sachez pour l'instant que ce sont deux registres 16 bits supplémentaires qui sont utilisés comme HL

INTERRUPTION ET RAFRAÎCHISSEMENT ( I , R ) :
Je ne dirai rien sur ces deux registres qui ne servent quasiment jamais au programmeur, et ce n'est pas le moment de s'embrouiller le cerveau avec ces deux-là !

RÉCAPITULONS

La visite est maintenant terminée. mais nous reviendrons souvent dans ce temple de votre ordinateur préféré t Vous savez maintenant comment est fait te Z80, ce qu'est un octet, un bit , une case mémoire. Mais que se passe-t-il quand le microprocesseur exécute une instruction ? Voilà ce que vous attendez de savoir avec impatience ! Ce qui se passe ? Vous le saurez... Tout de suite !!

EXÉCUTION

Prenons trois instructions sans nous inquiéter de leur sens, le principal étant de comprendre ce qui se passe dans le microprocesseur quand vous les faites exécuter. Un programme en langage machine est implanté dans la mémoire et commence à une adresse précise. Pour nos exemples, nous prendrons toujours l'adresse S 8000. Une instruction assembleur, une fois implantée dans la mémoire, peut prendre entre 1 et 4 octets; choisissons trois instructions à 1 octet :


Schéma 2

RÉCRÉATION

Voici aujourd'hui de quoi concurrencer la rubrique deux lignes, ça s'Intitule marteau piqueur.
OUT &BC00,8 :OUT &BD00,1

Pour arrêter le massacre, remplacez le 1 par 0.

RECTIFICATIF

Le mois dernier, deux erreurs se sont glissées (comme elles savent si bien le faire) dans le listing 3 , les INKEYS sont a remplacer par INKEY (ça vous l'aviez trouvé) et la ligne 90 est à remplacer par OUT &BD00,A.

Le mois prochain nous affronterons la mémoire d'éléphant de l'Amstrad

Hebdogiciel n°119 , Patrick Dublanchet

★ ANNÉES: 1985
★ AUTEUR: Patrick Dublanchet

Page précédente : La page pédagogique d'hebdogiciel 117 - Registres et Adressage

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

Lien(s):
» Coding » La page pédagogique d'hebdogiciel 084: Formation à l'assembleur - La Pile
» Coding » La page pédagogique d'hebdogiciel 116: Registres et adressage
» Coding » La page pédagogique d'hebdogiciel 127: La Memoire
» Coding » La page pédagogique d'hebdogiciel 155: Adressage
» Coding » La page pédagogique d'hebdogiciel 082: Generalite sur les Routines
» Coding » La page pédagogique d'hebdogiciel 123: La Mémoire
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
Page créée en 048 millisecondes et consultée 2280 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.