
|

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
|
Dernières
revues (version Dosbox)
V1.19a- 09/02/2025 - corrections & implémentation programmation C++
V1.18 - 27/01/2025 - création d'animations au format GIF 320*200*256 couleurs et corrections
V1.17 - 07/01/2024 - nouveau mode écran 1024*768*256 couleurs(MODE 3)
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
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:
RR peut être les registres BC, DE, HL ou SP.
Indicateurs:
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:
ADD
A,(IX+d) |
Additionner
le registre A et l'emplacement
mémoire d'adresse indexée (IX+d) |
Indicateurs:
ADD
A,(IY+d) |
Additionner
le registre A et l'emplacement
mémoire d'adresse indexée (IY+d) |
Indicateurs:
ADD A,N |
Additionner
le registre A et la valeur
immédiate N |
Indicateurs:
ADD A,R |
Additionner
le registre A et le registre R |
R peut être les registres A,B,C,D,E,H,L
Indicateurs:
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:
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
CALL NN |
Appel de
l'adresse
mémoire NN |
Indicateurs: aucun
effet
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:
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:
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:
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:
DEC RR |
Décrémentation
du
registre double RR |
RR peut être les registres BC, DE, HL ou SP.
Indicateurs: aucun
effet
DEC IX |
Décrémentation
du
registre double IX |
Indicateurs:
aucun effet
DEC IY |
Décrémentation
du
registre double IY |
Indicateurs:
aucun effet
DI |
Interdiction des
interruptions |
Interdit les interruptions masquables.
Indicateurs: aucun
effet
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
EI |
Autorisation
des interruptions |
Autorise les interruptions masquables après
l'exécution de l'instruction suivant l'instruction EI.
Indicateurs: aucun
effet
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
EX (SP),HL |
Echange de
HL avec le sommet de la pile |
Indicateurs:
aucun effet
EX (SP),IX |
Echange de
IX avec le sommet de la pile |
Indicateurs: aucun
effet
EX (SP),IY |
Echange de
IY avec le sommet de la pile |
Indicateurs: aucun
effet
EXX |
Echange
les registres BC, DE et HL avec les
registres auxiliaires |
Indicateurs:aucun
effet
HALT |
Halte de
l'unité centrale |
Attend jusqu'a recevoir un signal d'interruption ou de
réinitialisation.
Indicateurs:aucun
effet
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
IM 1 |
Sélection
du mode d'interruption 1 |
Une instruction RST
038H est exécutée lorsqu'une interruption
survient.
Indicateurs:aucun
effet
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
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:
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
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:
INC RR |
Incrémentation
du registre double
RR |
RR peut être les registres BC, DE, HL ou SP.
Indicateurs: aucun
effet
INC IX |
Incrémentation
du registre double
IX |
Indicateurs:
aucun effet
INC IY |
Incrémentation
du registre double
IY |
Indicateurs:
aucun effet
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
JP NN |
Saut
à l'adresse NN
|
Indicateurs:
aucun effet
JP (HL) |
Saut au
contenu de HL
|
Indicateurs:
aucun effet
JP (IX) |
Saut au
contenu de IX |
Indicateurs:
aucun effet
JP (IY) |
Saut au
contenu de IY |
Indicateurs:
aucun effet
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
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
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
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
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
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
LD (BC),A |
Chargement
de l'emplacement
mémoire adressé par BC à partir du
registre A
|
Indicateurs:
aucun effet
LD (HL),N |
Chargement
de l'emplacement
mémoire adressé par HL avec la donnée
immédiate N |
Indicateurs:
aucun effet
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
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
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
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
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
LD (IX+d),R |
Chargement
de l'emplacement
mémoire d'adresse indexée (IX+d) à
partir du registre R |
Indicateurs:
aucun effet
LD (IY+d),R |
Chargement
de l'emplacement
mémoire d'adresse indexée (IY+d) à
partir du registre R |
Indicateurs:
aucun effet
LD A,(NN) |
Chargement
du registre A à partir
de l'emlacement mémoire NN
|
Indicateurs:
aucun effet
LD (NN),A |
Chargement
de l'emplacement
mémoire d'adresse NN à partir du registre A
|
Indicateurs:
aucun effet
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
LD (NN),IX |
Chargement
de l'emplacement
mémoire d'adresse NN à partir du registre IX |
Indicateurs:
aucun effet
LD (NN),IY |
Chargement
de l'emplacement
mémoire d'adresse NN à partir du registre IY |
Indicateurs:
aucun effet
LD A,(BC) |
Chargement
du registre A à partir
de l'emlacement mémoire adressé par BC |
Indicateurs:
aucun effet
LD A,(DE) |
Chargement
du registre A à partir
de l'emlacement mémoire adressé par DE |
Indicateurs:
aucun effet
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
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
LD IX,NN |
Chargement
du registre IX avec la
donnée immédiate NN
|
Indicateurs:
aucun effet
LD IX,(NN) |
Chargement
du registre IX à
partir de l'emplacement mémoire d'adresse NN |
Indicateurs:
aucun effet
LD IY,NN |
Chargement
du registre IY avec la
donnée immédiate NN |
Indicateurs:
aucun effet
LD IY,(NN) |
Chargement
du registre IY à
partir de l'emplacement mémoire d'adresse NN |
Indicateurs:
aucun effet
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
LD R,A |
Chargement registre
de
rafraîchissement mémoire R à partir du
registre A |
Indicateurs:
aucun effet
LD SP,HL |
Chargement
du pointeur de pile à
partir de HL
|
Indicateurs:
aucun effet
LD SP,IX |
Chargement
du pointeur de pile à
partir de IX |
Indicateurs:
aucun effet
LD SP,IY |
Chargement
du pointeur de pile à
partir de IY |
Indicateurs:
aucun effet
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:
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:
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:
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:
Le contenu du registre A est soustrait de zéro et le
résultat est rangé à nouveau dans le
registre A.
Indicateurs:
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.
N'effectue aucune opération
Indicateurs:
aucun effet
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:
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
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
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
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
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
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
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
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
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
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
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
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
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
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:
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:
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:
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:
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:
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:
RST N |
Appel
adresse mémoire N
|
N peut être 000H, 008H, 010H, 018H, 020H, 028H,030H,038H
Indicateurs:
aucun effet
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:
SBC HL,RR |
Soustraire
de HL le registre double RR et le report
|
RR peut être les registres BC, DE, HL ou SP.
Indicateurs:
H est positionné s'il y a report du bit 12
SCF |
Positionnement
de l'indicateur de report
|
Indicateurs:
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
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:
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:
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
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:
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
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é.
|