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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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émonique  Opération
Symbolique 
Nbre
d'octets 
Nbre de cycles  Mode 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

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 038 millisecondes et consultée 1273 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.