Register |
Description |
A |
A 8 bit register |
B |
B 8 bit register |
C |
C 8 bit register |
D |
D 8 bit register |
E |
E 8 bit register |
H |
H 8 bit register |
L |
L 8 bit register |
SP |
Stack pointer (16bit) |
PC |
Program counter (16bit) |
B |
BC as 16 bit register |
D |
DE as 16 bit register |
H |
HL as 16 bit register |
M |
memory pointed by (HL) |
Flag |
Description |
S |
Sign flag; set to bit 7 of result |
Z |
Zero flag; set if the result was zero, reset otherwise |
K |
Undocumented signed Underflow Indicator (UI/X5) and comparison flag |
A |
Auxiliary Carry (AC) flag; set to carry out of bit 3 in result |
P |
Parity flag; set if the number of bits in the result is even, and reset if it's odd |
V |
Undocumented signed overflow flag |
C |
Carry flag; set to carry out of bit 7 in result |
Mode |
Description |
abs |
absolute address |
imm |
immediate (8 or 16bit) |
imp |
implicit |
ind_reg |
indirect via register |
reg |
register or register pair |
Group |
Description |
arith |
Arithmetic instructions |
branch |
Branch and program flow instructions |
control |
I/O and machine control instructions |
data |
Data transfer instructions |
illegal |
Illegal/undocumented instructions |
logic |
Logical instructions |
stack |
Stack instructions |
OpCode |
Inst |
Param |
Group |
Mode |
Length |
Cycles |
States |
SZKA-PVC |
Example |
Description |
00 |
NOP |
|
control |
imp |
1 |
1 |
4 |
........ |
NOP |
No Operation |
01 |
LXI |
B,d16 |
data |
imm |
3 |
3 |
10 |
........ |
LXI B,d16 |
B <- byte_3; C <- byte_2 |
02 |
STAX |
B |
data |
ind_reg |
1 |
2 |
7 |
........ |
STAX B |
(BC) <- A |
03 |
INX |
B |
arith |
reg |
1 |
1 |
6 |
..K..... |
INX B |
BC <- BC + 1 |
04 |
INR |
B |
arith |
reg |
1 |
1 |
4 |
SZKA.PV. |
INR B |
B <- B + 1 |
05 |
DCR |
B |
arith |
reg |
1 |
1 |
4 |
SZ.A.PV. |
DCR B |
B <- B - 1 |
06 |
MVI |
B,d8 |
data |
imm |
2 |
2 |
7 |
........ |
MVI B,d8 |
B <- byte_2 |
07 |
RLC |
|
logic |
imp |
1 |
1 |
4 |
......VC |
RLC |
A <- A << 1; bit 0 <- prev bit 7; CY <- prev bit 7 |
08 |
DSUB |
|
arith |
reg |
1 |
3 |
10 |
SZKA.PVC |
DSUB |
HL <- HL - BC |
09 |
DAD |
B |
arith |
reg |
1 |
3 |
10 |
......VC |
DAD B |
HL <- HL + BC |
0A |
LDAX |
B |
data |
ind_reg |
1 |
2 |
7 |
........ |
LDAX B |
A <- (BC) |
0B |
DCX |
B |
arith |
reg |
1 |
1 |
6 |
..K..... |
DCX B |
BC <- BC - 1 |
0C |
INR |
C |
arith |
reg |
1 |
1 |
4 |
SZKA.PV. |
INR C |
C <- C + 1 |
0D |
DCR |
C |
arith |
reg |
1 |
1 |
4 |
SZ.A.PV. |
DCR C |
C <- C - 1 |
0E |
MVI |
C,d8 |
data |
imm |
2 |
2 |
7 |
........ |
MVI C,d8 |
C <- byte_2 |
0F |
RRC |
|
logic |
imp |
1 |
1 |
4 |
......0C |
RRC |
A <- A >> 1; bit 7 <- prev bit 0; CY <- prev bit 0 |
10 |
ARHL |
|
logic |
reg |
1 |
2 |
7 |
.......C |
ARHL |
Cy <- H7 ; HL <- HL >> 1 ; H7 <- Cy |
11 |
LXI |
D,d16 |
data |
imm |
3 |
3 |
10 |
........ |
LXI D,d16 |
D <- byte_3; E <- byte_2 |
12 |
STAX |
D |
data |
ind_reg |
1 |
2 |
7 |
........ |
STAX D |
(DE) <- A |
13 |
INX |
D |
arith |
reg |
1 |
1 |
6 |
..K..... |
INX D |
DE <- DE + 1 |
14 |
INR |
D |
arith |
reg |
1 |
1 |
4 |
SZKA.PV. |
INR D |
D <- D + 1 |
15 |
DCR |
D |
arith |
reg |
1 |
1 |
4 |
SZ.A.PV. |
DCR D |
D <- D - 1 |
16 |
MVI |
D,d8 |
data |
imm |
2 |
2 |
7 |
........ |
MVI D,d8 |
D <- byte_2 |
17 |
RAL |
|
logic |
imp |
1 |
1 |
4 |
......VC |
RAL |
A <- A << 1; bit 0 <- prev CY; CY <- prev bit 7 |
18 |
RDEL |
|
logic |
reg |
1 |
3 |
10 |
......VC |
RDEL |
Cy <- D7 ; DE <- DE << 1; E0 <- 0 |
19 |
DAD |
D |
arith |
reg |
1 |
3 |
10 |
......VC |
DAD D |
HL <- HL + DE |
1A |
LDAX |
D |
data |
ind_reg |
1 |
2 |
7 |
........ |
LDAX D |
A <- (DE) |
1B |
DCX |
D |
arith |
reg |
1 |
1 |
6 |
..K..... |
DCX D |
DE <- DE - 1 |
1C |
INR |
E |
arith |
reg |
1 |
1 |
4 |
SZKA.PV. |
INR E |
E <- E + 1 |
1D |
DCR |
E |
arith |
reg |
1 |
1 |
4 |
SZ.A.PV. |
DCR E |
E <- E - 1 |
1E |
MVI |
E,d8 |
data |
imm |
2 |
2 |
7 |
........ |
MVI E,d8 |
E <- byte_2 |
1F |
RAR |
|
logic |
imp |
1 |
1 |
4 |
......0C |
RAR |
A <- A >> 1; bit 7 <- prev bit 7; CY <- prev bit 0 |
20 |
RIM |
|
control |
imp |
1 |
3 |
10 |
........ |
RIM |
Read Interrupt Mask and serial data into A |
21 |
LXI |
H,d16 |
data |
imm |
3 |
3 |
10 |
........ |
LXI H,d16 |
H <- byte_3; L <- byte_2 |
22 |
SHLD |
a16 |
data |
abs |
3 |
5 |
16 |
........ |
SHLD a16 |
(adr) <- L; (adr + 1) <- H |
23 |
INX |
H |
arith |
reg |
1 |
1 |
6 |
..K..... |
INX H |
HL <- HL + 1 |
24 |
INR |
H |
arith |
reg |
1 |
1 |
4 |
SZKA.PV. |
INR H |
H <- H + 1 |
25 |
DCR |
H |
arith |
reg |
1 |
1 |
4 |
SZ.A.PV. |
DCR H |
H <- H - 1 |
26 |
MVI |
H,d8 |
data |
imm |
2 |
2 |
7 |
........ |
MVI H,d8 |
H <- byte_2 |
27 |
DAA |
|
logic |
imp |
1 |
1 |
4 |
SZKA.PVC |
DAA |
Special |
28 |
LDHI |
d8 |
arith |
imm |
2 |
3 |
10 |
........ |
LDHI d8 |
DE <- HL + byte_2 |
29 |
DAD |
H |
arith |
reg |
1 |
3 |
10 |
......VC |
DAD H |
HL <- HL + HL |
2A |
LHLD |
a16 |
data |
abs |
3 |
5 |
16 |
........ |
LHLD a16 |
L <- (adr); H <- (adr + 1) |
2B |
DCX |
H |
arith |
reg |
1 |
1 |
6 |
..K..... |
DCX H |
HL <- HL - 1 |
2C |
INR |
L |
arith |
reg |
1 |
1 |
4 |
SZKA.PV. |
INR L |
L <- L + 1 |
2D |
DCR |
L |
arith |
reg |
1 |
1 |
4 |
SZ.A.PV. |
DCR L |
L <- L - 1 |
2E |
MVI |
L,d8 |
data |
imm |
2 |
2 |
7 |
........ |
MVI L,d8 |
L <- byte_2 |
2F |
CMA |
|
logic |
imp |
1 |
1 |
4 |
..1...1. |
CMA |
A <- !A |
30 |
SIM |
|
control |
imp |
1 |
1 |
4 |
........ |
SIM |
Set Interrupt Mask and serial data from A |
31 |
LXI |
SP,d16 |
data |
imm |
3 |
3 |
10 |
........ |
LXI SP,d16 |
SP.hi <- byte_3; SP.lo <- byte_2 |
32 |
STA |
a16 |
data |
abs |
3 |
4 |
13 |
........ |
STA a16 |
(adr) <- A |
33 |
INX |
SP |
arith |
reg |
1 |
1 |
6 |
..K..... |
INX SP |
SP <- SP + 1 |
34 |
INR |
M |
arith |
ind_reg |
1 |
3 |
10 |
SZKA.PV. |
INR M |
(HL) <- (HL) + 1 |
35 |
DCR |
M |
arith |
ind_reg |
1 |
3 |
10 |
SZ.A.PV. |
DCR M |
(HL) <- (HL) - 1 |
36 |
MVI |
M,d8 |
data |
ind_reg |
2 |
3 |
10 |
........ |
MVI M,d8 |
(HL) <- byte_2 |
37 |
STC |
|
logic |
imp |
1 |
1 |
4 |
.......1 |
STC |
CY <- 1 |
38 |
LDSI |
d8 |
arith |
imm |
2 |
3 |
10 |
........ |
LDSI d8 |
DE <- SP + byte_2 |
39 |
DAD |
SP |
arith |
reg |
1 |
3 |
10 |
......VC |
DAD SP |
HL <- HL + SP |
3A |
LDA |
a16 |
data |
abs |
3 |
4 |
13 |
........ |
LDA a16 |
A <- (adr) |
3B |
DCX |
SP |
arith |
reg |
1 |
1 |
6 |
..K..... |
DCX SP |
SP <- SP - 1 |
3C |
INR |
A |
arith |
reg |
1 |
1 |
4 |
SZKA.PV. |
INR A |
A <- A + 1 |
3D |
DCR |
A |
arith |
reg |
1 |
1 |
4 |
SZ.A.PV. |
DCR A |
A <- A - 1 |
3E |
MVI |
A,d8 |
data |
imm |
2 |
2 |
7 |
........ |
MVI A,d8 |
A <- byte_2 |
3F |
CMC |
|
logic |
imp |
1 |
1 |
4 |
.......C |
CMC |
CY <- !CY |
40 |
MOV |
B,B |
data |
reg |
1 |
1 |
4 |
........ |
MOV B,B |
B <- B |
41 |
MOV |
B,C |
data |
reg |
1 |
1 |
4 |
........ |
MOV B,C |
B <- C |
42 |
MOV |
B,D |
data |
reg |
1 |
1 |
4 |
........ |
MOV B,D |
B <- D |
43 |
MOV |
B,E |
data |
reg |
1 |
1 |
4 |
........ |
MOV B,E |
B <- E |
44 |
MOV |
B,H |
data |
reg |
1 |
1 |
4 |
........ |
MOV B,H |
B <- H |
45 |
MOV |
B,L |
data |
reg |
1 |
1 |
4 |
........ |
MOV B,L |
B <- L |
46 |
MOV |
B,M |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV B,M |
B <- (HL) |
47 |
MOV |
B,A |
data |
reg |
1 |
1 |
4 |
........ |
MOV B,A |
B <- A |
48 |
MOV |
C,B |
data |
reg |
1 |
1 |
4 |
........ |
MOV C,B |
C <- B |
49 |
MOV |
C,C |
data |
reg |
1 |
1 |
4 |
........ |
MOV C,C |
C <- C |
4A |
MOV |
C,D |
data |
reg |
1 |
1 |
4 |
........ |
MOV C,D |
C <- D |
4B |
MOV |
C,E |
data |
reg |
1 |
1 |
4 |
........ |
MOV C,E |
C <- E |
4C |
MOV |
C,H |
data |
reg |
1 |
1 |
4 |
........ |
MOV C,H |
C <- H |
4D |
MOV |
C,L |
data |
reg |
1 |
1 |
4 |
........ |
MOV C,L |
C <- L |
4E |
MOV |
C,M |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV C,M |
C <- (HL) |
4F |
MOV |
C,A |
data |
reg |
1 |
1 |
4 |
........ |
MOV C,A |
C <- A |
50 |
MOV |
D,B |
data |
reg |
1 |
1 |
4 |
........ |
MOV D,B |
D <- B |
51 |
MOV |
D,C |
data |
reg |
1 |
1 |
4 |
........ |
MOV D,C |
D <- C |
52 |
MOV |
D,D |
data |
reg |
1 |
1 |
4 |
........ |
MOV D,D |
D <- D |
53 |
MOV |
D,E |
data |
reg |
1 |
1 |
4 |
........ |
MOV D,E |
D <- E |
54 |
MOV |
D,H |
data |
reg |
1 |
1 |
4 |
........ |
MOV D,H |
D <- H |
55 |
MOV |
D,L |
data |
reg |
1 |
1 |
4 |
........ |
MOV D,L |
D <- L |
56 |
MOV |
D,M |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV D,M |
D <- (HL) |
57 |
MOV |
D,A |
data |
reg |
1 |
1 |
4 |
........ |
MOV D,A |
D <- A |
58 |
MOV |
E,B |
data |
reg |
1 |
1 |
4 |
........ |
MOV E,B |
E <- B |
59 |
MOV |
E,C |
data |
reg |
1 |
1 |
4 |
........ |
MOV E,C |
E <- C |
5A |
MOV |
E,D |
data |
reg |
1 |
1 |
4 |
........ |
MOV E,D |
E <- D |
5B |
MOV |
E,E |
data |
reg |
1 |
1 |
4 |
........ |
MOV E,E |
E <- E |
5C |
MOV |
E,H |
data |
reg |
1 |
1 |
4 |
........ |
MOV E,H |
E <- H |
5D |
MOV |
E,L |
data |
reg |
1 |
1 |
4 |
........ |
MOV E,L |
E <- L |
5E |
MOV |
E,M |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV E,M |
E <- (HL) |
5F |
MOV |
E,A |
data |
reg |
1 |
1 |
4 |
........ |
MOV E,A |
E <- A |
60 |
MOV |
H,B |
data |
reg |
1 |
1 |
4 |
........ |
MOV H,B |
H <- B |
61 |
MOV |
H,C |
data |
reg |
1 |
1 |
4 |
........ |
MOV H,C |
H <- C |
62 |
MOV |
H,D |
data |
reg |
1 |
1 |
4 |
........ |
MOV H,D |
H <- D |
63 |
MOV |
H,E |
data |
reg |
1 |
1 |
4 |
........ |
MOV H,E |
H <- E |
64 |
MOV |
H,H |
data |
reg |
1 |
1 |
4 |
........ |
MOV H,H |
H <- H |
65 |
MOV |
H,L |
data |
reg |
1 |
1 |
4 |
........ |
MOV H,L |
H <- L |
66 |
MOV |
H,M |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV H,M |
H <- (HL) |
67 |
MOV |
H,A |
data |
reg |
1 |
1 |
4 |
........ |
MOV H,A |
H <- A |
68 |
MOV |
L,B |
data |
reg |
1 |
1 |
4 |
........ |
MOV L,B |
L <- B |
69 |
MOV |
L,C |
data |
reg |
1 |
1 |
4 |
........ |
MOV L,C |
L <- C |
6A |
MOV |
L,D |
data |
reg |
1 |
1 |
4 |
........ |
MOV L,D |
L <- D |
6B |
MOV |
L,E |
data |
reg |
1 |
1 |
4 |
........ |
MOV L,E |
L <- E |
6C |
MOV |
L,H |
data |
reg |
1 |
1 |
4 |
........ |
MOV L,H |
L <- H |
6D |
MOV |
L,L |
data |
reg |
1 |
1 |
4 |
........ |
MOV L,L |
L <- L |
6E |
MOV |
L,M |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV L,M |
L <- (HL) |
6F |
MOV |
L,A |
data |
reg |
1 |
1 |
4 |
........ |
MOV L,A |
L <- A |
70 |
MOV |
M,B |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV M,B |
(HL) <- B |
71 |
MOV |
M,C |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV M,C |
(HL) <- C |
72 |
MOV |
M,D |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV M,D |
(HL) <- D |
73 |
MOV |
M,E |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV M,E |
(HL) <- E |
74 |
MOV |
M,H |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV M,H |
(HL) <- H |
75 |
MOV |
M,L |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV M,L |
(HL) <- L |
76 |
HLT |
|
control |
imp |
1 |
1 |
5 |
........ |
HLT |
Special |
77 |
MOV |
M,A |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV M,A |
(HL) <- A |
78 |
MOV |
A,B |
data |
reg |
1 |
1 |
4 |
........ |
MOV A,B |
A <- B |
79 |
MOV |
A,C |
data |
reg |
1 |
1 |
4 |
........ |
MOV A,C |
A <- C |
7A |
MOV |
A,D |
data |
reg |
1 |
1 |
4 |
........ |
MOV A,D |
A <- D |
7B |
MOV |
A,E |
data |
reg |
1 |
1 |
4 |
........ |
MOV A,E |
A <- E |
7C |
MOV |
A,H |
data |
reg |
1 |
1 |
4 |
........ |
MOV A,H |
A <- H |
7D |
MOV |
A,L |
data |
reg |
1 |
1 |
4 |
........ |
MOV A,L |
A <- L |
7E |
MOV |
A,M |
data |
ind_reg |
1 |
2 |
7 |
........ |
MOV A,M |
A <- (HL) |
7F |
MOV |
A,A |
data |
reg |
1 |
1 |
4 |
........ |
MOV A,A |
A <- A |
80 |
ADD |
B |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADD B |
A <- A + B |
81 |
ADD |
C |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADD C |
A <- A + C |
82 |
ADD |
D |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADD D |
A <- A + D |
83 |
ADD |
E |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADD E |
A <- A + E |
84 |
ADD |
H |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADD H |
A <- A + H |
85 |
ADD |
L |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADD L |
A <- A + L |
86 |
ADD |
M |
arith |
ind_reg |
1 |
2 |
7 |
SZKA.PVC |
ADD M |
A <- A + (HL) |
87 |
ADD |
A |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADD A |
A <- A + A |
88 |
ADC |
B |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADC B |
A <- A + B + CY |
89 |
ADC |
C |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADC C |
A <- A + C + CY |
8A |
ADC |
D |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADC D |
A <- A + D + CY |
8B |
ADC |
E |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADC E |
A <- A + E + CY |
8C |
ADC |
H |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADC H |
A <- A + H + CY |
8D |
ADC |
L |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADC L |
A <- A + L + CY |
8E |
ADC |
M |
arith |
ind_reg |
1 |
2 |
7 |
SZKA.PVC |
ADC M |
A <- A + (HL) + CY |
8F |
ADC |
A |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
ADC A |
A <- A + A + CY |
90 |
SUB |
B |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SUB B |
A <- A - B |
91 |
SUB |
C |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SUB C |
A <- A - C |
92 |
SUB |
D |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SUB D |
A <- A - D |
93 |
SUB |
E |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SUB E |
A <- A - E |
94 |
SUB |
H |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SUB H |
A <- A - H |
95 |
SUB |
L |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SUB L |
A <- A - L |
96 |
SUB |
M |
arith |
ind_reg |
1 |
2 |
7 |
SZKA.PVC |
SUB M |
A <- A - (HL) |
97 |
SUB |
A |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SUB A |
A <- A - A |
98 |
SBB |
B |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SBB B |
A <- A - B - CY |
99 |
SBB |
C |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SBB C |
A <- A - C - CY |
9A |
SBB |
D |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SBB D |
A <- A - D - CY |
9B |
SBB |
E |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SBB E |
A <- A - E - CY |
9C |
SBB |
H |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SBB H |
A <- A - H - CY |
9D |
SBB |
L |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SBB L |
A <- A - L - CY |
9E |
SBB |
M |
arith |
ind_reg |
1 |
2 |
7 |
SZKA.PVC |
SBB M |
A <- A - (HL) - CY |
9F |
SBB |
A |
arith |
reg |
1 |
1 |
4 |
SZKA.PVC |
SBB A |
A <- A - A - CY |
A0 |
ANA |
B |
logic |
reg |
1 |
1 |
4 |
SZK1.P00 |
ANA B |
A <- A & B |
A1 |
ANA |
C |
logic |
reg |
1 |
1 |
4 |
SZK1.P00 |
ANA C |
A <- A & C |
A2 |
ANA |
D |
logic |
reg |
1 |
1 |
4 |
SZK1.P00 |
ANA D |
A <- A & D |
A3 |
ANA |
E |
logic |
reg |
1 |
1 |
4 |
SZK1.P00 |
ANA E |
A <- A & E |
A4 |
ANA |
H |
logic |
reg |
1 |
1 |
4 |
SZK1.P00 |
ANA H |
A <- A & H |
A5 |
ANA |
L |
logic |
reg |
1 |
1 |
4 |
SZK1.P00 |
ANA L |
A <- A & L |
A6 |
ANA |
M |
logic |
ind_reg |
1 |
2 |
7 |
SZK1.P00 |
ANA M |
A <- A & (HL) |
A7 |
ANA |
A |
logic |
reg |
1 |
1 |
4 |
SZK1.P00 |
ANA A |
A <- A & A |
A8 |
XRA |
B |
logic |
reg |
1 |
1 |
4 |
SZK0.P.0 |
XRA B |
A <- A ^ B |
A9 |
XRA |
C |
logic |
reg |
1 |
1 |
4 |
SZK0.P.0 |
XRA C |
A <- A ^ C |
AA |
XRA |
D |
logic |
reg |
1 |
1 |
4 |
SZK0.P.0 |
XRA D |
A <- A ^ D |
AB |
XRA |
E |
logic |
reg |
1 |
1 |
4 |
SZK0.P.0 |
XRA E |
A <- A ^ E |
AC |
XRA |
H |
logic |
reg |
1 |
1 |
4 |
SZK0.P.0 |
XRA H |
A <- A ^ H |
AD |
XRA |
L |
logic |
reg |
1 |
1 |
4 |
SZK0.P.0 |
XRA L |
A <- A ^ L |
AE |
XRA |
M |
logic |
ind_reg |
1 |
2 |
7 |
SZK0.P.0 |
XRA M |
A <- A ^ (HL) |
AF |
XRA |
A |
logic |
reg |
1 |
1 |
4 |
SZK0.P.0 |
XRA A |
A <- A ^ A |
B0 |
ORA |
B |
logic |
reg |
1 |
1 |
4 |
SZK0.P00 |
ORA B |
A <- A |
B1 |
ORA |
C |
logic |
reg |
1 |
1 |
4 |
SZK0.P00 |
ORA C |
A <- A |
B2 |
ORA |
D |
logic |
reg |
1 |
1 |
4 |
SZK0.P00 |
ORA D |
A <- A |
B3 |
ORA |
E |
logic |
reg |
1 |
1 |
4 |
SZK0.P00 |
ORA E |
A <- A |
B4 |
ORA |
H |
logic |
reg |
1 |
1 |
4 |
SZK0.P00 |
ORA H |
A <- A |
B5 |
ORA |
L |
logic |
reg |
1 |
1 |
4 |
SZK0.P00 |
ORA L |
A <- A |
B6 |
ORA |
M |
logic |
ind_reg |
1 |
2 |
7 |
SZK0.P00 |
ORA M |
A <- A |
B7 |
ORA |
A |
logic |
reg |
1 |
1 |
4 |
SZK0.P00 |
ORA A |
A <- A |
B8 |
CMP |
B |
logic |
reg |
1 |
1 |
4 |
SZKA.PVC |
CMP B |
A - B |
B9 |
CMP |
C |
logic |
reg |
1 |
1 |
4 |
SZKA.PVC |
CMP C |
A - C |
BA |
CMP |
D |
logic |
reg |
1 |
1 |
4 |
SZKA.PVC |
CMP D |
A - D |
BB |
CMP |
E |
logic |
reg |
1 |
1 |
4 |
SZKA.PVC |
CMP E |
A - E |
BC |
CMP |
H |
logic |
reg |
1 |
1 |
4 |
SZKA.PVC |
CMP H |
A - H |
BD |
CMP |
L |
logic |
reg |
1 |
1 |
4 |
SZKA.PVC |
CMP L |
A - L |
BE |
CMP |
M |
logic |
ind_reg |
1 |
2 |
7 |
SZKA.PVC |
CMP M |
A - (HL) |
BF |
CMP |
A |
logic |
reg |
1 |
1 |
4 |
SZKA.PVC |
CMP A |
A - A |
C0 |
RNZ |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RNZ |
if NZ, RET |
C1 |
POP |
B |
stack |
reg |
1 |
3 |
10 |
........ |
POP B |
C <- (SP); B <- (SP + 1); SP <- SP + 2 |
C2 |
JNZ |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JNZ a16 |
if NZ, PC <- adr |
C3 |
JMP |
a16 |
branch |
abs |
3 |
3 |
10 |
........ |
JMP a16 |
PC <- adr |
C4 |
CNZ |
a16 |
branch |
abs |
3 |
2/5 |
9/18 |
........ |
CNZ a16 |
if NZ, CALL adr |
C5 |
PUSH |
B |
stack |
reg |
1 |
3 |
13 |
........ |
PUSH B |
(SP - 2) <- C; (SP - 1) <- B; SP <- SP - 2 |
C6 |
ADI |
d8 |
arith |
imm |
2 |
2 |
7 |
SZKA.PVC |
ADI d8 |
A <- A + byte_2 |
C7 |
RST |
0 |
branch |
imp |
1 |
3 |
12 |
........ |
RST 0 |
CALL $0 |
C8 |
RZ |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RZ |
if Z, RET |
C9 |
RET |
|
branch |
imp |
1 |
3 |
10 |
........ |
RET |
PC.lo <- (SP); PC.hi <- (SP + 1); SP <- SP + 2 |
CA |
JZ |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JZ a16 |
if Z, PC <- adr |
CB |
RSTV |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RSTV |
Call $0040 if overflag (V) flag is set |
CC |
CZ |
a16 |
branch |
abs |
3 |
2/5 |
9/18 |
........ |
CZ a16 |
if Z, CALL adr |
CD |
CALL |
a16 |
branch |
abs |
3 |
5 |
18 |
........ |
CALL a16 |
(SP - 1) <- PC.hi; (SP - 2) <- PC.lo; SP <- SP - 2; PC <- adr |
CE |
ACI |
d8 |
arith |
imm |
2 |
2 |
7 |
SZKA.PVC |
ACI d8 |
A <- A + byte_2 + CY |
CF |
RST |
1 |
branch |
imp |
1 |
3 |
12 |
........ |
RST 1 |
CALL $8 |
D0 |
RNC |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RNC |
if NCY, RET |
D1 |
POP |
D |
stack |
reg |
1 |
3 |
10 |
........ |
POP D |
E <- (SP); D <- (SP + 1); SP <- SP + 2 |
D2 |
JNC |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JNC a16 |
if NCY, PC <- adr |
D3 |
OUT |
d8 |
control |
imm |
2 |
3 |
10 |
........ |
OUT d8 |
Special |
D4 |
CNC |
a16 |
branch |
abs |
3 |
2/5 |
9/18 |
........ |
CNC a16 |
if NCY, CALL adr |
D5 |
PUSH |
D |
stack |
reg |
1 |
3 |
13 |
........ |
PUSH D |
(SP - 2) <- E; (SP - 1) <- D; SP <- SP - 2 |
D6 |
SUI |
d8 |
arith |
imm |
2 |
2 |
7 |
SZKA.PVC |
SUI d8 |
A <- A - byte_2 |
D7 |
RST |
2 |
branch |
imp |
1 |
3 |
12 |
........ |
RST 2 |
CALL $10 |
D8 |
RC |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RC |
if CY, RET |
D9 |
SHLX |
|
data |
ind_reg |
1 |
3 |
10 |
........ |
SHLX |
(DE) <- L; (DE + 1) <- H |
DA |
JC |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JC a16 |
if CY, PC <- adr |
DB |
IN |
d8 |
control |
imm |
2 |
3 |
10 |
........ |
IN d8 |
Special |
DC |
CC |
a16 |
branch |
abs |
3 |
2/5 |
9/18 |
........ |
CC a16 |
if CY, CALL adr |
DD |
JNK |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JNK a16 |
if NK, PC <- adr |
DE |
SBI |
d8 |
arith |
imm |
2 |
2 |
7 |
SZKA.PVC |
SBI d8 |
A <- A - byte_2 - CY |
DF |
RST |
3 |
branch |
imp |
1 |
3 |
12 |
........ |
RST 3 |
CALL $18 |
E0 |
RPO |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RPO |
if PO, RET |
E1 |
POP |
H |
stack |
reg |
1 |
3 |
10 |
........ |
POP H |
L <- (SP); H <- (SP + 1); SP <- SP + 2 |
E2 |
JPO |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JPO a16 |
if PO, PC <- adr |
E3 |
XTHL |
|
stack |
imp |
1 |
5 |
16 |
........ |
XTHL |
L <- > (SP); H <- > (SP + 1) |
E4 |
CPO |
a16 |
branch |
abs |
3 |
2/5 |
9/18 |
........ |
CPO a16 |
if PO, CALL adr |
E5 |
PUSH |
H |
stack |
reg |
1 |
3 |
13 |
........ |
PUSH H |
(SP - 2) <- L; (SP - 1) <- H; SP <- SP - 2 |
E6 |
ANI |
d8 |
logic |
imm |
2 |
2 |
7 |
SZK1.P00 |
ANI d8 |
A <- A & byte_2 |
E7 |
RST |
4 |
branch |
imp |
1 |
3 |
12 |
........ |
RST 4 |
CALL $20 |
E8 |
RPE |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RPE |
if PE, RET |
E9 |
PCHL |
|
branch |
imp |
1 |
1 |
6 |
........ |
PCHL |
PC <- HL |
EA |
JPE |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JPE a16 |
if PE, PC <- adr |
EB |
XCHG |
|
data |
reg |
1 |
1 |
4 |
........ |
XCHG |
H <- > D; L <- > E |
EC |
CPE |
a16 |
branch |
abs |
3 |
2/5 |
9/18 |
........ |
CPE a16 |
if PE, CALL adr |
ED |
LHLX |
|
data |
ind_reg |
1 |
3 |
10 |
........ |
LHLX |
L <- (DE); H <- (DE + 1) |
EE |
XRI |
d8 |
logic |
imm |
2 |
2 |
7 |
SZK0.P.0 |
XRI d8 |
A <- A ^ byte_2 |
EF |
RST |
5 |
branch |
imp |
1 |
3 |
12 |
........ |
RST 5 |
CALL $28 |
F0 |
RP |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RP |
if P, RET |
F1 |
POP |
PSW |
stack |
reg |
1 |
|
|
SZKA.PVC |
POP PSW |
flags <- (SP); A <- (SP + 1); SP <- SP + 2 |
F2 |
JP |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JP a16 |
if P, PC <- adr |
F3 |
DI |
|
control |
imp |
1 |
|
|
........ |
DI |
Special |
F4 |
CP |
a16 |
branch |
abs |
3 |
2/5 |
9/18 |
........ |
CP a16 |
if P, CALL adr |
F5 |
PUSH |
PSW |
stack |
reg |
1 |
3 |
13 |
........ |
PUSH PSW |
(SP - 2) <- flags; (SP - 1) <- A; SP <- SP - 2 |
F6 |
ORI |
d8 |
logic |
imm |
2 |
|
|
SZK0.P00 |
ORI d8 |
A <- A |
F7 |
RST |
6 |
branch |
imp |
1 |
3 |
12 |
........ |
RST 6 |
CALL $30 |
F8 |
RM |
|
branch |
abs |
1 |
1/3 |
6/12 |
........ |
RM |
if M, RET |
F9 |
SPHL |
|
stack |
imp |
1 |
1 |
6 |
........ |
SPHL |
SP <- HL |
FA |
JM |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JM a16 |
if M, PC <- adr |
FB |
EI |
|
control |
imp |
1 |
|
|
........ |
EI |
Special |
FC |
CM |
a16 |
branch |
abs |
3 |
2/5 |
9/18 |
........ |
CM a16 |
if M, CALL adr |
FD |
JK |
a16 |
branch |
abs |
3 |
2/3 |
7/10 |
........ |
JK a16 |
if K, PC <- adr |
FE |
CPI |
d8 |
branch |
imm |
2 |
|
|
SZKA.PVC |
CPI d8 |
A - byte_2 |
FF |
RST |
7 |
branch |
imp |
1 |
3 |
12 |
........ |
RST 7 |
CALL $38 |
Legenda
The duration of conditional calls and returns is different when the branch is taken or not. This is indicated by two numbers separated by “/”. The lower number (on the left side of “/”) is the duration of the instruction when there is no branch, and the higher number (on the right side of “/”) is the duration of the instruction when the branch is taken.
HEX |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
0 |
NOP |
LXI B,d16 |
STAX B |
INX B |
INR B |
DCR B |
MVI B,d8 |
RLC |
|
DAD B |
LDAX B |
DCX B |
INR C |
DCR C |
MVI C,d8 |
RRC |
1 |
|
LXI D,d16 |
STAX D |
INX D |
INR D |
DCR D |
MVI D,d8 |
RAL |
|
DAD D |
LDAX D |
DCX D |
INR E |
DCR E |
MVI E,d8 |
RAR |
2 |
|
LXI H,d16 |
SHLD a16 |
INX H |
INR H |
DCR H |
MVI H,d8 |
DAA |
|
DAD H |
LHLD a16 |
DCX H |
INR L |
DCR L |
MVI L,d8 |
CMA |
3 |
|
LXI SP,d16 |
STA a16 |
INX SP |
INR M |
DCR M |
MVI M,d8 |
STC |
|
DAD SP |
LDA a16 |
DCX SP |
INR A |
DCR A |
MVI A,d8 |
CMC |
4 |
MOV B,B |
MOV B,C |
MOV B,D |
MOV B,E |
MOV B,H |
MOV B,L |
MOV B,M |
MOV B,A |
MOV C,B |
MOV C,C |
MOV C,D |
MOV C,E |
MOV C,H |
MOV C,L |
MOV C,M |
MOV C,A |
5 |
MOV D,B |
MOV D,C |
MOV D,D |
MOV D,E |
MOV D,H |
MOV D,L |
MOV D,M |
MOV D,A |
MOV E,B |
MOV E,C |
MOV E,D |
MOV E,E |
MOV E,H |
MOV E,L |
MOV E,M |
MOV E,A |
6 |
MOV H,B |
MOV H,C |
MOV H,D |
MOV H,E |
MOV H,H |
MOV H,L |
MOV H,M |
MOV H,A |
MOV L,B |
MOV L,C |
MOV L,D |
MOV L,E |
MOV L,H |
MOV L,L |
MOV L,M |
MOV L,A |
7 |
MOV M,B |
MOV M,C |
MOV M,D |
MOV M,E |
MOV M,H |
MOV M,L |
HLT |
MOV M,A |
MOV A,B |
MOV A,C |
MOV A,D |
MOV A,E |
MOV A,H |
MOV A,L |
MOV A,M |
MOV A,A |
8 |
ADD B |
ADD C |
ADD D |
ADD E |
ADD H |
ADD L |
ADD M |
ADD A |
ADC B |
ADC C |
ADC D |
ADC E |
ADC H |
ADC L |
ADC M |
ADC A |
9 |
SUB B |
SUB C |
SUB D |
SUB E |
SUB H |
SUB L |
SUB M |
SUB A |
SBB B |
SBB C |
SBB D |
SBB E |
SBB H |
SBB L |
SBB M |
SBB A |
A |
ANA B |
ANA C |
ANA D |
ANA E |
ANA H |
ANA L |
ANA M |
ANA A |
XRA B |
XRA C |
XRA D |
XRA E |
XRA H |
XRA L |
XRA M |
XRA A |
B |
ORA B |
ORA C |
ORA D |
ORA E |
ORA H |
ORA L |
ORA M |
ORA A |
CMP B |
CMP C |
CMP D |
CMP E |
CMP H |
CMP L |
CMP M |
CMP A |
C |
RNZ |
POP B |
JNZ a16 |
JMP a16 |
CNZ a16 |
PUSH B |
ADI d8 |
RST 0 |
RZ |
RET |
JZ a16 |
|
CZ a16 |
CALL a16 |
ACI d8 |
RST 1 |
D |
RNC |
POP D |
JNC a16 |
OUT d8 |
CNC a16 |
PUSH D |
SUI d8 |
RST 2 |
RC |
|
JC a16 |
IN d8 |
CC a16 |
|
SBI d8 |
RST 3 |
E |
RPO |
POP H |
JPO a16 |
XTHL |
CPO a16 |
PUSH H |
ANI d8 |
RST 4 |
RPE |
PCHL |
JPE a16 |
XCHG |
CPE a16 |
|
XRI d8 |
RST 5 |
F |
RP |
POP PSW |
JP a16 |
DI |
CP a16 |
PUSH PSW |
ORI d8 |
RST 6 |
RM |
SPHL |
JM a16 |
EI |
CM a16 |
|
CPI d8 |
RST 7 |
Undocumented opcodes
HEX |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
0 |
|
|
|
|
|
|
|
|
DSUB |
|
|
|
|
|
|
|
1 |
ARHL |
|
|
|
|
|
|
|
RDEL |
|
|
|
|
|
|
|
2 |
RIM |
|
|
|
|
|
|
|
LDHI d8 |
|
|
|
|
|
|
|
3 |
SIM |
|
|
|
|
|
|
|
LDSI d8 |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
|
|
|
|
|
|
|
|
|
|
RSTV |
|
|
|
|
D |
|
|
|
|
|
|
|
|
|
SHLX |
|
|
|
JNK a16 |
|
|
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
LHLX |
|
|
F |
|
|
|
|
|
|
|
|
|
|
|
|
|
JK a16 |
|
|