CODING - LES INSTRUCTIONS SUPPLEMENTAIRES DU Z80

La table donnée ci-dessous contient les mnémoniques des instructions supplémentaires, et leurs codes machine. Les quatre codes de chargement de HX, HY, LX et LY peuvent être suivis par n'importe quelle valeur contenue dans un octet Ici. nous avons utilisé zéro en opérande mais cela n'était qu'à titre d'exemple et c'était plus facile à faire comprendre à l'assembleur. Il faut bien sûr dire à quoi correspondent ces registres aux noms encore plus étranges (de jambon) qu'à l'habitude. HX et LX sont au registre d'index IX ce que H et L sont au double registre HL. HX contient le poids fort de IX et LX en contient le poids faible. Il en va bien sûr de même pour HY et LY envers IY Tous ces codes machine étendent grandement le jeu d'instruction du mode 8 bits de notre bon vieux Z80. Toutes les opérations faites sur ces nouveaux registres ont strictement les mêmes incidences que si elles étaient utilisées avec les registres conventionnels. L'opérateur SLL reg est simplement une instruction de décalage supplémentaire ( Shift left logical ) ou encore décalage logique à gauche. Il compléments à ravir le SRL mais il agit dans l'autre sens. En d'autre termes, il multiplie l'opérande par deux et y ajoute 1. Soit encore un décalage à gauche avec positionnement du bit zéro à un. Pas mal ! Mais, me direz-vous, comment utiliser ces nouveaux codes si mon assembleur ne les comprend pas  ?
C'est très simple : si nous vous avons fourni les codes, c'est pour que vous les introduisiez dans vos sources avec par exemple


LD   A,(HL)
DEFB    #CB,#37       ;  SLL A
….

Vous n'y comprendrez rien, mais ce qui compte avant tout, c est que le microprocesseur comprenne, non ? Alors, allons-y gaiement et utilisons à fond ce que papy Zilog nous a laissé. Bon courage !
 
 

DD67      LD        HX,A
DD68      LD        HX,B
DD61      LD        HX,C
DD62      LD        HX,D
DB63      LB        HX,E

DD6F      LE        LX,A
DD68      LD        LX,B
DD69      LD        LX,C
DD6A      LD        LX,B
DB6B      LD        LX,E

FD67      LB        HY,A
FD60      LB        HY,B
FB61      LD        HY,C
FD62      LD        HY,D
FD63      LD        HY,E

FB6F      LD        LY,A
FD68      LD        LY,B
FD69      LD        LY,C
FD6A      LB        LY,B
FD6B      LD        LY,E

FD7C      LD        A,HY
FD44      LD        B,HY
FD4C      LD        C,HY
FD54      LD        D,HY

FD5C      LD        E,HY
FD7D      LD        A,LY
FD45      LD        B,LY
FD4D      LD        C,LY
FD55      LD        D,LY
FD5D      LD        E,LY

DD7C      LD        A,HX
DD44      LD        B,HX
DD4C      LD        C,HX
DD54      LD        D,HX
DD5C      LD        E,HX

DD7D      LD        A,LX
DD45      LD        B,LX
DD4D      LD        C,LX
DD55      LD        D,LX
DD5D      LD        E,LX

DD2600    LD        HX,0
DD2E00    LD        LX,0
FD2600    LD        HY,0
FD2E00    LD        LY,0

FD24      INC       HY
FD2C      INC       LY
DD24      INC       HX
DD2C      INC       LX

FD25     DEC HY
FD2D     DEC LY
DD25     DEC HX
DD2D     DEC LX

DD8C     ABC A,HX
DD8D     ADC A,LX
FD8C     ADC A,HY
FD8D     ADC A,LY

DD9C     SBC A,HX
DD9D     SBC A,LX
FD9C     SBC A,HY
FD9D     SBC A.LY

FD84     ADD A,HY
FD85     ADD A,LY
DD84     ADD A,HX
DD85     ADD A,LX

FD94     SUB HY
FD95     SUB LY
DD94     SUB HX
DD95     SUB LX

FDBC     CP HY
FDBD     CP LY
DDBC     CP HX
DDBD     CP LX

FDA4     AND HY
FDA5     AND LY
DDA4     AND HX
DDA5     AND LX

FDB4     OR HY
FDB5     OR LY
DDB4     OR HX
DDB5     OR LX

FDAC     XOR HY
FDAD     XOR LY
DDAC     XOR HX
DDAD     XOR LX

CB37     SLL A
CB38     SLL B
CB31     SLL C
CB32     SLL D
CB33     SLL E
CB34     SLL H
CB35     SLL L
CB36     SLL (HL)

» Download la doc

A100% n°3 p38-39 - http://cpcrulez.fr
 

A voir aussi sur CPCrulez , les sujets suivants peuvent vous intéresser...

» Coding - Crossdev - CCZ80
» Coding - Crossdev - Mycpctoolkit
» Coding - Crossdev - PhrozenC
» Coding - Crossdev - Cpcrslib

» Laisser un commentaire ou  en discuter sur le forum ...