Super instructions
Le Z80 est un processeur 8 bits, il n'est par exemple pas capable de faire des affectations 16 bits ou des décalages 16 bits (hors ADD HL,HL). Les instructions de rotations ne font pas exception. Voici donc une liste de tous les décalages possibles, appliqués à chacun des registres généraux 16 bits.
Instructions fictives
RST Z,#38 ; un RST conditionnel!
RST NZ,#38
RST C,#38
RST NC,#38
|
correspondant en réalité à
JR Z,$+1 ; l'encodage de $-1 correspond à #FF, qui
JR NZ,$+1 ; est l'opcode du RST #38. Ainsi un saut
JR C,$+1 ; conditionnel réussi va sauter
JR NC,$+1 ; sur l'adresse relative et faire un RST #38
|
Instructions fictives
LD BC,BC ; personne ne fait ça on est d'accord?
LD BC,DE
LD BC,HL
LD DE,BC
LD DE,DE
LD DE,HL
LD HL,BC
LD HL,DE
LD HL,HL
|
correspondant en réalité à
LD B,B : LD C,C ; oui, ça ne sert à RIEN, on est d'accord ^_^
LD B,D : LD C,E ; BC = DE
LD B,H : LD C,L ; BC = HL
LD D,B : LD E,C ; DE = BC
LD D,D : LD E,E ; DE = DE
LD D,H : LD E,L ; DE = HL
LD H,B : LD L,C ; HL = BC
LD H,D : LD L,E ; HL = DE
LD H,H : LD L,L ; HL = HL
|
Instructions fictives
LD BC,(IX+n) ; lecture 16 bits d'un registre à l'adresse indirecte
LD DE,(IX+n)
LD HL,(IX+n)
LD (IX+n),BC
LD (IX+n),DE
LD (IX+n),HL
LD BC,(IY+n) ; version avec IY
LD DE,(IY+n)
LD HL,(IY+n)
LD (IY+n),BC
LD (IY+n),DE
LD (IY+n),HL
|
correspondant en réalité à
LD B,(IX+n+1) : LD C,(IX+n)
LD D,(IX+n+1) : LD E,(IX+n)
LD H,(IX+n+1) : LD L,(IX+n)
LD (IX+n+1),B : LD (IX+n),C
LD (IX+n+1),D : LD (IX+n),E
LD (IX+n+1),H : LD (IX+n),L
LD B,(IY+n+1) : LD C,(IY+n) ; version avec IY
LD D,(IY+n+1) : LD E,(IY+n)
LD H,(IY+n+1) : LD L,(IY+n)
LD (IY+n+1),B : LD (IY+n),C
LD (IY+n+1),D : LD (IY+n),E
LD (IY+n+1),H : LD (IY+n),L
|
Instruction fictive
correspondant en réalité à
LD HL,0 : ADD HL,SP ; Attention, les flags sont modifiés!
|
Instructions fictives
SRL BC
SRL DE
SRL HL
;------------------------------------------
SRA BC
SRA DE
SRA HL
;------------------------------------------
SLL BC
SLL DE
SLL HL
;------------------------------------------
SLA BC
SLA DE
SLA HL
;------------------------------------------
RR BC
RR DE
RR HL
;------------------------------------------
RL BC
RL DE
RL HL
;------------------------------------------
RRC BC
RRC DE
RRC HL
;------------------------------------------
RLC BC
RLC DE
RLC HL
;------------------------------------------
SRL8 BC
SRL8 DE
SRL8 HL
SRL8 IX
SRL8 IY
|
correspondant en réalité à
SRL B : RR C
SRL D : RR E
SRL H : RR L
;------------------------------------------
SRA B : RR C
SRA D : RR E
SRA H : RR L
;------------------------------------------
SLL B : RL C
SLL D : RL E
SLL H : RL L
;------------------------------------------
SLA B : RL C
SLA D : RL E
SLA H : RL L
;------------------------------------------
RR B
RR D
RR H
;------------------------------------------
RL B : RL C
RL D : RL E
RL H : RL L
;------------------------------------------
SRL B : RR C : RL B : RRC B
SRL D : RR E : RL D : RRC D
SRL H : RR L : RL H : RRC H
;------------------------------------------
SLA B : RL C : RR B : RLC B
SLA D : RL E : RR D : RLC D
SLA H : RL L : RR H : RLC H
;------------------------------------------
LD C,B : LD B,0
LD E,D : LD D,0
LD L,H : LD H,0
LD XL,XH : LD XH,0
LD YL,YH : LD YH,0
|
CPCrulez[Content Management System] v8.732-desktop/c Page créée en 289 millisecondes et consultée 6 foisL'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. |
|