Référence hardware du z80
Écrit par Magnus Hagander (traduit par [ftp83+])

    Cliquez pour revenir au menu du site... ou ici pour retourner au menu du tutorial.

Références hardware du z80

Ce fichier contient des informations sur la manière de programmer le microprocesseur z80.
---------------------------------------------------------------------------

Contenu

* Registres
* Méthodes d'adressage
* Flags
* Description des symboles
* Instructions

---------------------------------------------------------------------------

Registres

Les registres suivants sont disponibles:

A,B,C,D,E Registres 8 bits
AF Registre 16 bits contenant A 16-bit register containing A and flags
BC Registre 16 bits contenant B et C
DE Registre 16 bits contenant D et E
HL Registre 16 bits utilisé pour l'adressage
F 8-bit Flag register
I Registre 8 bits8-bit Interrupt Page address register
IX,IY registres 16 bits d'index
PC 16-bit Program Counter register
R Registre 8 bits du rafraîchissement de la mémoire
SP 16-bit Stack Pointer register

---------------------------------------------------------------------------

Méthodes d'adressage

Les méthodes d'adressage suivantes sont disponibles:

Mnemonic Description
n Adressage immédiat Immediate addressing (8 bits)
nn Adressage immédiat étendu Immediate extending addressing (16 bits)

e Adressage relatif Relative addressing (8-bits; PC=PC+2+offset)
[nn] Adressage étenduExtended addressing (16-bit)
[xx+d] Indexed addressing (16-bit + 8-bit)
r Register addressing (8-bit)
[rr] Register indirect addressing (16-bit)
b Bit addressing
p Modified page 0 addressing

---------------------------------------------------------------------------

Flags

The following flags are available:

S Sign flag (bit 7)
Z Zero flag (bit 6)
H Half Carry flag (bit 4)

P Parity/Overflow flag (bit 2)
N Add/Subtract flag (bit 1)
C Carry flag (bit 0)

---------------------------------------------------------------------------

Description des symboles

Voici une courte description des symboles utilisés dans la liste d'instruction:

b Un bit (0 à 7)
cc Condition (C,M,NC,NZ,P,PE,PO,Z)
d Expression de un octet (-128 à +127)
dst Destination s, ss, [BC], [DE], [HL], [nn]
e Expression de un octet (-126 à +129)

m N'importe quel registre r, [HL] ou [xx+d]
n Expression de un octet (0 à 255)
nn Expression de deux octets (0 à 65535)
pp Paire de registres BC, DE, IX ou SP
qq Paire de registres AF, BC, DE ou HL
qq' Paire de registres alternative Alternative register pair AF, BC, DE ou HL
r Registre A, B, C, D, E, H ou L
rr Paire de registres BC, DE, IY ou SP
s N'importe quel registre r, valeur n, [HL] ou [xx+d]
src Source s, ss, [BC], [DE], [HL], nn, [nn]

ss Paire de registres BC, DE, HL or SP
xx Index register IX or IY

---------------------------------------------------------------------------

Instructions

The flag field contains one of the following:

- Flag unaffected
* Flag affected
0 Flag reset
1 Flag set
? Unknown

Les instructions suivantes sont disponibles:

Mnemonic Flags Description Notes
SZHPNC

ADC A,s ***V0* Add with Carry A=A+s+CY
ADC HL,ss **?V0* Add with Carry HL=HL+ss+CY

ADD A,s ***V0* Add A=A+s
ADD HL,ss --?-0* Add HL=HL+ss
ADD IX,pp --?-0* Add IX=IX+pp
ADD IY,rr --?-0* Add IY=IY+rr
AND s ***P00 Logical AND A=A&s
BIT b,m ?*1?0- Test Bit m&{2^b}
CALL cc,nn ------ Conditional Call If cc CALL
CALL nn ------ Unconditional Call -[SP]=PC,PC=nn
CCF --?-0* Complement Carry Flag CY=~CY
CP s ***V1* Compare A-s

CPD ****1- Compare and Decrement A-[HL],HL=HL-1,BC=BC-1
CPDR ****1- Compare, Dec., Repeat CPD till A=[HL]or BC=0
CPI ****1- Compare and Increment A-[HL],HL=HL+1,BC=BC-1
CPIR ****1- Compare, Inc., Repeat CPI till A=[HL]or BC=0
CPL --1-1- Complement A=~A
DAA ***P-* Decimal Adjust Acc. A=BCD format
DEC s ***V1- Decrement s=s-1
DEC xx ------ Decrement xx=xx-1
DEC ss ------ Decrement ss=ss-1

DI ------ Disable Interrupts
DJNZ e ------ Dec., Jump Non-Zero B=B-1 till B=0
EI ------ Enable Interrupts
EX [SP],HL ------ Exchange [SP]<->HL
EX [SP],xx ------ Exchange [SP]<->xx
EX AF,AF' ------ Exchange AF<->AF'
EX DE,HL ------ Exchange DE<->HL
EXX ------ Exchange qq<->qq' (except AF)
HALT ------ Halt
IM n ------ Interrupt Mode (n=0,1,2)

IN A,[n] ------ Input A=[n]
IN r,[C] ***P0- Input r=[C]
INC r ***V0- Increment r=r+1
INC [HL] ***V0- Increment [HL]=[HL]+1
INC xx ------ Increment xx=xx+1
INC [xx+d] ***V0- Increment [xx+d]=[xx+d]+1
INC ss ------ Increment ss=ss+1
IND ?*??1- Input and Decrement [HL]=[C],HL=HL-1,B=B-1
INDR ?1??1- Input, Dec., Repeat IND till B=0

INI ?*??1- Input and Increment [HL]=[C],HL=HL+1,B=B-1
INIR ?1??1- Input, Inc., Repeat INI till B=0
JP [HL] ------ Unconditional Jump PC=[HL]
JP [xx] ------ Unconditional Jump PC=[xx]
JP nn ------ Unconditional Jump PC=nn
JP cc,nn ------ Conditional Jump If cc JP
JR e ------ Unconditional Jump PC=PC+e
JR cc,e ------ Conditional Jump If cc JR(cc=C,NC,NZ,Z)
LD dst,src ------ Load dst=src

LD A,i **0*0- Load A=i (i=I,R)
LDD --0*0- Load and Decrement [DE]=[HL],HL=HL-1,#
LDDR --000- Load, Dec., Repeat LDD till BC=0
LDI --0*0- Load and Increment [DE]=[HL],HL=HL+1,#
LDIR --000- Load, Inc., Repeat LDI till BC=0
NEG ***V1* Negate A=-A
NOP ------ No Operation
OR s ***P00 Logical inclusive OR A=Avs
OTDR ?1??1- Output, Dec., Repeat OUTD till B=0

OTIR ?1??1- Output, Inc., Repeat OUTI till B=0
OUT [C],r ------ Output [C]=r
OUT [n],A ------ Output [n]=A
OUTD ?*??1- Output and Decrement [C]=[HL],HL=HL-1,B=B-1
OUTI ?*??1- Output and Increment [C]=[HL],HL=HL+1,B=B-1
POP xx ------ Pop xx=[SP]+
POP qq ------ Pop qq=[SP]+
PUSH xx ------ Push -[SP]=xx
PUSH qq ------ Push -[SP]=qq

RES b,m ------ Reset bit m=m&{~2^b}
RET ------ Return PC=[SP]+
RET cc ------ Conditional Return If cc RET
RETI ------ Return from Interrupt PC=[SP]+
RETN ------ Return from NMI PC=[SP]+
RL m **0P0* Rotate Left m={CY,m}<-
RLA --0-0* Rotate Left Acc. A={CY,A}<-
RLC m **0P0* Rotate Left Circular m=m<-
RLCA --0-0* Rotate Left Circular A=A<-
RLD **0P0- Rotate Left 4 bits {A,[HL]}={A,[HL]}<- ##

RR m **0P0* Rotate Right m=->{CY,m}
RRA --0-0* Rotate Right Acc. A=->{CY,A}
RRC m **0P0* Rotate Right Circular m=->m
RRCA --0-0* Rotate Right Circular A=->A
RRD **0P0- Rotate Right 4 bits {A,[HL]}=->{A,[HL]} ##
RST p ------ Restart (p=0H,8H,10H,...,38H)
SBC A,s ***V1* Subtract with Carry A=A-s-CY
SBC HL,ss **?V1* Subtract with Carry HL=HL-ss-CY
SCF --0-01 Set Carry Flag CY=1
SET b,m ------ Set bit m=mv{2^b}

SLA m **0P0* Shift Left Arithmetic m=m*2
SRA m **0P0* Shift Right Arith. m=m/2
SRL m **0P0* Shift Right Logical m=->{0,m,CY}
SUB s ***V1* Subtract A=A-s
XOR s ***P00 Logical Exclusive OR A=Axs

---------------------------------------------------------------------------

C'est tout pour cette fois. Si vous avez des commentaires, des questions ou juste souhaitez contribuer par un programme ou de l'information, mailez-moi, Magnus Hagander (mha@ticalc.org).

Dernière mise à jour: 04-03-95, 15:30.