CpcAlive
est un environnement
de
programmation
compatible
Amstrad
CPC


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
Z80:
opcodes et
programmation
Installateur
CpcAlive pour
Windows 95 à 7 (V1.09M)
& pour DosBox
Documentation
CpcAlive
SmallAsm est un assembleur Z80
pour Dos ou console Windows
|
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.
Documents
web:
Introduction
to Z80 assembler
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 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 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é.
|