CODINGDEMONIAK ★ COURS d'ASSEMBLEUR par DEMONIAK [(Mardi 19 juillet 2005) ★

Cours d'assembleur par Demoniak - Partie 5 : Les instructions Z80 / Modes d'AdressageCoding Demoniak

Partie 5 : les instructions Z80 / Modes d'Adressage

RR Registre - Registre
Im = Immédiat
IDX = Indexé
D = Direct
In = Indirect

r ou r' est un registre 8 bits
n est un nombre de 8 bits
nn est un nombre 16 bits
dd est BC, DE, HL ou SP
qq est AF, BC, DE ou HL.
pp est BC, DE, IX ou SP
rr est HC, DE, IX ou SP.
FlagsC = Carry / flag de report
Z = Flag zéro
S = Flag signe
P/V = Flag parité ou dépassement
H = Flag demi-carry
N = Flag addition/soustraction
Modification des flags?Flag fixé en fonction du résultat de l'opération 0 Flag annulé
1 Flag mis
* Flag non affecté
— Modification du flag imprévisible
V Flag mis si dépassement (overflow)
P Flag mis si parité
F Le flag P/V reçoit le contenu du flip-flop d'interruption (IFF)
SymbolisationR DE HL : échange les contenus de DE et HL.
GROUPE LOAD 8 BITS

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
LD r,r'
LD r,n
LD r,(HL)
LD r,(IX+d)
LD r,(IY+d)
LD (HL),r
LD (IX+d),r
LD (IY+d),r
LD (HL),n
LD (IX+d),n
LD (IY+d),n
LD A,(BC)
LD A,(DE)
LD A,(nn)
LD (BC),A
LD (DE),A
LD (nn),A
LD A,I
LD A,R
LD I,A
LD R,A
r r r <-(HL)
r <-(IX+d)
r <-(IY+d)
(HL)<-r
(IX+d)<-r
(IY+d)<-r
(HL)<-n
(IX+d)<-n
(IY+d)<-n
AAA(BC)(DE)(nn)AAIR1
2
1
3
3
1
3
3
2
4
4
1
1
3
1
1
3
2
2
2
21
2
2
5
5
2
5
5
3
5
5
2
2
4
2
2
4
2
2
2
2RR
Im
In
IDX
IDX
In
IDX
IDX
In
IDX
IDX
In
In
D
IN
IN
D
RR
RR
RR
RR* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* ? F... ? 0 0
* ? F... ? 0 0
* * *... * * *
* * *... * * *

GROUPE LOAD 16 BITS

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
LD dd,nn
LD IX,nn
LD IY,nn
LD HL,(nn)

LD dd,(nn)

LD IX,(nn)

LD IY,(nn)

LD (nn),HL

LD (nn),dd

LD (nn),IX

LD (nn),IY

ddIXIYHLddddIXIXIYIY(nn+1)(nn)(nn+1)(nn)(nn+1)(nn)(nn+1)(nn)3
4
4
3

4

4

4

3

4

4

4 3
4
4
5

6

6

6

5

6

6

6 Im
Im
Im
D

D

D

D

D

D

D

D * * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *

LD SP,HL
LD SP,IX
LD SP,IY
PUSH qq

PUSH IX

PUSH IY

POP qq

POP IX

POP IY

SPSPSP(SP-1)(SP-2)(SP-1)(SP-2)(SP-1)(SP-2)qqqqIXIXIYIY1
2
2
1

2

2

1

2

2 1
2
2
3

4

4

3

4

4 RR
RR
RR
Im

Im

Im

Im

Im

Im * * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *

GROUPE ECHANGE – GROUPE TRANSFERT – RECHERCHE DE BLOC

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
EX DE,HL
EX AF,AF'
EXX

EX (SP),HL

EX (SP),IX

EX (SP),IY

LDI

LDIR

LDD

DE HL
AF AF'
BC BC'
DE DE'
HL HL'
H (SP+1)
L (SP)
IX (SP+1)
IX (SP)
IY (SP+1)
IY (SP)
(DE) DE HL BC (DE) DE HL BC JUSQUE BC=0
(DE)DEHLBC1
1
1

1

2

2

2

2

2
1
1
1

5

6

6

4

5

4 RR
RR
RR

RR

RR

RR

In

In

In * * *... * * *
* * *... * * *
* * *... * * *

* * *... * * *

* * *... * * *

* * *... * * *

* * ?... * 0 0

* * 0... * 0 0

* * ?... * 0 0

LDDR

CPI

CPIR

CPD

CPDR

(DE) DE HL BC JUSQUE BC=0
A-(HL)
HL BC A-(HL)
HL BC JUSQUE A=HL
OU BC=0
A-(HL)
HL BC A-(HL)
HL BC JUSQUEA=(HL)
OU BC=0
2

2

2

2

2

5

4

5

4

5

In

In

In

In

In

* * 0... * 0 0

* ? ?... * ? ?

* ? ?... * ? ?

* ? ?... * ? ?

* ? ?... * ? ?

GROUPE ARITHMETIQUE ET LOGIQUE 8 BITS

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
ADD A,r
ADD A,b
ADD A,(HL)
ADD A,(IX+d)
ADD A,(IY+d)
ADC A,s
SUB A,s
SBC A,s
AND s
OR s
XOR s
CP s
INC
INC (HL)
INC (IX+d)
INC (IY+d)
DEC d
A A A A A A A A A A A A-s
r-r+1
(HL)(IX+d)(IY+d)d1
2
1
3
3

1
1
3
3 1
2
2
5
5

1
3
6
6 Im
Im
In
IDX
IDX
Im
Im
Im
Im
Im
Im
Im
Im
In
IDX
IDX
Im? ? V... ? 0 ?
? ? V... ? 0 ?
? ? V... ? 0 ?
? ? V... ? 0 ?
? ? V... ? 0 ?
? ? V... ? 0 ?
? ? V... ? 1 ?
? ? V... ? 1 ?
0 ? P... ? 0 1
0 ? P... ? 0 1
0 ? P... ? 0 1
? ? V... ? 1 ?
* ? V... ? 0 ?
* ? V... ? 0 ?
* ? V... ? 0 ?
* ? V... ? 0 ?
* ? V... ? 1 1

GROUPE ARITHMETIQUE GENERALE ET CONTROLE UNITE CENTRALE

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
DAA
convertit
A en BCD
après
addition
ou sous-
traction
sur opér.
BCD

CPL
NEG
CCF
SCF
NOP
HALT
DI
EI
IMO

IM1

im3

_
A A CY CY Pas d'opération
CPU halte
IFF IFF Mettre
Interruption
Mode 0
Interruption
Mode 1
Interruption
Mode 2

1

1
2
1
1
1
1
1
1
2

2

2

1

1
2
1
1
1
1
1
1
2

2

2

Im

Im
Im
Im
Im
Im
Im
Im
Im
Im

Im

Im

? ? P... ? * *

* * *... * 1 1
? ? V ... ? 1 ?
? * *... * 0 *
1 * *... ? 0 0
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *

* * *... * * *

* * *... * * *


MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
ADD HL,dd
ADC HL,dd
SBC HL,dd
ADD IX,pp
ADD IY,rr
INC dd
INC IX
INC IY
DEC dd
DEC IX
DEC IY
HLHLHLIXIYddIXIYddIXIY1
2
2
2
2
1
2
2
1
2
23
4
4
4
4
1
2
2
1
2
2Im
Im
Im
Im
Im
Im
Im
Im
Im
Im
Im? * *... * 0 -
? ? V ... ? 0 -
? ? V ... ? 1 *
? * *... * 0 -
? * *... * 0 -
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *

GROUPE ROTATION ET DECALAGE

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
RLCA

RLA

RRCA

RRA

RLCr
RLC(HL)
RLC(IX+d)
RLC(IY+d)

RL s

RRC s

RR s

SLA s

SRA s

SRL s

RLD

RRD

1

1

1

1

2
2
4
4

-

-

-

-

-

-

2

2

1

1

1

1

2
4
6
6

-

-

-

-

-

-

5

5

Im

Im

Im

Im

Im
Im
Im
Im

Im

Im

Im

Im

Im

Im

Im

Im

? * *... * 0 0

? * *... * 0 0

? * *... * 0 0

? * *... * 0 0

? ? P ... ? 0 0
? ? P ... ? 0 0
? ? P ... ? 0 0
? ? P ... ? 0 0

? ? P ... ? 0 0

? ? P ... ? 0 0

? ? P ... ? 0 0

? ? P ... ? 0 0

? ? P ... ? 0 0

? ? P ... ? 0 0

* ? P ... ? 0 0

* ? P ... ? 0 0

GROUPE MISE, ANNULATION ET TEST DE BIT

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
Bit 6,r
Bit 6,(HL)
Bit 6,(IY+d)
BIT 6,(IY+d)
SET 6,r
SET 6,(HL)
SET 6,(IX+d)
SET 6,(IY+d)
SET 6,s
ZZZZr(HL)(IX+d)(IY+d)s2
2
4
4
2
2
4
4
-2
3
5
5
2
4
6
6
-RR
In
IDX
IDX
RR
In
IDX
IDX
RR* ? -... - 0 1
* ? -... - 0 1
* ? -... - 0 1
* ? - ... - 0 1
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *

GROUPE DE JUMP (SAUT)

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
JP nn
JP cc,nn

JR e
JR C e
JR NC e
JR Z e
JR NZ e
JP (HL)
JP (IX)
JP (IY)
DJNZ e

PX Si condition
cc vraie
PC sinon continue
PC Si c=0 continue
Si c=1 continue
Si z=0 continue
Si z=1 continue[/french}
B=0
PC3
3

2
2
2
2
2
1
2
2
2 3
3

3
2
2
2
2
1
2
2
3 Im
Im

Im
Im
Im
Im
Im
In
IDX
IDX
Im * * *... * * *
* * *... * * *

* * *... * *
* * *... * *
* * *... * *
* * *... * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *
* * *... * * *

GROUPE CALL ET RETURN

MnémoniqueOpération
Symbolique
Nbre
d'octets
Nbre de cyclesMode d'
adressage
Flags affectés
C Z P/V S N H
CALL n

CALL cc,nn

RET

RET cc

RETI

RET N

RET P

(SP-1) (SP-2) Si condition
cc fausse
continuer sinon
comme CALL nn
PC PC Si condition
cc fausse
continuer sinon
comme RET
Retour
d'interruption
Retour
d'interruption
[french]non masquable
(SP-1)(SP-2)PCPC3

3

1

1

2

2

1 5

3

3

1

4

4

3 Im

Im

Im

Im

Im

Im

Im * * *... * * *

* * *... * * *

* * *... * * *

* * *... * * *

* * *... * * *

* * *... * * *

* * *... * * *

Page précédente : Cours d'assembleur par Demoniak - Partie 4 : les modes d'adressage

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Eye: Colour Swaping Demonstration
» Coding » Cours et Initiation par Demoniak
» Coding Src's » Dots (Demoniak)
» Coding » Cours d'assembleur par Demoniak - Partie 3 : Les registres du Z80
» Coding » Cours d'assembleur par Demoniak - Partie 4 : les modes d'adressage
» Coding » Demoniak Packer
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 225 millisecondes et consultée 2999 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.