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.

 

Flags

 

C = 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)

 

Symbolisation

 

R <- n : met le nombre n dans le registre r.

DE <-> HL : echange 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 <- n

r <-(HL)

r <-(IX+d)

r <-(IY+d)

(HL)<-r

(IX+d)<-r

(IY+d)<-r

(HL)<-n

(IX+d)<-n

(IY+d)<-n

A <- (BC)

A <- (DE)

A <- (nn)

(BC) <- A

(DE) <- A

(nn) <- A

A <- I

A <- R

I <- A

R <- A

1

2

1

3

3

1

3

3

2

4

4

1

1

3

1

1

3

2

2

2

2

1

2

2

5

5

2

5

5

3

5

5

2

2

4

2

2

4

2

2

2

2

RR

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

dd <- nn

IX <- nn

IY <- nn

H <- (nn+1)

L <- (nn)

dd <- (nn+1)

dd <- (nn)

IX <- (nn+1)

IX <- (nn)

IY <- (nn+1)

IY <- (nn)

(nn+1) <- H

(nn)<- L

(nn+1) <- dd

(nn) <- dd

(nn+1) <- IX

(nn) <- IX

(nn+1) <- IY

(nn) <- IY

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

SP <- HL

SP <- IX

SP <- IY

(SP-1) <- qq

(SP-2) <- qq

(SP-1) <- IX

(SP-2) <- IX

(SP-1) <- IY

(SP-2) <- IY

qq <- (SP)

qq <- (SP+1)

IX <- (SP)

IX <- (SP+1)

IY <- (SP)

IY <- (SP+1)

1

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) <- (HL)

DE <- DE+1

HL <- HL+1

BC <- BC-1

(DE) <- (HL)

DE <- DE+1

HL <- HL+1

BC <- BC-1

JUSQUE BC=0

(DE) <- (HL)

DE<-DE-1

HL<-HL-1

BC<-BC-1

1

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) <- (HL)

DE <- DE-1

HL <- HL-1

BC <- BC-1

JUSQUE BC=0

A-(HL)

HL <- HL+1

BC <- BC-1

A-(HL)

HL <- HL+1

BC <- BC-1

JUSQUE A=(HL)

OU BC=0

A-(HL)

HL <- HL-1

BC <- BC-1

A-(HL)

HL <- HL-1

BC <- BC-1

JUSQUE A=(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,n

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+r

A <- A+n

A <- A+(HL)

A <- A+(IX+d)

A <- A+(IY+d)

A <- A+s+CY

A <- A-s

A <- A-s-CY

A <- A ET s

A <- A OU s

A <- A OUEX s

A-s

r-r+1

(HL)<-(HL)+1

(IX+d)<-(IX+d)+1

(IY+d)<-(IY+d)+1

d <- d-1

1

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

arès

addition

ou sous-

traction

sur oper.

BCD

 

CPL

NEG

CCF

SCF

NOP

HALT

DI

EI

IM0

 

 

IM1

 

IM2

 

 

 

 

 

 

   

 

 

_

A <- A

A <- 0 - A

CY <- CY

CY <- 1

Pas d’opération

CPU halte

IFF <- 0

IFF <- 1

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

ACD HL,dd

SBC HL,dd

ADD IX,pp

ADD IY,rr

INC dd

INC IX

INC IY

DEC dd

DEC IX

DEC IY

HL <- HL+dd

HL <- HL+dd+CY

HL <- HL-dd-CY

IX <- IX+pp

IY <- IY+rr

dd <- dd+1

IX <- IX+1

IY <- IY+1

dd <- dd-1

IX <- IX-1

IY <- IY-1

1

2

2

2

2

1

2

2

1

2

2

3

4

4

4

4

1

2

2

1

2

2

Im

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

Z<--r

Z<--(HL)

Z<--(IY+d)

Z<--(IY+d)

r<--1

(HL)<--1

(IX+d)<--1

(IY+d)<--1

s<--0

2

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<--nn

Si condition

cc vraie

PC<--nn

sinon continue

PC<--PC+e

Si c=0 continue

Si c=1 continue

Si z=0 continue

Si z=1 continue

PC<--HL

PC<--IX

PC<--IY

B<--B-1

Si B=0 continue

B=0

PC<--PC+e

3

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

 

RETN

 

 

RET P

(SP-1)<--PC

(SP-2)<--PC

Si condition

cc fausse,

continuer sinon

comme CALL nn

PC<--(SP)

PC<--(SP+1)

Si condition

cc fausse,

continuer sinon

comme RET

Retour

d'interruption

Retour

d'interruption

non masquable

(SP-1)<--PC

(SP-2)<--PC

PC<--0

PC<--P

3

 

3

 

 

 

1

 

1

 

 

 

2

 

2

 

 

1

5

 

3

 

 

 

3

 

1

 

 

 

4

 

4

 

 

3

Im

 

Im

 

 

 

Im

 

Im

 

 

 

Im

 

Im

 

 

Im

* * *   * * *

 

* * *   * * *

 

 

 

* * *   * * *

 

* * *   * * *

 

 

 

* * *   * * *

 

* * *   * * *

 

 

* * *   * * *