CpcAlive est un
environnement
de programmation
compatible
Amstrad CPC
pour création
d'animations
 graphiques.






256 couleurs avec l'émulateur CpcAlive
Programmation
Z80 en ligne

SmallAsm est un assembleur Z80
pour Dos

Les mots clés du basic Cpc

Les messages d'erreur du basic Cpc

La mémoire

La gestion des disquettes

La palette du cpc 6128 par défaut

Les couleurs affectées aux
crayons du cpc 6128 par défaut

Installateur CpcAlive pour
Windows
& DosBox


Documentation CpcAlive



English     


Dernières revues (version Dosbox)
V1.16 - 16/12/2014 - correction assembleur Z80
V1.15 - 30/11/2014 - corrections
V1.14 - 20/11/2014 - affiche les fichiers sources dans le déboggeur Z80
V1.13 - 20/9/2014 - amélioration de la commande basic TRON (débogueur BASIC) + corrections



Z80 opcodes et programmation

       
Le processeur Z80 est constitué de 8 registres principaux de 8 bits chacun nommés A, B, C, D, E, F, H, et L. Ces registres peuvent êtres couplés pour les opérations nécessitant 16 bits de la manière suivante: le registre A est couplé avec le registre F, le registre B avec le registre C, le registre D avec le registre E, le registre H avec le registre L constituants ainsi 4 paires de registres nommés AF, BC, DE et HL facilitant ainsi les manipulations de quantités sur 16 bits.
Le Z80 utilise aussi deux registres 16 bits d'index appelés IX (Index X) et IY (Index Y) normalement non séparables en registres 8 bits (sauf avec des opcodes non standards), ainsi qu'un registre servant à gérer la pile de stockage des adresses de retour de sous-programmes appelé SP (Stack Pointeur).
Un deuxième jeu de registres appelés A', B', C', D', E', F', H', et L' est disponible et peut être échangé avec le premier jeu grâce aux instructions EX AF,AF' et EXX.

Le registre A appelé accumulateur ou encore registre de calcul est utilisé dans les principales opérations sur 8 bits.
Les bits du registre F (Flags) sont utilisés comme indicateurs sur le résultat des opérations effectuées.
Le registre B ou la paire de registres BC (Byte Counter) sont souvent utilisés comme compteurs, par exemple pour les boucles.
La paire de registres DE est souvent employée pour le stockage intermédiaire de données.
La paire de registres HL (High/Low) est souvent employée pour y stocker des adresses mémoire.

Autres registres:
PC: compteur interne indiquant au microprocesseur l'adresse de l'opcode à exécuter.
R: registre de rafraîchissement mémoire (registre souvent utilisé pour le calcul de valeurs pseudo-aléatoires).
I: registre d'interruption utilisé dans le mode d'interruption IM 2.

Z80 Map


ADC A,S , ADC HL,RR , ADD A,(HL) , ADD A,(IX+d) , ADD A,(IY+d) , ADD A,N , ADD A,R
ADD HL,RR , ADD IX,RR , ADD IY,RR , AND S

 BIT b,(HL) , BIT b,(IX+d) , BIT b,(IY+d) , BIT b,R

CALL cond NN , CALL NN , CCF , CP S , CPD , CPDR , CPI , CPIR , CPL

DAA , DEC M , DEC RR , DEC IX , DEC IY , DI , DJNZ e

EI , EX AF,AF' , EX DE,HL , EX (SP),HL , EX (SP),IY , EXX

HALT

IM 0 , IM 1 , IM 2 , IN R,(C) , INC M , INC RR , INC IX , INC IY , IND , INDR , INI , INIR

JP cond NN , JP NN , JP (HL) , JP (IX) , JP (IY) , JR cond e , JR e

LD RR,(NN) , LD RR,NN , LD R,N , LD R,R' , LD (BC),A , LD (HL),N , LD (HL),R , LD R,(IX+d) , LD_R,(IY+d) , LD (IX+d),N

LD (IY+d),N , LD (IX+d),R , LD (IY+d),R , LD (NN),A , LD (NN),RR , LD (NN),IX , LD (NN),IY , LD A,(BC)

LD A,(DE) , LD A,I , LD I,A , LD A,R , LD HL,(NN) , LD IX,NN , LD IX,(NN) , LD IY,NN , LD IY,(NN) , LD_R,(HL)

LD R,A , LD SP,HL , LD SP,IX , LD SP,IY , LDD , LDDR , LDI , LDIR

NEG , NOP

OR S , OTDR , OTIR , OUT (C),R , OUT (N),A , OUTD , OUTI

POP RR , POP IX , POP IY , PUSH RR , PUSH IX , PUSH IY

RES b,S , RET , RET cond , RETI , RETN , RL S , RLA , RLC S , RLCA , RLD , RR S , RRA , RRC S , RRCA , RRD , RST N

SBC A,S , SBC HL,RR , SCF , SET b,S , SLA S , SRA S , SRL S , SUB A,S
XOR S


ADC A,S Additionner le registre A et l'opérande spécifié S avec l'indicateur de report C
S peut être:
- un des registres A,B,C,D,E,H ou L
- une valeur immédiate N -> ex: ADC A,9
- une adresse mémoire adressée par le registre HL -> ex: ADC A,(HL)
- une adresse mémoire adressée par le registre IX+d -> ex: ADC A,(IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: ADC A,(IY+4)
Indicateurs:
S Z - H - P/V N C
0




ADC HL,RR Additionner le registre double HL et le registre double RR avec l'indicateur de report C
RR peut être les registres BC, DE, HL ou SP.
Indicateurs:
S Z - H - P/V N C
? 0
H est positionné s'il y a report du bit 11.



ADD A,(HL) Additionner le registre A et l'emplacement mémoire adressé par le registre double HL
Indicateurs:
S Z - H - P/V N C
0




ADD A,(IX+d) Additionner le registre A et l'emplacement mémoire d'adresse indexée (IX+d)
Indicateurs:
S Z - H - P/V N C
0




ADD A,(IY+d) Additionner le registre A et l'emplacement mémoire d'adresse indexée (IY+d)
Indicateurs:
S Z - H - P/V N C
0




ADD A,N Additionner le registre A et la valeur immédiate N
Indicateurs:
S Z - H - P/V N C
0




ADD A,R Additionner le registre A et le registre R
R peut être les registres A,B,C,D,E,H,L
Indicateurs:
S Z - H - P/V N C
0




ADD HL,RR Additionner le registre double HL et le registre double RR
RR peut être les registres BC, DE, HL ou SP.
Indicateurs:
S Z - H - P/V N C


?
0
C est positionné par le report du bit 15, effacé sinon.
H est positionné s'il y a report du bit 11.




ADD IX,RR Additionner le registre double IX et le registre double RR
RR peut être les registres BC, DE, IX ou SP.
Indicateurs:
S Z - H - P/V N C


?
0
C est positionné par le report du bit 15, effacé sinon.
H est positionné s'il y a report du bit 11.




ADD IY,RR Additionner le registre double IY et le registre double RR
RR peut être les registres BC, DE, IY ou SP.
Indicateurs:
S Z - H - P/V N C


?
0
C est positionné par le report du bit 15, effacé sinon.
H est positionné s'il y a report du bit 11.



AND S Effectue un ET logique entre le registre A et l'opérande S
S peut être:
- un des registres A,B,C,D,E,H ou L
- une valeur immédiate N -> ex: AND 9
- une adresse mémoire adressée par le registre HL -> ex: AND (HL)
- une adresse mémoire adressée par le registre IX+d -> ex: AND (IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: AND (IY+4)
Indicateurs:
S Z - H - P/V N C
1 0 0




BIT b,(HL) Teste le bit b de l'emplacement mémoire adressé par le registre double HL
Indicateurs:
S Z - H - P/V N C
? 1 ? 0




BIT b,(IX+d) Teste le bit b de l'emplacement mémoire d'adresse indexée (IX+d)
Indicateurs:
S Z - H - P/V N C
? 1 ? 0




BIT b,(IY+d) Teste le bit b de l'emplacement mémoire d'adresse indexée (IY+d)
Indicateurs:
S Z - H - P/V N C
? 1 ? 0




BIT b,R Teste le bit b du registre R
R peut être les registres A,B,C,D,E,H,L
Indicateurs:
S Z - H - P/V N C
? 1 ? 0




CALL cond,NN Appel conditionnel de l'adresse mémoire NN
cond peut être:
NZ: indicateur Z=0
Z: indicateur Z=1
NC: indicateur C=0
C: indicateur C=1
PO: indicateur P/V=0
PE: indicateur P/V=1
P: indicateur S=0
M: indicateur S=1
Indicateurs: aucun effet
S Z - H - P/V N C




CALL NN Appel de l'adresse mémoire NN
Indicateurs: aucun effet
S Z - H - P/V N C




CCF Complémentation de l'indicateur de report C
Indicateurs:
S Z - H - P/V N C
? 0




CP S Effectue une comparaison entre l'opérande S et le registre A
L'opérande S est soustrait du registre A et le résultat n'est pas conservé.
S peut être:
- un des registres A,B,C,D,E,H ou L
- une valeur immédiate N -> ex: CP 9
- une adresse mémoire adressée par le registre HL -> ex: CP (HL)
- une adresse mémoire adressée par le registre IX+d -> ex: CP (IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: CP (IY+4)
Indicateurs:
S Z - H - P/V N C
1




CPD  Comparaison avec décrémentation
Le contenu de l'emplacement mémoire adressé par le registre double HL est soustrait du contenu du registre A et le résultat n'est pas conservé. Ensuite chacun des deux registres doubles HL et BC est décrémenté.
Indicateurs:
S Z - H - P/V N C
X X 1
L'indicateur Z est positionné si A=(HL)
L'indicateur P/V est effacé si BC=0 après l'exécution; positionné sinon.




CPDR Comparaison par bloc avec décrémentation
Le contenu de l'emplacement mémoire adressé par le registre double HL est soustrait du contenu du registre A et le résultat n'est pas conservé. Ensuite chacun des deux registres doubles HL et BC est décrémenté. L'instruction est réexécutée tant que le registre double BC est non nul et que le registre A est différant du contenu de l'emplacement mémoire adressé par le registre double HL.
Indicateurs:
S Z - H - P/V N C
X X 1
L'indicateur Z est positionné si A=(HL)
L'indicateur P/V est effacé si BC=0 après l'exécution; positionné sinon.




CPI Comparaison avec incrémentation
Le contenu de l'emplacement mémoire adressé par le registre double HL est soustrait du contenu du registre A et le résultat n'est pas conservé. Ensuite le registre double HL est incrémenté et le registre double BC est décrémenté.
Indicateurs:
S Z - H - P/V N C
X X 1
L'indicateur Z est positionné si A=(HL)
L'indicateur P/V est effacé si BC=0 après l'exécution; positionné sinon.




CPIR Comparaison par bloc avec incrémentation
Le contenu de l'emplacement mémoire adressé par le registre double HL est soustrait du contenu du registre A et le résultat n'est pas conservé. Ensuite chacun des deux registres doubles HL et BC est décrémenté. L'instruction est réexécutée tant que le registre double BC est non nul et le registre A est différant de l'emplacement mémoire adressé par le registre double HL. L'instruction est réexécutée tant que le registre double BC est non nul et que le registre A est différant du contenu de l'emplacement mémoire adressé par le registre double HL.
Indicateurs:
S Z - H - P/V N C
X X 1
L'indicateur Z est positionné si A=(HL)
L'indicateur P/V est effacé si BC=0 après l'exécution; positionné sinon.



CPL Complémentation du registre A
Indicateurs:
S Z - H - P/V N C
1 1




DAA Ajustement décimal du registre A
Selon le registre des indicateurs, cette instruction ajoute conditionnellement 6 au quartet de poids fort et/ou faible du registre A, pour la conversion DCB après les opérations arithmétiques.
N C valeur du
quartet de
poids fort
H valeur du
quartet de
poids faible
#
ajoutée
à A
C après
exécution
0
(ADD,
ADC,
INC)
0
0
0
0
0
0
1
1
1
0-9
0-8
0-9
A-F
9-F
A-F
0-2
0-2
0-3
0
0
1
0
0
1
0
0
1
0-9
A-F
0-3
0-9
A-F
0-3
0-9
A-F
0-3
00
06
06
60
66
66
60
66
66
0
0
0
1
1
1
1
1
1
1
(SUB,
SBC,
DEC,
NEG)
0
0
1
1
0-9
0-8
7-F
6-F
0
1
0
1
0-9
6-F
0-9
6-F
00
FA
A0
9A
0
0
1
1
Indicateurs:
S Z - H - P/V N C




DEC M Décrémentation de l'opérande M
M peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL -> ex: DEC (HL)
- une adresse mémoire adressée par le registre IX+d -> ex: DEC (IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: DEC (IY+4)
Indicateurs:
S Z - H - P/V N C
1




DEC RR Décrémentation du registre double RR
RR peut être les registres BC, DE, HL ou SP.
Indicateurs: aucun effet
S Z - H - P/V N C




DEC IX Décrémentation du registre double IX
Indicateurs: aucun effet
S Z - H - P/V N C




DEC IY Décrémentation du registre double IY
Indicateurs: aucun effet
S Z - H - P/V N C




DI Interdiction des interruptions
Interdit les interruptions masquables.
Indicateurs: aucun effet
S Z - H - P/V N C





DJNZ e Décrémentation du registre B et saut relatif de valeur e si B non nul
Le registre B est décrémenté. En cas de résultat nul, le saut n'est pas effectué. La valeur du saut est de -126 octets à +129 octets. L'assembleur calcule automatiquement la valeur de e si on utilise une adresse mémoire absolue.
 Indicateurs: aucun effet
S Z - H - P/V N C




EI Autorisation des interruptions
Autorise les interruptions masquables après l'exécution de l'instruction suivant l'instruction EI.
Indicateurs: aucun effet
S Z - H - P/V N C




EX AF,AF' Echange du registre A et du regitre des indicateurs avec les registres auxiliaires




EX DE,HL Echange des registres HL et DE
Indicateurs: aucun effet
S Z - H - P/V N C




EX (SP),HL Echange de HL avec le sommet de la pile
Indicateurs: aucun effet
S Z - H - P/V N C




EX (SP),IX Echange de IX avec le sommet de la pile
Indicateurs: aucun effet
S Z - H - P/V N C




EX (SP),IY Echange de IY avec le sommet de la pile
Indicateurs: aucun effet
S Z - H - P/V N C




EXX Echange les registres BC, DE et HL avec les registres auxiliaires
Indicateurs:aucun effet
S Z - H - P/V N C




HALT Halte de l'unité centrale
Attend jusqu'a recevoir un signal d'interruption ou de réinitialisation.
Indicateurs:aucun effet
S Z - H - P/V N C




IM 0 Sélection du mode d'interruption 0
L'élément qui interrompt doit placer une instruction à exécuter sur le bus de données. Le premier octet de l'instruction doit arriver pendant le cycle de rafraîchissement de l'interruption. (Mode inutilisé sur Amstrad cpc)
Indicateurs:aucun effet
S Z - H - P/V N C




IM 1 Sélection du mode d'interruption 1
Une instruction RST 038H est exécutée lorsqu'une interruption survient.
Indicateurs:aucun effet
S Z - H - P/V N C




IM 2 Sélection du mode d'interruption 2
L'élément qui interrompt doit placer un octet de donnée qui est utilisé comme partie basse d'une adresse mémoire (valeur aléatoire sur Amstrad Cpc sauf Cpc+), la partie haute de cette adresse étant fournie par le registre I.
Indicateurs:aucun effet
S Z - H - P/V N C




IN R,(C) Chargement du registre R à partir du port (C)
L'organe périphérique adressé par le registre C (B pour l'Amstrad Cpc) est lu et le résultat est chargé dans le registre R.
R peut être les registres A,B,C,D,E,H,L
Indicateurs:
S Z - H - P/V N C
0




IN A,(N) Chargement du registre A à partir du port N
L'organe périphérique adressé par la valeur immédiate N est lu et le résultat est chargé dans le registre A.
(code non fonctionnel sur l'Amstrad Cpc)
Indicateurs: aucun effet
S Z - H - P/V N C




INC M Incrémentation de l'opérande M
M peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL -> ex: INC (HL)
- une adresse mémoire adressée par le registre IX+d -> ex: INC (IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: INC (IY+4)
Indicateurs:
S Z - H - P/V N C
0




INC RR Incrémentation du registre double RR
RR peut être les registres BC, DE, HL ou SP.
Indicateurs: aucun effet
S Z - H - P/V N C




INC IX Incrémentation du registre double IX
Indicateurs: aucun effet
S Z - H - P/V N C




INC IY Incrémentation du registre double IY
Indicateurs: aucun effet
S Z - H - P/V N C




IND Entrée avec décrémentation
L'organe périphérique adressé par le registre C (B pour l'Amstrad Cpc) est lu et le résultat est chargé dans l'emplacement mémoire adressé par le registre double HL. Le registre B et le registre double HL sont ensuite décrémentés.
Indicateurs:
S Z - H - P/V N C
? X ? ? 1
L'indicateur Z est positionné si B=0 après l'exécution; effacé sinon



INDR Entrée par bloc avec décrémentation
L'organe périphérique adressé par le registre C (B pour l'Amstrad Cpc) est lu et le résultat est chargé dans l'emplacement mémoire adressé par le registre double HL. Le registre B et le registre double HL sont ensuite décrémentés. Si le registre B est non nul, le compteur ordinal est décrémenté de 2 et l'instruction est réexécutée.
Indicateurs:
S Z - H - P/V N C
? X ? ? 1




INI Entrée avec incrémentation
L'organe périphérique adressé par le registre C (B pour l'Amstrad Cpc) est lu et le résultat est chargé dans l'emplacement mémoire adressé par le registre double HL. Le registre B est décrémenté et le registre double HL est incrémenté. La sélection des ports d'entré-sortie est généralement faite par C (B pour l'Amstrad Cpc), c'est-à-dire A0 à A7. B sert de compte d'octets.
Indicateurs:
S Z - H - P/V N C
? X ? ? 1
L'indicateur Z est positionné si B=0 après l'exécution; effacé sinon.




INIR Entrée par bloc avec incrémentation
L'organe périphérique adressé par le registre C (B pour l'Amstrad Cpc) est lu et le résultat est chargé dans l'emplacement mémoire adressé par le registre double HL. Le registre B est décrémenté et le registre double HL est incrémenté. Si le registre B est non nul, le compteur ordinal est décrémenté de 2 et l'instruction est réexécutée.
Indicateurs:
S Z - H - P/V N C
? X ? ? 1




JP cond,NN Saut conditionnel à l'adresse NN
cond peut être:
NZ: indicateur Z=0
Z: indicateur Z=1
NC: indicateur C=0
C: indicateur C=1
PO: indicateur P/V=0
PE: indicateur P/V=1
P: indicateur S=0
M: indicateur S=1
Indicateurs: aucun effet
S Z - H - P/V N C




JP NN Saut à l'adresse NN
Indicateurs: aucun effet
S Z - H - P/V N C




JP (HL) Saut au contenu de HL
Indicateurs: aucun effet
S Z - H - P/V N C




JP (IX) Saut au contenu de IX
Indicateurs: aucun effet
S Z - H - P/V N C




JP (IY) Saut au contenu de IY
Indicateurs: aucun effet
S Z - H - P/V N C




JR cond,e Saut relatif de e conditionnel
Le saut est effectué si la condition est remplie. La valeur du saut est de -126 octets à +129 octets. L'assembleur calcule automatiquement la valeur de e si on utilise une adresse mémoire absolue.
cond peut être:
NZ: indicateur Z=0
Z: indicateur Z=1
NC: indicateur C=0
C: indicateur C=1
Indicateurs: aucun effet
S Z - H - P/V N C




JR e Saut relatif de e
La valeur du saut est de -126 octets à +129 octets. L'assembleur calcule automatiquement la valeur de e si on utilise une adresse mémoire absolue.
Indicateurs: aucun effet
S Z - H - P/V N C




LD RR,(NN) Le contenu de l'emplacement mémoire NN est chargé dans le  registre double RR
RR peut être les registres BC, DE, HL ou SP.
Indicateurs: aucun effet
S Z - H - P/V N C




LD RR,NN La donnée immédiate NN est chargée dans le  registre double RR       
RR peut être les registres BC, DE, HL ou SP.
Indicateurs: aucun effet
S Z - H - P/V N C




LD R,N La donnée immédiate N est chargée dans le  registre R
R peut être les registres A,B,C,D,E,H,L
Indicateurs: aucun effet
S Z - H - P/V N C




LD R,R' Charge un registre à partir d'un autre registre
R et R' peuvent être les registres A,B,C,D,E,H,L
Indicateurs: aucun effet
S Z - H - P/V N C




LD (BC),A Chargement de l'emplacement mémoire adressé par BC à partir du registre A
Indicateurs: aucun effet
S Z - H - P/V N C




LD (HL),N Chargement de l'emplacement mémoire adressé par HL avec la donnée immédiate N
Indicateurs: aucun effet
S Z - H - P/V N C




LD (HL),R Chargement de l'emplacement mémoire adressé par HL avec le registre R
R peut être les registres A,B,C,D,E,H,L
Indicateurs: aucun effet
S Z - H - P/V N C




LD R,(IX+d) Chargement du registre R à partir de l'adresse indexée (IX+d)
R peut être les registres A,B,C,D,E,H,L
Indicateurs: aucun effet
S Z - H - P/V N C




LD R,(IY+d) Chargement du registre R à partir de l'adresse indexée (IY+d)
R peut être les registres A,B,C,D,E,H,L
Indicateurs: aucun effet
S Z - H - P/V N C




LD (IX+d),N Chargement de l'emplacement mémoire d'adresse indexée (IX+d) avec la donnée immédiate N
Indicateurs: aucun effet
S Z - H - P/V N C




LD (IY+d),N Chargement de l'emplacement mémoire d'adresse indexée (IY+d) avec la donnée immédiate N
Indicateurs: aucun effet
S Z - H - P/V N C




LD (IX+d),R Chargement de l'emplacement mémoire d'adresse indexée (IX+d) à partir du registre R
Indicateurs: aucun effet
S Z - H - P/V N C




LD (IY+d),R Chargement de l'emplacement mémoire d'adresse indexée (IY+d) à partir du registre R
Indicateurs: aucun effet
S Z - H - P/V N C




LD A,(NN) Chargement du registre A à partir de l'emlacement mémoire NN
Indicateurs: aucun effet
S Z - H - P/V N C




LD (NN),A Chargement de l'emplacement mémoire d'adresse NN à partir du registre A
Indicateurs: aucun effet
S Z - H - P/V N C




LD (NN),RR Chargement de l'emplacement mémoire d'adresse NN à partir du registre RR
RR peut être les registres BC, DE, HL ou SP.
Indicateurs: aucun effet
S Z - H - P/V N C




LD (NN),IX Chargement de l'emplacement mémoire d'adresse NN à partir du registre IX
Indicateurs: aucun effet
S Z - H - P/V N C




LD (NN),IY Chargement de l'emplacement mémoire d'adresse NN à partir du registre IY
Indicateurs: aucun effet
S Z - H - P/V N C




LD A,(BC) Chargement du registre A à partir de l'emlacement mémoire adressé par BC
Indicateurs: aucun effet
S Z - H - P/V N C




LD A,(DE) Chargement du registre A à partir de l'emlacement mémoire adressé par DE
Indicateurs: aucun effet
S Z - H - P/V N C




LD A,I Chargement du registre A à partir du registre de vectorisation des interruptions I
Indicateurs:
S Z - H - P/V N C
0 X 0
P/V est mis à la valeur de IFF2



LD I,A Chargement du registre de vectorisation des interruptions I à partir du registre A
Indicateurs: aucun effet
S Z - H - P/V N C




LD A,R Chargement du registre A à partir du registre de rafraîchissement mémoire R
Indicateurs:
S Z - H - P/V N C
0 X 0
P/V est mis à la valeur de IFF2



LD HL,(NN) Chargement du registre HL à partir de l'emplacement mémoire d'adresse NN
Indicateurs: aucun effet
S Z - H - P/V N C




LD IX,NN Chargement du registre IX avec la donnée immédiate NN
Indicateurs: aucun effet
S Z - H - P/V N C




LD IX,(NN) Chargement du registre IX à partir de l'emplacement mémoire d'adresse NN
Indicateurs: aucun effet
S Z - H - P/V N C





LD IY,NN Chargement du registre IY avec la donnée immédiate NN
Indicateurs: aucun effet
S Z - H - P/V N C





LD IY,(NN) Chargement du registre IY à partir de l'emplacement mémoire d'adresse NN
Indicateurs: aucun effet
S Z - H - P/V N C




LD R,(HL) Chargement du registre R à partir de l'emplacement mémoire adressé par HL
R peut être les registres A,B,C,D,E,H,L
Indicateurs: aucun effet
S Z - H - P/V N C




LD R,A Chargement registre de rafraîchissement mémoire R à partir du registre A
Indicateurs: aucun effet
S Z - H - P/V N C




LD SP,HL Chargement du pointeur de pile à partir de HL
Indicateurs: aucun effet
S Z - H - P/V N C




LD SP,IX Chargement du pointeur de pile à partir de IX
Indicateurs: aucun effet
S Z - H - P/V N C




LD SP,IY Chargement du pointeur de pile à partir de IY
Indicateurs: aucun effet
S Z - H - P/V N C




LDD Transfert de bloc avec décrémentation
Le contenu de l'emplacement mémoire adressé par HL est chargé dans l'emplacement mémoire adressé par DE. Ensuite BC, DE et HL sont décrémentés.
Indicateurs:
S Z - H - P/V N C
0 X 0
P/V est effacé si BC=0 après l'exécution, positionné sinon.




LDDR Transfert répétitif de bloc avec décrémentation
Le contenu de l'emplacement mémoire adressé par HL est chargé dans l'emplacement mémoire adressé par DE. Ensuite BC, DE et HL sont décrémentés et l'instruction est réexécutée tant que BC est différent de zéro.
Indicateurs:
S Z - H - P/V N C
0 0 0




LDI Transfert de bloc avec incrémentation
Le contenu de l'emplacement mémoire adressé par HL est chargé dans l'emplacement mémoire adressé par DE. Ensuite DE et HL sont incrémentés et BC décrémenté.
Indicateurs:
S Z - H - P/V N C
0 X 0
P/V est effacé si BC=0 après l'exécution, positionné sinon.



LDIR Transfert répétitif de bloc avec incrémentation
Le contenu de l'emplacement mémoire adressé par HL est chargé dans l'emplacement mémoire adressé par DE. Ensuite DE et HL sont incrémentés et BC décrémenté et l'instruction est réexécutée tant que BC est différent de zéro.
Indicateurs:
S Z - H - P/V N C
0 0 0




NEG Opposé du registre A
Le contenu du registre A est soustrait de zéro et le résultat est rangé à nouveau dans le registre A.
Indicateurs:
S Z - H - P/V N C
1
C est positionné si le registre A était différent de zéro avant l'instruction.
P sera positionné si le registre A valait 080h.



NOP Opération nulle
N'effectue aucune opération
Indicateurs: aucun effet
S Z - H - P/V N C




OR S Ou logique entre le registre A et l'opérande S
S peut être:
- un des registres A,B,C,D,E,H ou L
- une valeur immédiate N -> ex: OR 9
- une adresse mémoire adressée par le registre HL -> ex: OR (HL)
- une adresse mémoire adressée par le registre IX+d -> ex: OR (IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: OR (IY+4)
Indicateurs:
S Z - H - P/V N C
0 0 0




OTDR Sortie par bloc avec décrémentation
Le contenu de l'emplacement mémoire adressé par le registre double HL est écrit dans l'organe périphérique adressé par le contenu du registre C (B pour l'Amstrad Cpc). Ensuite, le registre B et le registre double HL sont décrémentés et l'instruction est réexécutée tant que BC est différent de zéro.
Indicateurs:
S Z - H - P/V N C
? 1 ? ? 1




OTIR Sortie par bloc avec incrémentation
Le contenu de l'emplacement mémoire adressé par le registre double HL est écrit dans l'organe périphérique adressé par le contenu du registre C (B pour l'Amstrad Cpc). Ensuite, le registre B est décrémenté et le registre double HL est incrémenté et l'instruction est réexécutée tant que BC est différent de zéro.
Indicateurs:
S Z - H - P/V N C
? 1 ? ? 1




OUT (C),R Sortie du registre R vers le port C
Le contenu du registre spécifié est écrit dans l'organe périphérique adressé par le contenu du registre C (B pour l'Amstrad Cpc).
R peut être les registres A,B,C,D,E,H,L
Indicateurs: aucun effet
S Z - H - P/V N C




OUT (N),A Sortie du registre A vers le port N
Le contenu du registre A est écrit dans l'organe périphérique adressé par le contenu de l'emplacement mémoire suivant immédiatement le code opératoire.
(code non fonctionnel sur l'Amstrad Cpc)
Indicateurs: aucun effet
S Z - H - P/V N C





OUTD Sortie avec décrémentation
Le contenu de l'emplacement mémoire adressé par le registre double HL est écrit dans l'organe périphérique adressé par le contenu du registre C (B pour l'Amstrad Cpc). Ensuite, le registre B et le registre double HL sont décrémentés.
Indicateurs:
S Z - H - P/V N C
? X ? ? 1
Z est positionné si B=0 après l'exécution, effacé sinon.



OUTI Sortie avec incrémentation
Le contenu de l'emplacement mémoire adressé par le registre double HL est écrit dans l'organe périphérique adressé par le contenu du registre C (B pour l'Amstrad Cpc). Ensuite, le registre B est décrémenté et le registre double HL est incrémenté.
Indicateurs:
S Z - H - P/V N C
? X ? ? 1
Z est positionné si B=0 après l'exécution, effacé sinon.




POP RR Charge le registre double RR à partir de la pile
Charge le registre double RR à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite additionnée de 2.
RR peut être les registres BC, DE, HL ou AF.
Indicateurs: aucun effet
S Z - H - P/V N C




POP IX Charge le registre double IX à partir de la pile
Charge le registre double IX à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite additionnée de 2.
Indicateurs: aucun effet
S Z - H - P/V N C





POP IY Charge le registre double IY à partir de la pile
Charge le registre double IY à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite additionnée de 2.
Indicateurs: aucun effet
S Z - H - P/V N C




PUSH RR Charge la valeur du registre double RR sur la pile
Charge la valeur du registre double RR à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite décrémentée de 2.
Indicateurs: aucun effet
S Z - H - P/V N C




PUSH IX Charge la valeur du registre double IX sur la pile
Charge la valeur du registre double IX à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite décrémentée de 2.
Indicateurs: aucun effet
S Z - H - P/V N C




PUSH IY Charge la valeur du registre double IY sur la pile
Charge la valeur du registre double IY à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite décrémentée de 2.
Indicateurs: aucun effet
S Z - H - P/V N C




RES b,S Effacement du bit b de l'opérande S
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs: aucun effet
S Z - H - P/V N C




RET Retour de sous-programme
Charge la nouvelle adresse d'exécution à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite additionnée de 2.
Indicateurs: aucun effet
S Z - H - P/V N C





RET cond Retour conditionnel de sous-programme
Si la condition est remplie, charge la nouvelle adresse d'exécution à partir de l'emplacement mémoire adressé par le registre double SP qui est ensuite additionné de 2.
cond peut être:
NZ: indicateur Z=0
Z: indicateur Z=1
NC: indicateur C=0
C: indicateur C=1
PO: indicateur P/V=0
PE: indicateur P/V=1
P: indicateur S=0
M: indicateur S=1
Indicateurs: aucun effet
S Z - H - P/V N C





RETI Retour d'interruption
Charge la nouvelle adresse d'exécution à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite additionnée de 2. Cette instruction est reconnue par les périphériques ZILOG comme la fin d'une routine d'interruption, pour permettre le contrôle correct de la hiérarchisation des interruptions. Une instruction EI doit être exécutée préalablement au RETI pour réautoriser les interruptions.
Indicateurs: aucun effet
S Z - H - P/V N C




RETN Retour d'interruption non masquble
Charge la nouvelle adresse d'exécution à partir de l'emplacement mémoire adressé par le registre double SP. La valeur de SP est ensuite additionnée de 2. Ensuite, le contenu de IFF2 (bascule de sauvegarde) est recopié dans IFF1 pour restaurer l'état de la bascule d'autorisation des interruptions avant l'interruption non masquable.
Indicateurs: aucun effet
S Z - H - P/V N C




RL S Rotation de l'opérande S à gauche à travers l'indicateur de report
Le contenu de l'emplacement spécifié par l'opérande est décalé vers la gauche d'un bit. Le contenu de l'indicateur de report va dans le bit 0 et le contenu du bit 7 va dans l'indicateur de report. (Rotation sur 9 bits)
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs:
S Z - H - P/V N C
0
0



RLA Rotation du registre A à gauche à travers l'indicateur de report
Le contenu du registre A est décalé vers la gauche d'un bit. Le contenu de l'indicateur de report va dans le bit 0 et le contenu du bit 7 va dans l'indicateur de report. (Rotation sur 9 bits)
Indicateurs:
S Z - H - P/V N C
0 0




RLC S Rotation de l'opérande S à gauche
Le contenu de l'emplacement spécifié par l'opérande est décalé circulairement vers la gauche d'un bit. Le contenu du bit 7 va dans le bit 0 et est recopié dans l'indicateur de report.
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs:
S Z - H - P/V N C
0 0




RLCA Rotation du registre A à gauche
Le contenu du registre A est décalé circulairement vers la gauche d'un bit. Le contenu du bit 7 va dans le bit 0 et est recopié dans l'indicateur de report.
Indicateurs
S Z - H - P/V N C
0 0




RLD Rotation décimale à gauche
Les 4 bits de poids faible de l'emplacement mémoire adressé par le contenu de HL sont placés dans les bits de poids fort de ce même emplacement. Les 4 bits de poids ford sont placés dans les 4 bits de poids faible du registre A. Le poids faible du registre A est placé dans les 4 bits de poids faible de l'emplacement mémoire initial. Toutes ces opérations se produisent simultanément.
Indicateurs:
S Z - H - P/V N C
0 0





RR S Rotation de l'opérande S à droite à travers l'indicateur de report
Le contenu de l'emplacement spécifié par l'opérande est décalé vers la droite d'un bit. Le contenu de l'indicateur de report va dans le bit 7 et le contenu du bit 0 va dans l'indicateur de report. (Rotation sur 9 bits)
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs:
S Z - H - P/V N C
0 0




RRA Rotation du registre A à droite à travers l'indicateur de report
Le contenu du registre A est décalé vers la droite d'un bit. Le contenu de l'indicateur de report va dans le bit 7 et le contenu du bit 0 va dans l'indicateur de report. (Rotation sur 9 bits)
Indicateurs:
S Z - H - P/V N C
0 0




RRC S Rotation de l'opérande S à droite
Le contenu de l'emplacement spécifié par l'opérande est décalé circulairement vers la droite d'un bit. Le contenu du bit 0 va dans le bit 7 et est recopié dans l'indicateur de report.
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs:
S Z - H - P/V N C
0 0




RRCA Rotation du registre A à droite
Le contenu du registre A est décalé circulairement vers la droite d'un bit. Le contenu du bit 0 va dans le bit 7 et est recopié dans l'indicateur de report.
Indicateurs:
S Z - H - P/V N C
0 0




RRD Rotation décimale à droite
Les 4 bits de poids fort de l'emplacement mémoire adressé par le contenu du registre double HL sont placés dans les 4 bits de poids faible de ce même emplacement. Les 4 bits de poids faibles sont placés dans les 4 bits de poids faible du registre A. Les bits de poids faible du registre A sont placés dans les 4 bits de poids fort de l'emlacement mémoire initial. Toutes ces opérations se produisent simultanément.
Indicateurs:
S Z - H - P/V N C
0 0




RST  N Appel adresse mémoire N
N peut être 000H, 008H, 010H, 018H, 020H, 028H,030H,038H
Indicateurs: aucun effet
S Z - H - P/V N C




SBC A,S Soustraire du registre A l'opérande spécifiée et le report
S peut être:
- un des registres A,B,C,D,E,H ou L
- une valeur immédiate N -> ex: SBC A,9
- une adresse mémoire adressée par le registre HL -> ex: SBC A,(HL)
- une adresse mémoire adressée par le registre IX+d -> ex: SBC A,(IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: SBC A,(IY+4)
Indicateurs:
S Z - H - P/V N C
1




SBC HL,RR Soustraire de HL le registre double RR et le report
RR peut être les registres BC, DE, HL ou SP.
Indicateurs:
S Z - H - P/V N C
? 1
H est positionné s'il y a report du bit 12



SCF Positionnement de l'indicateur de report
Indicateurs:
S Z - H - P/V N C
0 0 1




SET  b,S Positionnement du bit b de l'opérande S
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs: aucun effet
S Z - H - P/V N C





SLA S Décalage à gauche de l'opérande S
Le contenu de l'emplacement déterminé par l'opérande spécifié est décalé vers la gauche, le contenu du bit 7 allant dans l'indicateur de report et le contenu du bit 0 prenant la valeur 0.
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs:
S Z - H - P/V N C
0 0




SRA S Décalage arithmétique à droite de l'opérande S
Le contenu de l'emplacement déterminé par l'opérande spécifié est décalé arithmétiquement vers la droite, le contenu du bit 0 allant dans l'indicateur de report et le contenu du bit 7 demeurant inchangé.
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs:
S Z - H - P/V N C
0 0




SRL S Décalage logique à droite de l'opérande S
Le contenu de l'emplacement déterminé par l'opérande spécifié est décalé logiquement vers la droite, le contenu du bit 0 allant dans l'indicateur de report et le contenu du bit 7 prenant la valeur 0.
S peut être:
- un des registres A,B,C,D,E,H ou L
- une adresse mémoire adressée par le registre HL
- une adresse mémoire adressée par le registre IX+d
- une adresse mémoire adressée par le registre IY+d
Indicateurs: aucun effet
S Z - H - P/V N C
0 0




SUB A,S Soustraire l'opérande S du registre A
S peut être:
- un des registres A,B,C,D,E,H ou L
- une valeur immédiate N -> ex: SUB A,9
- une adresse mémoire adressée par le registre HL -> ex: SUB A,(HL)
- une adresse mémoire adressée par le registre IX+d -> ex: SUB A,(IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: SUB A,(IY+4)
Indicateurs:
S Z - H - P/V N C
1




XOR S OU exclusif logique entre le registre A et l'opérande S
S peut être:
- un des registres A,B,C,D,E,H ou L
- une valeur immédiate N -> ex: XOR 9
- une adresse mémoire adressée par le registre HL -> ex: XOR (HL)
- une adresse mémoire adressée par le registre IX+d -> ex: XOR (IX+10)
- une adresse mémoire adressée par le registre IY+d -> ex: XOR (IY+4)
Indicateurs: aucun effet
S Z - H - P/V N C
0 0 0




Indicateurs:

S Z - H - P/V N C
7 6 5 4 3 2 1 0

Indicateur modifié selon le résultat de l'opération
0 Indicateur mis à zéro
1 Indicateur mis à un
? Indicateur modifié aléatoirement par l'opération
X Cas spécial (voir note d'accompagnement)


C: Indicateur de report (ou retenue):
Indique un report lors d'une opération d'addition ou de soustraction. Il sert aussi de neuvième bit lors d'une opération de décalage ou de rotation.

N: Indicateur de soustraction:

Indicateur normalement non utilisé par le programmeur mais utilisé de manière interne par le processeur.

P/V: Indicateur de parité (P) ou de débordement (V):

Certaines instructions positionnent ou effacent ce bit, selon la parité du résultat. La parité est déterminée en comptant le nombre de 1 dans le résultat. Le second essentiel rôle de cet indicateur est de détecter lors d'une opération d'addition ou de soustraction, le fait que le signe du résultat soit «accidentellement» changé, à cause d'un débordement dans le bit le plus significatif.

H: Indicateur de demi-report:

L'indicateur de demi-report indique un éventuel report du bit 3 vers le bit 4, lors d'une opération arithmétique.

Z: Indicateur zéro

De façon générale, l'indicateur Z signale que l'octet qui vient d'être calculé ou transféré a la valeur zéro, ou indique une égalité lors d'instructions de comparaison.

S: Indicateur de signe:

Cet indicateur reflète la valeur du bit le plus significatif (le plus à gauche) de l'octet qui vient d'être calculé, ou transféré.