mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 02:29:36 +02:00
399 lines
8.8 KiB
Plaintext
399 lines
8.8 KiB
Plaintext
; legend:
|
|
; r - 8-bit register: A/B/C/D/E/H/L
|
|
; r' - 8-bit register: A/B/C/D/E/H/L
|
|
; b - 3-bit immediate value (bit number: [0..7])
|
|
; n - 8-bit immediate value
|
|
; p - immediate value in [$00,$08,$10,$18,$20,$28,$30,$38]
|
|
; e - 8-bit relative jump offset
|
|
; nn - 16-bit immediate value
|
|
; 0 - the immediate value 0
|
|
; 1 - the immediate value 1
|
|
; 2 - the immediate value 2
|
|
; cc - condition: NZ/Z/NC/C/PO/PE/P/M
|
|
; C - condition C
|
|
; NC - condition NC
|
|
; Z - condition Z
|
|
; NZ - condition NZ
|
|
; dd - 16-bit register pair: BC/DE/HL/SP
|
|
; qq - 16-bit register pair: BC/DE/HL/AF
|
|
; pp - 16-bit register pair: BC/DE/IX/SP
|
|
; rr - 16-bit register pair: BC/DE/IY/SP
|
|
; A - register A
|
|
; I - register I
|
|
; R - register R
|
|
; IX - register IX
|
|
; IY - register IY
|
|
; SP - register SP
|
|
; DE - 16-bit register pair DE
|
|
; HL - 16-bit register pair HL
|
|
; AF - 16-bit register pair AF
|
|
; AF' - alternate register set, 16-bit register pair AF'
|
|
; (C) - implied parameter of the IN and OUT instructions
|
|
; (n) - 8-bit immediate port number for the IN and OUT instructions
|
|
; (nn) - memory contents at address (nn = 16-bit immediate address)
|
|
; (BC) - memory contents at address in register BC
|
|
; (DE) - memory contents at address in register DE
|
|
; (HL) - memory contents at address in register HL
|
|
; (SP) - memory contents at address in register SP
|
|
; (IX) - memory contents at address in register IX
|
|
; (IY) - memory contents at address in register IY
|
|
; (IX+d) - memory contents at address in register IX+d, d is in [-128..127]
|
|
; (IY+d) - memory contents at address in register IY+d, d is in [-128..127]
|
|
|
|
[None]
|
|
void void
|
|
|
|
[ADC]
|
|
A,r %10001rrr
|
|
A,n $CE,n
|
|
A,(HL) $8E
|
|
A,(IX+d) $DD,$8E,d
|
|
A,(IY+d) $FD,$8E,d
|
|
HL,dd $ED,%01dd1010
|
|
|
|
[ADD]
|
|
A,r %10000rrr
|
|
A,n $C6,n
|
|
A,(HL) $86
|
|
A,(IX+d) $DD,$86,d
|
|
A,(IY+d) $FD,$86,d
|
|
HL,dd %00dd1001
|
|
IX,pp $DD,%00pp1001
|
|
IY,rr $FD,%00rr1001
|
|
|
|
[AND]
|
|
A,r %10100rrr
|
|
A,n $E6,n
|
|
A,(HL) $A6
|
|
A,(IX+d) $DD,$A6,d
|
|
A,(IY+d) $FD,$A6,d
|
|
|
|
[BIT]
|
|
b,r $CB,%01bbbrrr
|
|
b,(HL) $CB,%01bbb110
|
|
b,(IX+d) $DD,$CB,d,%01bbb110
|
|
b,(IY+d) $FD,$CB,d,%01bbb110
|
|
|
|
[CALL]
|
|
nn $CD,nn
|
|
cc,nn %11ccc100,nn
|
|
|
|
[CCF]
|
|
void $3F
|
|
|
|
[CP]
|
|
A,r %10111rrr
|
|
A,n $FE,n
|
|
A,(HL) $BE
|
|
A,(IX+d) $DD,$BE,d
|
|
A,(IY+d) $FD,$BE,d
|
|
|
|
[CPD]
|
|
void $ED,$A9
|
|
|
|
[CPDR]
|
|
void $ED,$B9
|
|
|
|
[CPI]
|
|
void $ED,$A1
|
|
|
|
[CPIR]
|
|
void $ED,$B1
|
|
|
|
[CPL]
|
|
void $2F
|
|
|
|
[DAA]
|
|
void $27
|
|
|
|
[DEC]
|
|
r %00rrr101
|
|
(HL) $35
|
|
(IX+d) $DD,$35,d
|
|
(IY+d) $FD,$35,d
|
|
dd %00dd1011
|
|
IX $DD,$2B
|
|
IY $FD,$2B
|
|
|
|
[DI]
|
|
void $F3
|
|
|
|
[DJNZ]
|
|
e $10,e
|
|
|
|
[EI]
|
|
void $FB
|
|
|
|
[EX]
|
|
DE,HL $EB
|
|
AF,AF' $08
|
|
(SP),HL $E3
|
|
(SP),IX $DD,$E3
|
|
(SP),IY $FD,$E3
|
|
|
|
[EXX]
|
|
void $D9
|
|
|
|
[HALT]
|
|
void $76
|
|
|
|
[IM]
|
|
0 $ED,$46
|
|
1 $ED,$56
|
|
2 $ED,$5E
|
|
|
|
[IN]
|
|
A,(n) $DB,n
|
|
r,(C) $ED,%01rrr000
|
|
|
|
[INC]
|
|
r %00rrr100
|
|
(HL) $34
|
|
(IX+d) $DD,$34,d
|
|
(IY+d) $FD,$34,d
|
|
dd %00dd0011
|
|
IX $DD,$23
|
|
IY $FD,$23
|
|
|
|
[IND]
|
|
void $ED,$AA
|
|
|
|
[INDR]
|
|
void $ED,$BA
|
|
|
|
[INI]
|
|
void $ED,$A2
|
|
|
|
[INIR]
|
|
void $ED,$B2
|
|
|
|
[JP]
|
|
nn $C3,nn
|
|
cc,nn %11ccc010,nn
|
|
(HL) $E9
|
|
(IX) $DD,$E9
|
|
(IY) $FD,$E9
|
|
|
|
[JR]
|
|
e $18,e
|
|
C,e $38,e
|
|
NC,e $30,e
|
|
Z,e $28,e
|
|
NZ,e $20,e
|
|
|
|
; pseudo instruction - translated to JR if possible (i.e. the target is within
|
|
; -126..+129 bytes range and an appropriate form of the JR instruction exists),
|
|
; otherwise to JP
|
|
[JRJP]
|
|
; JR
|
|
e $18,e
|
|
C,e $38,e
|
|
NC,e $30,e
|
|
Z,e $28,e
|
|
NZ,e $20,e
|
|
; JP
|
|
nn $C3,nn
|
|
cc,nn %11ccc010,nn
|
|
(HL) $E9
|
|
(IX) $DD,$E9
|
|
(IY) $FD,$E9
|
|
|
|
[LD]
|
|
r,r' %01rrrr'r'r'
|
|
r,n %00rrr110,n
|
|
r,(HL) %01rrr110
|
|
r,(IX+d) $DD,%01rrr110,d
|
|
r,(IY+d) $FD,%01rrr110,d
|
|
(HL),r %01110rrr
|
|
(IX+d),r $DD,%01110rrr,d
|
|
(IY+d),r $FD,%01110rrr,d
|
|
(HL),n $36,n
|
|
(IX+d),n $DD,$36,d,n
|
|
(IY+d),n $FD,$36,d,n
|
|
A,(BC) $0A
|
|
A,(DE) $1A
|
|
A,(nn) $3A,nn
|
|
(BC),A $02
|
|
(DE),A $12
|
|
(nn),A $32,nn
|
|
A,I $ED,$57
|
|
A,R $ED,$5F
|
|
I,A $ED,$47
|
|
R,A $ED,$4F
|
|
dd,nn %00dd0001,nn
|
|
IX,nn $DD,$21,nn
|
|
IY,nn $FD,$21,nn
|
|
HL,(nn) $2A,nn
|
|
dd,(nn) $ED,%01dd1011,nn
|
|
IX,(nn) $DD,$2A,nn
|
|
IY,(nn) $FD,$2A,nn
|
|
(nn),HL $22,nn
|
|
(nn),dd $ED,%01dd0011,nn
|
|
(nn),IX $DD,$22,nn
|
|
(nn),IY $FD,$22,nn
|
|
SP,HL $F9
|
|
SP,IX $DD,$F9
|
|
SP,IY $FD,$F9
|
|
|
|
[LDD]
|
|
void $ED,$A8
|
|
|
|
[LDDR]
|
|
void $ED,$B8
|
|
|
|
[LDI]
|
|
void $ED,$A0
|
|
|
|
[LDIR]
|
|
void $ED,$B0
|
|
|
|
[NEG]
|
|
void $ED,$44
|
|
|
|
[NOP]
|
|
void $00
|
|
|
|
[OR]
|
|
A,r %10110rrr
|
|
A,n $F6,n
|
|
A,(HL) $B6
|
|
A,(IX+d) $DD,$B6,d
|
|
A,(IY+d) $FD,$B6,d
|
|
|
|
[OTDR]
|
|
void $ED,$BB
|
|
|
|
[OTIR]
|
|
void $ED,$B3
|
|
|
|
[OUT]
|
|
(n),A $D3,n
|
|
(C),r $ED,%01rrr001
|
|
|
|
[OUTD]
|
|
void $ED,$AB
|
|
|
|
[OUTI]
|
|
void $ED,$A3
|
|
|
|
[POP]
|
|
qq %11qq0001
|
|
IX $DD,$E1
|
|
IY $FD,$E1
|
|
|
|
[PUSH]
|
|
qq %11qq0101
|
|
IX $DD,$E5
|
|
IY $FD,$E5
|
|
|
|
[RES]
|
|
b,r $CB,%10bbbrrr
|
|
b,(HL) $CB,%10bbb110
|
|
b,(IX+d) $DD,$CB,d,%10bbb110
|
|
b,(IY+d) $FD,$CB,d,%10bbb110
|
|
|
|
[RET]
|
|
void $C9
|
|
cc %11ccc000
|
|
|
|
[RETI]
|
|
void $ED,$4D
|
|
|
|
[RETN]
|
|
void $ED,$45
|
|
|
|
[RL]
|
|
r $CB,%00010rrr
|
|
(HL) $CB,$16
|
|
(IX+d) $DD,$CB,d,$16
|
|
(IY+d) $FD,$CB,d,$16
|
|
|
|
[RLA]
|
|
void $17
|
|
|
|
[RLC]
|
|
r $CB,%00000rrr
|
|
(HL) $CB,$06
|
|
(IX+d) $DD,$CB,d,$06
|
|
(IY+d) $FD,$CB,d,$06
|
|
|
|
[RLCA]
|
|
void $07
|
|
|
|
[RLD]
|
|
void $ED,$6F
|
|
|
|
[RR]
|
|
r $CB,%00001rrr
|
|
(HL) $CB,$1E
|
|
(IX+d) $DD,$CB,d,$1E
|
|
(IY+d) $FD,$CB,d,$1E
|
|
|
|
[RRA]
|
|
void $1F
|
|
|
|
[RRC]
|
|
r $CB,%00001rrr
|
|
(HL) $CB,$0E
|
|
(IX+d) $DD,$CB,d,$0E
|
|
(IY+d) $FD,$CB,d,$0E
|
|
|
|
[RRCA]
|
|
void $0F
|
|
|
|
[RRD]
|
|
void $ED,$67
|
|
|
|
[RST]
|
|
p %11ppp111
|
|
|
|
[SBC]
|
|
A,r %10011rrr
|
|
A,n $DE,n
|
|
A,(HL) $9E
|
|
A,(IX+d) $DD,$9E,d
|
|
A,(IY+d) $FD,$9E,d
|
|
HL,dd $ED,%01dd0010
|
|
|
|
[SCF]
|
|
void $37
|
|
|
|
[SET]
|
|
b,r $CB,%11bbbrrr
|
|
b,(HL) $CB,%11bbb110
|
|
b,(IX+d) $DD,$CB,d,%11bbb110
|
|
b,(IY+d) $FD,$CB,d,%11bbb110
|
|
|
|
[SLA]
|
|
r $CB,%00100rrr
|
|
(HL) $CB,$26
|
|
(IX+d) $DD,$CB,d,$26
|
|
(IY+d) $FD,$CB,d,$26
|
|
|
|
[SRA]
|
|
r $CB,%00101rrr
|
|
(HL) $CB,$2E
|
|
(IX+d) $DD,$CB,d,$2E
|
|
(IY+d) $FD,$CB,d,$2E
|
|
|
|
[SRL]
|
|
r $CB,%00111rrr
|
|
(HL) $CB,$3E
|
|
(IX+d) $DD,$CB,d,$3E
|
|
(IY+d) $FD,$CB,d,$3E
|
|
|
|
[SUB]
|
|
A,r %10010rrr
|
|
A,n $D6,n
|
|
A,(HL) $96
|
|
A,(IX+d) $DD,$96,d
|
|
A,(IY+d) $FD,$96,d
|
|
|
|
[XOR]
|
|
A,r %10101rrr
|
|
A,n $EE,n
|
|
A,(HL) $AE
|
|
A,(IX+d) $DD,$AE,d
|
|
A,(IY+d) $FD,$AE,d
|
|
|