Intel 8080 Instruction Set Reference¶
This document provides a complete reference for the Intel 8080 microprocessor instruction set.
Register Conventions¶
The following conventions are used throughout this document:
Symbol |
Description |
Registers |
|---|---|---|
|
Destination register (8-bit) |
See register fields below |
|
Source register (8-bit) |
See register fields below |
|
Register pair (16-bit) |
BC, DE, HL, SP |
|
Immediate operand |
8 or 16-bit value |
|
Memory address |
16-bit |
|
Port address |
8-bit |
|
Condition code |
See condition codes below |
Register Fields¶
8-bit registers are encoded as 3-bit fields:
Code |
Register |
Description |
|---|---|---|
|
A |
Accumulator |
|
B |
General purpose |
|
C |
General purpose |
|
D |
General purpose |
|
E |
General purpose |
|
H |
High byte of HL pair |
|
L |
Low byte of HL pair |
|
M |
Memory reference through HL |
Register Pairs¶
16-bit register pairs are encoded as 2-bit fields:
Code |
Pair |
Description |
|---|---|---|
|
BC |
B:C as 16-bit register |
|
DE |
D:E as 16-bit register |
|
HL |
H:L as 16-bit register |
|
SP |
Stack pointer (PSW for PUSH/POP) |
Condition Codes¶
Condition codes for conditional instructions:
Code |
Mnemonic |
Condition |
|---|---|---|
|
NZ |
Zero flag not set |
|
Z |
Zero flag set |
|
NC |
Carry flag not set |
|
C |
Carry flag set |
|
PO |
Parity odd (parity flag not set) |
|
PE |
Parity even (parity flag set) |
|
P |
Positive (sign flag not set) |
|
M |
Minus (sign flag set) |
Flag Legend¶
The following flags may be affected by instructions:
Flag |
Description |
Note |
|---|---|---|
|
Zero flag |
Set if result is zero |
|
Sign flag |
Set if result is negative |
|
Parity flag |
Set if result has even parity |
|
Carry flag |
Set if carry/borrow occurred |
|
Auxiliary carry |
For BCD operations |
Encoding Legend¶
For instructions that take operands:
db= Data byte (8-bit)lb= Low byte of 16-bit valuehb= High byte of 16-bit valuepa= Port address (8-bit)SSS= Source register field (3 bits)DDD= Destination register field (3 bits)RP= Register pair field (2 bits)CCC= Condition code field (3 bits)NNN= Restart vector (3 bits)
Flag Effects¶
The flag columns show which flags are affected:
Z= Zero flagS= Sign flagP= Parity flagC= Carry flagA= Auxiliary carry flag-= No flags affected
Instruction Set Reference¶
Data Transfer Instructions¶
Instruction |
Encoding |
Description |
|---|---|---|
|
|
Move register to register |
|
|
Move immediate to register |
|
|
Load register pair immediate |
|
|
Load A from memory |
|
|
Store A to memory |
|
|
Load HL from memory |
|
|
Store HL to memory |
|
|
Load indirect through BC or DE only |
|
|
Store indirect through BC or DE only |
|
|
Exchange DE and HL content |
Arithmetic Instructions¶
Instruction |
Encoding |
Flags |
Description |
|---|---|---|---|
|
|
ZSPCA |
Add register to A |
|
|
ZSPCA |
Add immediate to A |
|
|
ZSPCA |
Add register to A with carry |
|
|
ZSPCA |
Add immediate to A with carry |
|
|
ZSPCA |
Subtract register from A |
|
|
ZSPCA |
Subtract immediate from A |
|
|
ZSPCA |
Subtract register from A with borrow |
|
|
ZSPCA |
Subtract immediate from A with borrow |
|
|
ZSPA |
Increment register |
|
|
ZSPA |
Decrement register |
|
|
Increment register pair |
|
|
|
Decrement register pair |
|
|
|
C |
Add register pair to HL (16-bit) |
|
|
ZSPCA |
Decimal Adjust accumulator |
Logical Instructions¶
Instruction |
Encoding |
Flags |
Description |
|---|---|---|---|
|
|
ZSPCA |
AND register with A |
|
|
ZSPCA |
AND immediate with A |
|
|
ZSPCA |
OR register with A |
|
|
ZSPCA |
OR immediate with A |
|
|
ZSPCA |
Exclusive OR register with A |
|
|
ZSPCA |
Exclusive OR immediate with A |
|
|
ZSPCA |
Compare register with A |
|
|
ZSPCA |
Compare immediate with A |
Rotate and Shift Instructions¶
Instruction |
Encoding |
Flags |
Description |
|---|---|---|---|
|
|
C |
Rotate A left |
|
|
C |
Rotate A right |
|
|
C |
Rotate A left through carry |
|
|
C |
Rotate A right through carry |
Complement and Carry Instructions¶
Instruction |
Encoding |
Flags |
Description |
|---|---|---|---|
|
|
Complement A |
|
|
|
C |
Complement Carry flag |
|
|
C |
Set Carry flag |
Branch Instructions¶
Instruction |
Encoding |
Description |
|---|---|---|
|
|
Unconditional jump |
|
|
Conditional jump |
|
|
Unconditional subroutine call |
|
|
Conditional subroutine call |
|
|
Unconditional return from subroutine |
|
|
Conditional return from subroutine |
|
|
Restart (Call n*8) |
|
|
Jump to address in HL |
Stack Instructions¶
Instruction |
Encoding |
Description |
|---|---|---|
|
|
Push register pair on stack (RP=11 pushes PSW) |
|
|
Pop register pair from stack (RP=11 pops PSW, affects all registers) |
|
|
Swap HL with top word on stack |
|
|
Set SP to content of HL |
I/O Instructions¶
Instruction |
Encoding |
Description |
|---|---|---|
|
|
Read input port into A |
|
|
Write A to output port |
Control Instructions¶
Instruction |
Encoding |
Description |
|---|---|---|
|
|
Enable interrupts |
|
|
Disable interrupts |
|
|
Halt processor |
|
|
No operation |
Opcode Table¶
This table is adapted from Tobias Langhoff’s Reference with some simplifications to focus on the Intel 8080 chip we’re using in this book.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x |
NOPNo operation
1
-----
|
LXILoad with immediate value B16-bit register pair BCd1616-bit immediate value
3
-----
|
STAXStore A in memory address in register pair B16-bit register pair BC
1
-----
|
INXIncrement register pair B16-bit register pair BC
1
-----
|
INRIncrement Register or Memory B8-bit register B
1
SZAP-
|
DCRDecrement Register or Memory B8-bit register B
1
SZAP-
|
MVILoad with immediate value B8-bit register Bd88-bit immediate value
2
-----
|
RLCRotate A Left (Circular)
1
----C
|
NOPNo operation
(illegal opcode) 1 ----- |
DADDouble Add; register pair is added to HL B16-bit register pair BC
1
----C
|
LDAXLoad A from memory address in register pair B16-bit register pair BC
1
-----
|
DCXDecrement register pair B16-bit register pair BC
1
-----
|
INRIncrement Register or Memory C8-bit register C
1
SZAP-
|
DCRDecrement Register or Memory C8-bit register C
1
SZAP-
|
MVILoad with immediate value C8-bit register Cd88-bit immediate value
2
-----
|
RRCRotate A Right (Circular)
1
----C
|
| 1x |
NOPNo operation
(illegal opcode) 1 ----- |
LXILoad with immediate value D16-bit register pair DEd1616-bit immediate value
3
-----
|
STAXStore A in memory address in register pair D16-bit register pair DE
1
-----
|
INXIncrement register pair D16-bit register pair DE
1
-----
|
INRIncrement Register or Memory D8-bit register D
1
SZAP-
|
DCRDecrement Register or Memory D8-bit register D
1
SZAP-
|
MVILoad with immediate value D8-bit register Dd88-bit immediate value
2
-----
|
RALRotate A Left through carry
1
----C
|
NOPNo operation
(illegal opcode) 1 ----- |
DADDouble Add; register pair is added to HL D16-bit register pair DE
1
----C
|
LDAXLoad A from memory address in register pair D16-bit register pair DE
1
-----
|
DCXDecrement register pair D16-bit register pair DE
1
-----
|
INRIncrement Register or Memory E8-bit register E
1
SZAP-
|
DCRDecrement Register or Memory E8-bit register E
1
SZAP-
|
MVILoad with immediate value E8-bit register Ed88-bit immediate value
2
-----
|
RARRotate A Right through carry
1
----C
|
| 2x |
NOPNo operation
(illegal opcode) 1 ----- |
LXILoad with immediate value H16-bit register pair HLd1616-bit immediate value
3
-----
|
SHLDStore HL at immediate address a1616-bit immediate address
3
-----
|
INXIncrement register pair H16-bit register pair HL
1
-----
|
INRIncrement Register or Memory H8-bit register H
1
SZAP-
|
DCRDecrement Register or Memory H8-bit register H
1
SZAP-
|
MVILoad with immediate value H8-bit register Hd88-bit immediate value
2
-----
|
DAADecimal Adjust Accumulator
1
SZAPC
|
NOPNo operation
(illegal opcode) 1 ----- |
DADDouble Add; register pair is added to HL H16-bit register pair HL
1
----C
|
LHLDLoad HL from immediate address a1616-bit immediate address
3
-----
|
DCXDecrement register pair H16-bit register pair HL
1
-----
|
INRIncrement Register or Memory L8-bit register L
1
SZAP-
|
DCRDecrement Register or Memory L8-bit register L
1
SZAP-
|
MVILoad with immediate value L8-bit register Ld88-bit immediate value
2
-----
|
CMAComplement A
1
-----
|
| 3x |
NOPNo operation
(illegal opcode) 1 ----- |
LXILoad with immediate value SP16-bit Stack Pointerd1616-bit immediate value
3
-----
|
STAStore A in memory a1616-bit immediate address
3
-----
|
INXIncrement register pair SP16-bit Stack Pointer
1
-----
|
INRIncrement Register or Memory MMemory location pointed to by register pair HL
1
SZAP-
|
DCRDecrement Register or Memory MMemory location pointed to by register pair HL
1
SZAP-
|
MVILoad with immediate value MMemory location pointed to by register pair HLd88-bit immediate value
2
-----
|
STCSet Carry flag
1
----1
|
NOPNo operation
(illegal opcode) 1 ----- |
DADDouble Add; register pair is added to HL SP16-bit Stack Pointer
1
----C
|
LDALoad A from memory a1616-bit immediate address
3
-----
|
DCXDecrement register pair SP16-bit Stack Pointer
1
-----
|
INRIncrement Register or Memory A8-bit accumulator A
1
SZAP-
|
DCRDecrement Register or Memory A8-bit accumulator A
1
SZAP-
|
MVILoad with immediate value A8-bit accumulator Ad88-bit immediate value
2
-----
|
CMCComplement Carry flag
1
----C̅
|
| 4x |
MOVMove value right to left B8-bit register BB8-bit register B
1
-----
|
MOVMove value right to left B8-bit register BC8-bit register C
1
-----
|
MOVMove value right to left B8-bit register BD8-bit register D
1
-----
|
MOVMove value right to left B8-bit register BE8-bit register E
1
-----
|
MOVMove value right to left B8-bit register BH8-bit register H
1
-----
|
MOVMove value right to left B8-bit register BL8-bit register L
1
-----
|
MOVMove value right to left B8-bit register BMMemory location pointed to by register pair HL
1
-----
|
MOVMove value right to left B8-bit register BA8-bit accumulator A
1
-----
|
MOVMove value right to left C8-bit register CB8-bit register B
1
-----
|
MOVMove value right to left C8-bit register CC8-bit register C
1
-----
|
MOVMove value right to left C8-bit register CD8-bit register D
1
-----
|
MOVMove value right to left C8-bit register CE8-bit register E
1
-----
|
MOVMove value right to left C8-bit register CH8-bit register H
1
-----
|
MOVMove value right to left C8-bit register CL8-bit register L
1
-----
|
MOVMove value right to left C8-bit register CMMemory location pointed to by register pair HL
1
-----
|
MOVMove value right to left C8-bit register CA8-bit accumulator A
1
-----
|
| 5x |
MOVMove value right to left D8-bit register DB8-bit register B
1
-----
|
MOVMove value right to left D8-bit register DC8-bit register C
1
-----
|
MOVMove value right to left D8-bit register DD8-bit register D
1
-----
|
MOVMove value right to left D8-bit register DE8-bit register E
1
-----
|
MOVMove value right to left D8-bit register DH8-bit register H
1
-----
|
MOVMove value right to left D8-bit register DL8-bit register L
1
-----
|
MOVMove value right to left D8-bit register DMMemory location pointed to by register pair HL
1
-----
|
MOVMove value right to left D8-bit register DA8-bit accumulator A
1
-----
|
MOVMove value right to left E8-bit register EB8-bit register B
1
-----
|
MOVMove value right to left E8-bit register EC8-bit register C
1
-----
|
MOVMove value right to left E8-bit register ED8-bit register D
1
-----
|
MOVMove value right to left E8-bit register EE8-bit register E
1
-----
|
MOVMove value right to left E8-bit register EH8-bit register H
1
-----
|
MOVMove value right to left E8-bit register EL8-bit register L
1
-----
|
MOVMove value right to left E8-bit register EMMemory location pointed to by register pair HL
1
-----
|
MOVMove value right to left E8-bit register EA8-bit accumulator A
1
-----
|
| 6x |
MOVMove value right to left H8-bit register HB8-bit register B
1
-----
|
MOVMove value right to left H8-bit register HC8-bit register C
1
-----
|
MOVMove value right to left H8-bit register HD8-bit register D
1
-----
|
MOVMove value right to left H8-bit register HE8-bit register E
1
-----
|
MOVMove value right to left H8-bit register HH8-bit register H
1
-----
|
MOVMove value right to left H8-bit register HL8-bit register L
1
-----
|
MOVMove value right to left H8-bit register HMMemory location pointed to by register pair HL
1
-----
|
MOVMove value right to left H8-bit register HA8-bit accumulator A
1
-----
|
MOVMove value right to left L8-bit register LB8-bit register B
1
-----
|
MOVMove value right to left L8-bit register LC8-bit register C
1
-----
|
MOVMove value right to left L8-bit register LD8-bit register D
1
-----
|
MOVMove value right to left L8-bit register LE8-bit register E
1
-----
|
MOVMove value right to left L8-bit register LH8-bit register H
1
-----
|
MOVMove value right to left L8-bit register LL8-bit register L
1
-----
|
MOVMove value right to left L8-bit register LMMemory location pointed to by register pair HL
1
-----
|
MOVMove value right to left L8-bit register LA8-bit accumulator A
1
-----
|
| 7x |
MOVMove value right to left MMemory location pointed to by register pair HLB8-bit register B
1
-----
|
MOVMove value right to left MMemory location pointed to by register pair HLC8-bit register C
1
-----
|
MOVMove value right to left MMemory location pointed to by register pair HLD8-bit register D
1
-----
|
MOVMove value right to left MMemory location pointed to by register pair HLE8-bit register E
1
-----
|
MOVMove value right to left MMemory location pointed to by register pair HLH8-bit register H
1
-----
|
MOVMove value right to left MMemory location pointed to by register pair HLL8-bit register L
1
-----
|
HLTHalt CPU
1
-----
|
MOVMove value right to left MMemory location pointed to by register pair HLA8-bit accumulator A
1
-----
|
MOVMove value right to left A8-bit accumulator AB8-bit register B
1
-----
|
MOVMove value right to left A8-bit accumulator AC8-bit register C
1
-----
|
MOVMove value right to left A8-bit accumulator AD8-bit register D
1
-----
|
MOVMove value right to left A8-bit accumulator AE8-bit register E
1
-----
|
MOVMove value right to left A8-bit accumulator AH8-bit register H
1
-----
|
MOVMove value right to left A8-bit accumulator AL8-bit register L
1
-----
|
MOVMove value right to left A8-bit accumulator AMMemory location pointed to by register pair HL
1
-----
|
MOVMove value right to left A8-bit accumulator AA8-bit accumulator A
1
-----
|
| 8x |
ADDAdd Register or Memory to Accumulator B8-bit register B
1
SZAPC
|
ADDAdd Register or Memory to Accumulator C8-bit register C
1
SZAPC
|
ADDAdd Register or Memory to Accumulator D8-bit register D
1
SZAPC
|
ADDAdd Register or Memory to Accumulator E8-bit register E
1
SZAPC
|
ADDAdd Register or Memory to Accumulator H8-bit register H
1
SZAPC
|
ADDAdd Register or Memory to Accumulator L8-bit register L
1
SZAPC
|
ADDAdd Register or Memory to Accumulator MMemory location pointed to by register pair HL
1
SZAPC
|
ADDAdd Register or Memory to Accumulator A8-bit accumulator A
1
SZAPC
|
ADCAdd Register or Memory to A with Carry B8-bit register B
1
SZAPC
|
ADCAdd Register or Memory to A with Carry C8-bit register C
1
SZAPC
|
ADCAdd Register or Memory to A with Carry D8-bit register D
1
SZAPC
|
ADCAdd Register or Memory to A with Carry E8-bit register E
1
SZAPC
|
ADCAdd Register or Memory to A with Carry H8-bit register H
1
SZAPC
|
ADCAdd Register or Memory to A with Carry L8-bit register L
1
SZAPC
|
ADCAdd Register or Memory to A with Carry MMemory location pointed to by register pair HL
1
SZAPC
|
ADCAdd Register or Memory to A with Carry A8-bit accumulator A
1
SZAPC
|
| 9x |
SUBSubtract from A B8-bit register B
1
SZAPC
|
SUBSubtract from A C8-bit register C
1
SZAPC
|
SUBSubtract from A D8-bit register D
1
SZAPC
|
SUBSubtract from A E8-bit register E
1
SZAPC
|
SUBSubtract from A H8-bit register H
1
SZAPC
|
SUBSubtract from A L8-bit register L
1
SZAPC
|
SUBSubtract from A MMemory location pointed to by register pair HL
1
SZAPC
|
SUBSubtract from A A8-bit accumulator A
1
SZAPC
|
SBBSubtract from A with Borrow B8-bit register B
1
SZAPC
|
SBBSubtract from A with Borrow C8-bit register C
1
SZAPC
|
SBBSubtract from A with Borrow D8-bit register D
1
SZAPC
|
SBBSubtract from A with Borrow E8-bit register E
1
SZAPC
|
SBBSubtract from A with Borrow H8-bit register H
1
SZAPC
|
SBBSubtract from A with Borrow L8-bit register L
1
SZAPC
|
SBBSubtract from A with Borrow MMemory location pointed to by register pair HL
1
SZAPC
|
SBBSubtract from A with Borrow A8-bit accumulator A
1
SZAPC
|
| Ax |
ANAAND A with register B8-bit register B
1
SZAP0
|
ANAAND A with register C8-bit register C
1
SZAP0
|
ANAAND A with register D8-bit register D
1
SZAP0
|
ANAAND A with register E8-bit register E
1
SZAP0
|
ANAAND A with register H8-bit register H
1
SZAP0
|
ANAAND A with register L8-bit register L
1
SZAP0
|
ANAAND A with register MMemory location pointed to by register pair HL
1
SZAP0
|
ANAAND A with register A8-bit accumulator A
1
SZAP0
|
XRAXOR A with register B8-bit register B
1
SZ0P0
|
XRAXOR A with register C8-bit register C
1
SZ0P0
|
XRAXOR A with register D8-bit register D
1
SZ0P0
|
XRAXOR A with register E8-bit register E
1
SZ0P0
|
XRAXOR A with register H8-bit register H
1
SZ0P0
|
XRAXOR A with register L8-bit register L
1
SZ0P0
|
XRAXOR A with register MMemory location pointed to by register pair HL
1
SZ0P0
|
XRAXOR A with register A8-bit accumulator A
1
SZ0P0
|
| Bx |
ORAOR A with register B8-bit register B
1
SZ0P0
|
ORAOR A with register C8-bit register C
1
SZ0P0
|
ORAOR A with register D8-bit register D
1
SZ0P0
|
ORAOR A with register E8-bit register E
1
SZ0P0
|
ORAOR A with register H8-bit register H
1
SZ0P0
|
ORAOR A with register L8-bit register L
1
SZ0P0
|
ORAOR A with register MMemory location pointed to by register pair HL
1
SZ0P0
|
ORAOR A with register A8-bit accumulator A
1
SZ0P0
|
CMPCompare A with register or memory value B8-bit register B
1
SZAPC
|
CMPCompare A with register or memory value C8-bit register C
1
SZAPC
|
CMPCompare A with register or memory value D8-bit register D
1
SZAPC
|
CMPCompare A with register or memory value E8-bit register E
1
SZAPC
|
CMPCompare A with register or memory value H8-bit register H
1
SZAPC
|
CMPCompare A with register or memory value L8-bit register L
1
SZAPC
|
CMPCompare A with register or memory value MMemory location pointed to by register pair HL
1
SZAPC
|
CMPCompare A with register or memory value A8-bit accumulator A
1
SZAPC
|
| Cx |
RNZReturn if Not Zero (Z is not set)
1
-----
|
POPPop from stack into register pair B16-bit register pair BC
1
-----
|
JNZJump if Not Zero (Z not set) a1616-bit immediate address
3
-----
|
JMPJump to address a1616-bit immediate address
3
-----
|
CNZCall if Not Zero (Z not set) a1616-bit immediate address
3
-----
|
PUSHPush register pair to stack B16-bit register pair BC
1
-----
|
ADIAdd immediate value to A d88-bit immediate value
2
SZAPC
|
RSTCall restart subroutine 0Restart subroutine 0 at address 0x0000
1
-----
|
RZReturn if Zero (Z is set)
1
-----
|
RETReturn from subroutine
1
-----
|
JZJump if Zero (Z set) a1616-bit immediate address
3
-----
|
JMPJump to address
(illegal opcode) a1616-bit immediate address 3 ----- |
CZCall if Zero (Z set) a1616-bit immediate address
3
-----
|
CALLCall subroutine a1616-bit immediate address
3
-----
|
ACIAdd immediate value to A with Carry d88-bit immediate value
2
SZAPC
|
RSTCall restart subroutine 1Restart subroutine 1 at address 0x0008
1
-----
|
| Dx |
RNCReturn if Not Carry (C is not set)
1
-----
|
POPPop from stack into register pair D16-bit register pair DE
1
-----
|
JNCJump if Not Carry (C is not set) a1616-bit immediate address
3
-----
|
OUTOutput A to port d88-bit immediate value
2
-----
|
CNCCall if Not Carry (C is not set) a1616-bit immediate address
3
-----
|
PUSHPush register pair to stack D16-bit register pair DE
1
-----
|
SUISubtract immediate value from A d88-bit immediate value
2
SZAPC
|
RSTCall restart subroutine 2Restart subroutine 2 at address 0x0010
1
-----
|
RCReturn if Carry (C is set)
1
-----
|
RETReturn from subroutine
(illegal opcode) 1 ----- |
JCJump if Carry (C is set) a1616-bit immediate address
3
-----
|
INInput port to A d88-bit immediate value
2
-----
|
CCCall if Carry (C is set) a1616-bit immediate address
3
-----
|
CALLCall subroutine
(illegal opcode) a1616-bit immediate address 3 ----- |
SBISubtract immediate value from A with Borrow d88-bit immediate value
2
SZAPC
|
RSTCall restart subroutine 3Restart subroutine 3 at address 0x0018
1
-----
|
| Ex |
RPOReturn if Parity Odd (P is not set)
1
-----
|
POPPop from stack into register pair H16-bit register pair HL
1
-----
|
JPOJump if Parity Odd (P is not set) a1616-bit immediate address
3
-----
|
XTHLExchange Top of stack (two bytes addressed by SP+1 and SP) with HL
1
-----
|
CPOCall if Parity Odd (P is not set) a1616-bit immediate address
3
-----
|
PUSHPush register pair to stack H16-bit register pair HL
1
-----
|
ANIAND A with immediate value d88-bit immediate value
2
SZAP0
|
RSTCall restart subroutine 4Restart subroutine 4 at address 0x0020
1
-----
|
RPEReturn if Parity Even (P is set)
1
-----
|
PCHLLoad program counter from HL
1
-----
|
JPEJump if Parity Even (P is set) a1616-bit immediate address
3
-----
|
XCHGExchange DE and HL
1
-----
|
CPECall if Parity Even (P is set) a1616-bit immediate address
3
-----
|
CALLCall subroutine
(illegal opcode) a1616-bit immediate address 3 ----- |
XRIXOR A with immediate value d88-bit immediate value
2
SZ0P0
|
RSTCall restart subroutine 5Restart subroutine 5 at address 0x0028
1
-----
|
| Fx |
RPReturn if plus (S is not set)
1
-----
|
POPPop from stack into register pair PSW16-bit register pair constructed from Accumulator A and flags
1
SZAPC
|
JPJump if plus (S is not set) a1616-bit immediate address
3
-----
|
DIDisable Interrupts
1
-----
|
CPCall if plus (S is not set) a1616-bit immediate address
3
-----
|
PUSHPush register pair to stack PSW16-bit register pair constructed from Accumulator A and flags
1
-----
|
ORIOR A with immediate value d88-bit immediate value
2
SZ0P0
|
RSTCall restart subroutine 6Restart subroutine 6 at address 0x0030
1
-----
|
RMReturn if minus (S is set)
1
-----
|
SPHLLoad SP from HL
1
-----
|
JMJump if minus (S is set) a1616-bit immediate address
3
-----
|
EIEnable Interrupts
1
-----
|
CMCall if minus (S is set) a1616-bit immediate address
3
-----
|
CALLCall subroutine
(illegal opcode) a1616-bit immediate address 3 ----- |
CPICompare A with immediate value d88-bit immediate value
2
SZAPC
|
RSTCall restart subroutine 7Restart subroutine 7 at address 0x0038
1
-----
|
| INS op | ← | Instruction mnemonic | ||
| Length in bytes | → | 2 | ||
| SZAPC | ← | Flags affected |
Flag registers and their bit positions in PSW:
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|
| S | Z | - | A | - | P | - | C |
- C: Carry flag; set to carry out of bit 7 in result
- P: Parity flag; set if the number of bits in the result is even, and reset if it's odd
- No flag, bit is always 0 in PSW
- A: Auxiliary Carry (AC) flag; set to carry out of bit 3 in result
- Z: Zero flag; set if the result was zero, reset otherwise
- S: Sign flag; set to bit 7 of result
Flags affected are always shown in the PSW bit order: SZAPC. If a flag is marked by "0" it means it is reset after the instruction. If it is marked by "1" it is set. If it is marked by "-" it is not changed. If it is marked by its letter, the corresponding flag is affected by the instruction.
d8 immediate 8-bit data
d16 immediate 16-bit data
a16 16-bit address