h3 8080 assembler instructions for Z80 opcodes
p This table lists the 8080 assembler syntax for the additional opcodes of the Z80 cpu.
p They were rarely used, because people quickly switched over to the much more readable Zilog Z80 mnemonics. But there were some 8080 assemblers which added the new Z80 opcodes using 'their' syntax. It is absolutely not recommended to write new Z80 programs using 8080 assembler syntax, not even for writing new 8080 programs. Use Zilog Z80 syntax (the default for any Z80 assembler) instead.
p Most mnemonics are taken from the CROSS manual except the following:
I doubt these were ever used…
pre RLCR r CROSS-Doc: used RLC which is already used for RLCA, also deviation from naming scheme
RRCR r CROSS-Doc: used RRC which is already used for RRCA, also deviation from naming scheme
OTDR CROSS-Doc: used OUTDR which is a 5 letter word
OTIR CROSS-Doc: used OUTIR which is a 5 letter word
DADX rr CROSS-Doc: no opcode for ADD IX,rr
DADY rr CROSS-Doc: no opcode for ADD IY,rr
PCIX CROSS-Doc: no opcode for JP IX
PCIY CROSS-Doc: no opcode for JP IY
INC r CROSS-Doc: no opcode for IN r,(c)
OUTC r CROSS-Doc: no opcode for OUT (c),r
STAR CROSS-Doc: no opcode for LD R,A
LDAI CROSS-Doc: no opcode for LD A,I
LDAR CROSS-Doc: no opcode for LD A,R
p Some opcodes were extended to be used with dis(X) and dis(Y) as well.
p The new registers I, R were not accessed by name but with dedicated mnemonics.
p The index registers were abbreviated X and Y and an access (IX+dis) was written as dis(X).
h5 New mnemonics
pre 8080 syntax Z80 syntax
DJNZ dis djnz dis
JRZ dis jr z,dis
JRNZ dis jr nz,dis
JRC dis jr c,dis
JRNC dis jr nc,dis
JMPR dis jr dis
EXX exx
EXAF ex af,af'
XTIX ex ix,(sp)
XTIY ex iy,(sp)
PCIX jp ix
PCIY jp iy
CCD cpd
CCDR cpdr
CCI cpi
CCIR cpir
LDI ldi
LDIR ldir
LDD ldd
LDDR lddr
IND ind
INDR indr
INI ini
INIR inir
OUTD outd
OUTI outi
OTDR otdr note: CROSS used OUTDR
OTIR otir note: CROSS used OUTIR
STAI ld i,a
STAR ld r,a
LDAI ld a,i
LDAR ld a,r
IM0 im 0
IM1 im 1
IM2 im 2
RETN retn
RETI reti
RLD rld
RRD rrd
NEG neg
SPIX ld sp,ix
SPIY ld sp,iy
SBCD NN ld (NN),bc named acc. to SHLD; note: *not* sbc!
SDED NN ld (NN),de ""
SSPD NN ld (NN),sp ""
SIXD NN ld (NN),ix ""
SIYD NN ld (NN),iy ""
LBCD NN ld bc,(NN) named acc. to LHLD
LDED NN ld de,(NN) ""
LSPD NN ld sp,(NN) ""
LIXD NN ld ix,(NN) ""
LIYD NN ld iy,(NN) ""
INC R in r,(c) R = B C D E H L A; note: *not* inc!
INP R in r,(c) ""
OUTC R out (c),r R = B C D E H L A
OUTP R out (c),r ""
DADC R adc hl,rr R = B D H SP
DSBC R sbc hl,rr R = B D H SP
DADX R add ix,rr R = B D X SP
DADY R add iy,rr R = B D Y SP
RES N,R res n,r N = [0…7]; R = B C D E H L M A dis(X) dis(Y)
SET N,R set n,r ""
BIT N,R bit n,r ""
SLAR R sla r R = B C D E H L M A dis(X) dis(Y)
SRLR R srl r ""
SRAR R sra r ""
RALR R rl r ""
RARR R rr r ""
RRCR R rrc r ""
RLCR R rlc r ""
h5 Existing mnemonics
p Existing 8080 mnemonics which now also can be used with index registers
pre 8080 syntax Z80 syntax
ADD R add a,r R = B C D E H L M A dis(X) dis(Y)
ADC R adc a,r ""
SUB R sub a,r ""
SBB R sbc a,r ""
ANA R and r ""
ORA R or r ""
XRA R xor r ""
CMP R cmp r ""
INR R inc r ""
DCR R dec r ""
MVI R,N ld r,N ""
MOV R,R lr r,r ""; M, dis(X) or dis(Y) can only occur on one side
DCX R dec rr R = B D H SP X Y
INX R inc rr ""
LXI R ld rr,NN ""
PUSH R push rr R = B D H PSW X Y
POP R pop rr ""