Intel 8080/8085 opcode table
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x |
NOPNo operation
1
1 4 ------- |
LXILoad with immediate value B16-bit register pair BCd1616-bit immediate value
3
3 10 ------- |
STAXStore A in memory address in register pair B16-bit register pair BC
1
2 7 ------- |
INXIncrement register pair B16-bit register pair BC
1
1 5 1 6 --K---- |
INRIncrement Register or Memory B8-bit register B
1
1 5 1 4 SZKAPV- |
DCRDecrement Register or Memory B8-bit register B
1
1 5 1 4 SZ-APV- |
MVILoad with immediate value B8-bit register Bd88-bit immediate value
2
2 7 ------- |
RLCRotate A Left (Circular)
1
1 4 -----VC |
NOPNo operation
(illegal opcode) 1 1 4 -------
DSUBDouble subtract BC from HL
(illegal opcode) 1 3 10 SZKAPVC |
DADDouble Add; register pair is added to HL B16-bit register pair BC
1
3 10 -----VC |
LDAXLoad A from memory address in register pair B16-bit register pair BC
1
2 7 ------- |
DCXDecrement register pair B16-bit register pair BC
1
1 5 1 6 --K---- |
INRIncrement Register or Memory C8-bit register C
1
1 5 1 4 SZKAPV- |
DCRDecrement Register or Memory C8-bit register C
1
1 5 1 4 SZ-APV- |
MVILoad with immediate value C8-bit register Cd88-bit immediate value
2
2 7 ------- |
RRCRotate A Right (Circular)
1
1 4 -----0C |
1x |
NOPNo operation
(illegal opcode) 1 1 4 -------
ARHLArithmetic Right Shift HL
(illegal opcode) 1 2 7 ------C |
LXILoad with immediate value D16-bit register pair DEd1616-bit immediate value
3
3 10 ------- |
STAXStore A in memory address in register pair D16-bit register pair DE
1
2 7 ------- |
INXIncrement register pair D16-bit register pair DE
1
1 5 1 6 --K---- |
INRIncrement Register or Memory D8-bit register D
1
1 5 1 4 SZKAPV- |
DCRDecrement Register or Memory D8-bit register D
1
1 5 1 4 SZ-APV- |
MVILoad with immediate value D8-bit register Dd88-bit immediate value
2
2 7 ------- |
RALRotate A Left through carry
1
1 4 -----VC |
NOPNo operation
(illegal opcode) 1 1 4 -------
RDELShift DE Left into carry
(illegal opcode) 1 3 10 -----VC |
DADDouble Add; register pair is added to HL D16-bit register pair DE
1
3 10 -----VC |
LDAXLoad A from memory address in register pair D16-bit register pair DE
1
2 7 ------- |
DCXDecrement register pair D16-bit register pair DE
1
1 5 1 6 --K---- |
INRIncrement Register or Memory E8-bit register E
1
1 5 1 4 SZKAPV- |
DCRDecrement Register or Memory E8-bit register E
1
1 5 1 4 SZ-APV- |
MVILoad with immediate value E8-bit register Ed88-bit immediate value
2
2 7 ------- |
RARRotate A Right through carry
1
1 4 -----0C |
2x |
NOPNo operation
(illegal opcode) 1 1 4 -------
RIMRead Interrupt Mask and serial data into A
1
3 10 ------- |
LXILoad with immediate value H16-bit register pair HLd1616-bit immediate value
3
3 10 ------- |
SHLDStore HL at immediate address a1616-bit immediate address
3
5 16 ------- |
INXIncrement register pair H16-bit register pair HL
1
1 5 1 6 --K---- |
INRIncrement Register or Memory H8-bit register H
1
1 5 1 4 SZKAPV- |
DCRDecrement Register or Memory H8-bit register H
1
1 5 1 4 SZ-APV- |
MVILoad with immediate value H8-bit register Hd88-bit immediate value
2
2 7 ------- |
DAADecimal Adjust Accumulator
1
1 4 SZKAPVC |
NOPNo operation
(illegal opcode) 1 1 4 -------
LDHILoad DE with HL plus immediate value
(illegal opcode) d88-bit immediate value 2 3 10 ------- |
DADDouble Add; register pair is added to HL H16-bit register pair HL
1
3 10 -----VC |
LHLDLoad HL from immediate address a1616-bit immediate address
3
5 16 ------- |
DCXDecrement register pair H16-bit register pair HL
1
1 5 1 6 --K---- |
INRIncrement Register or Memory L8-bit register L
1
1 5 1 4 SZKAPV- |
DCRDecrement Register or Memory L8-bit register L
1
1 5 1 4 SZ-APV- |
MVILoad with immediate value L8-bit register Ld88-bit immediate value
2
2 7 ------- |
CMAComplement A
1
1 4 ------- |
3x |
NOPNo operation
(illegal opcode) 1 1 4 -------
SIMSet Interrupt Mask and serial data from A
1
1 4 ------- |
LXILoad with immediate value SP16-bit Stack Pointerd1616-bit immediate value
3
3 10 ------- |
STAStore A in memory a1616-bit immediate address
3
4 13 ------- |
INXIncrement register pair SP16-bit Stack Pointer
1
1 5 1 6 --K---- |
INRIncrement Register or Memory MMemory location pointed to by register pair HL
1
3 10 SZKAPV- |
DCRDecrement Register or Memory MMemory location pointed to by register pair HL
1
3 10 SZ-APV- |
MVILoad with immediate value MMemory location pointed to by register pair HLd88-bit immediate value
2
3 10 ------- |
STCSet Carry flag
1
1 4 ------1 |
NOPNo operation
(illegal opcode) 1 1 4 -------
LDSILoad DE with SP plus immediate value
(illegal opcode) d88-bit immediate value 2 3 10 ------- |
DADDouble Add; register pair is added to HL SP16-bit Stack Pointer
1
3 10 -----VC |
LDALoad A from memory a1616-bit immediate address
3
4 13 ------- |
DCXDecrement register pair SP16-bit Stack Pointer
1
1 5 1 6 --K---- |
INRIncrement Register or Memory A8-bit accumulator A
1
1 5 1 4 SZKAPV- |
DCRDecrement Register or Memory A8-bit accumulator A
1
1 5 1 4 SZ-APV- |
MVILoad with immediate value A8-bit accumulator Ad88-bit immediate value
2
2 7 ------- |
CMCComplement Carry flag
1
1 4 ------C̅ |
4x |
MOVMove value right to left B8-bit register BB8-bit register B
1
1 5 1 4 ------- |
MOVMove value right to left B8-bit register BC8-bit register C
1
1 5 1 4 ------- |
MOVMove value right to left B8-bit register BD8-bit register D
1
1 5 1 4 ------- |
MOVMove value right to left B8-bit register BE8-bit register E
1
1 5 1 4 ------- |
MOVMove value right to left B8-bit register BH8-bit register H
1
1 5 1 4 ------- |
MOVMove value right to left B8-bit register BL8-bit register L
1
1 5 1 4 ------- |
MOVMove value right to left B8-bit register BMMemory location pointed to by register pair HL
1
2 7 ------- |
MOVMove value right to left B8-bit register BA8-bit accumulator A
1
1 5 1 4 ------- |
MOVMove value right to left C8-bit register CB8-bit register B
1
1 5 1 4 ------- |
MOVMove value right to left C8-bit register CC8-bit register C
1
1 5 1 4 ------- |
MOVMove value right to left C8-bit register CD8-bit register D
1
1 5 1 4 ------- |
MOVMove value right to left C8-bit register CE8-bit register E
1
1 5 1 4 ------- |
MOVMove value right to left C8-bit register CH8-bit register H
1
1 5 1 4 ------- |
MOVMove value right to left C8-bit register CL8-bit register L
1
1 5 1 4 ------- |
MOVMove value right to left C8-bit register CMMemory location pointed to by register pair HL
1
2 7 ------- |
MOVMove value right to left C8-bit register CA8-bit accumulator A
1
1 5 1 4 ------- |
5x |
MOVMove value right to left D8-bit register DB8-bit register B
1
1 5 1 4 ------- |
MOVMove value right to left D8-bit register DC8-bit register C
1
1 5 1 4 ------- |
MOVMove value right to left D8-bit register DD8-bit register D
1
1 5 1 4 ------- |
MOVMove value right to left D8-bit register DE8-bit register E
1
1 5 1 4 ------- |
MOVMove value right to left D8-bit register DH8-bit register H
1
1 5 1 4 ------- |
MOVMove value right to left D8-bit register DL8-bit register L
1
1 5 1 4 ------- |
MOVMove value right to left D8-bit register DMMemory location pointed to by register pair HL
1
2 7 ------- |
MOVMove value right to left D8-bit register DA8-bit accumulator A
1
1 5 1 4 ------- |
MOVMove value right to left E8-bit register EB8-bit register B
1
1 5 1 4 ------- |
MOVMove value right to left E8-bit register EC8-bit register C
1
1 5 1 4 ------- |
MOVMove value right to left E8-bit register ED8-bit register D
1
1 5 1 4 ------- |
MOVMove value right to left E8-bit register EE8-bit register E
1
1 5 1 4 ------- |
MOVMove value right to left E8-bit register EH8-bit register H
1
1 5 1 4 ------- |
MOVMove value right to left E8-bit register EL8-bit register L
1
1 5 1 4 ------- |
MOVMove value right to left E8-bit register EMMemory location pointed to by register pair HL
1
2 7 ------- |
MOVMove value right to left E8-bit register EA8-bit accumulator A
1
1 5 1 4 ------- |
6x |
MOVMove value right to left H8-bit register HB8-bit register B
1
1 5 1 4 ------- |
MOVMove value right to left H8-bit register HC8-bit register C
1
1 5 1 4 ------- |
MOVMove value right to left H8-bit register HD8-bit register D
1
1 5 1 4 ------- |
MOVMove value right to left H8-bit register HE8-bit register E
1
1 5 1 4 ------- |
MOVMove value right to left H8-bit register HH8-bit register H
1
1 5 1 4 ------- |
MOVMove value right to left H8-bit register HL8-bit register L
1
1 5 1 4 ------- |
MOVMove value right to left H8-bit register HMMemory location pointed to by register pair HL
1
2 7 ------- |
MOVMove value right to left H8-bit register HA8-bit accumulator A
1
1 5 1 4 ------- |
MOVMove value right to left L8-bit register LB8-bit register B
1
1 5 1 4 ------- |
MOVMove value right to left L8-bit register LC8-bit register C
1
1 5 1 4 ------- |
MOVMove value right to left L8-bit register LD8-bit register D
1
1 5 1 4 ------- |
MOVMove value right to left L8-bit register LE8-bit register E
1
1 5 1 4 ------- |
MOVMove value right to left L8-bit register LH8-bit register H
1
1 5 1 4 ------- |
MOVMove value right to left L8-bit register LL8-bit register L
1
1 5 1 4 ------- |
MOVMove value right to left L8-bit register LMMemory location pointed to by register pair HL
1
2 7 ------- |
MOVMove value right to left L8-bit register LA8-bit accumulator A
1
1 5 1 4 ------- |
7x |
MOVMove value right to left MMemory location pointed to by register pair HLB8-bit register B
1
2 7 ------- |
MOVMove value right to left MMemory location pointed to by register pair HLC8-bit register C
1
2 7 ------- |
MOVMove value right to left MMemory location pointed to by register pair HLD8-bit register D
1
2 7 ------- |
MOVMove value right to left MMemory location pointed to by register pair HLE8-bit register E
1
2 7 ------- |
MOVMove value right to left MMemory location pointed to by register pair HLH8-bit register H
1
2 7 ------- |
MOVMove value right to left MMemory location pointed to by register pair HLL8-bit register L
1
2 7 ------- |
HLTHalt CPU
1
1 7 1 5 ------- |
MOVMove value right to left MMemory location pointed to by register pair HLA8-bit accumulator A
1
2 7 ------- |
MOVMove value right to left A8-bit accumulator AB8-bit register B
1
1 5 1 4 ------- |
MOVMove value right to left A8-bit accumulator AC8-bit register C
1
1 5 1 4 ------- |
MOVMove value right to left A8-bit accumulator AD8-bit register D
1
1 5 1 4 ------- |
MOVMove value right to left A8-bit accumulator AE8-bit register E
1
1 5 1 4 ------- |
MOVMove value right to left A8-bit accumulator AH8-bit register H
1
1 5 1 4 ------- |
MOVMove value right to left A8-bit accumulator AL8-bit register L
1
1 5 1 4 ------- |
MOVMove value right to left A8-bit accumulator AMMemory location pointed to by register pair HL
1
2 7 ------- |
MOVMove value right to left A8-bit accumulator AA8-bit accumulator A
1
1 5 1 4 ------- |
8x |
ADDAdd Register or Memory to Accumulator B8-bit register B
1
1 4 SZKAPVC |
ADDAdd Register or Memory to Accumulator C8-bit register C
1
1 4 SZKAPVC |
ADDAdd Register or Memory to Accumulator D8-bit register D
1
1 4 SZKAPVC |
ADDAdd Register or Memory to Accumulator E8-bit register E
1
1 4 SZKAPVC |
ADDAdd Register or Memory to Accumulator H8-bit register H
1
1 4 SZKAPVC |
ADDAdd Register or Memory to Accumulator L8-bit register L
1
1 4 SZKAPVC |
ADDAdd Register or Memory to Accumulator MMemory location pointed to by register pair HL
1
2 7 SZKAPVC |
ADDAdd Register or Memory to Accumulator A8-bit accumulator A
1
1 4 SZKAPVC |
ADCAdd Register or Memory to A with Carry B8-bit register B
1
1 4 SZKAPVC |
ADCAdd Register or Memory to A with Carry C8-bit register C
1
1 4 SZKAPVC |
ADCAdd Register or Memory to A with Carry D8-bit register D
1
1 4 SZKAPVC |
ADCAdd Register or Memory to A with Carry E8-bit register E
1
1 4 SZKAPVC |
ADCAdd Register or Memory to A with Carry H8-bit register H
1
1 4 SZKAPVC |
ADCAdd Register or Memory to A with Carry L8-bit register L
1
1 4 SZKAPVC |
ADCAdd Register or Memory to A with Carry MMemory location pointed to by register pair HL
1
2 7 SZKAPVC |
ADCAdd Register or Memory to A with Carry A8-bit accumulator A
1
1 4 SZKAPVC |
9x |
SUBSubtract from A B8-bit register B
1
1 4 SZKAPVC |
SUBSubtract from A C8-bit register C
1
1 4 SZKAPVC |
SUBSubtract from A D8-bit register D
1
1 4 SZKAPVC |
SUBSubtract from A E8-bit register E
1
1 4 SZKAPVC |
SUBSubtract from A H8-bit register H
1
1 4 SZKAPVC |
SUBSubtract from A L8-bit register L
1
1 4 SZKAPVC |
SUBSubtract from A MMemory location pointed to by register pair HL
1
2 7 SZKAPVC |
SUBSubtract from A A8-bit accumulator A
1
1 4 SZKAPVC |
SBBSubtract from A with Borrow B8-bit register B
1
1 4 SZKAPVC |
SBBSubtract from A with Borrow C8-bit register C
1
1 4 SZKAPVC |
SBBSubtract from A with Borrow D8-bit register D
1
1 4 SZKAPVC |
SBBSubtract from A with Borrow E8-bit register E
1
1 4 SZKAPVC |
SBBSubtract from A with Borrow H8-bit register H
1
1 4 SZKAPVC |
SBBSubtract from A with Borrow L8-bit register L
1
1 4 SZKAPVC |
SBBSubtract from A with Borrow MMemory location pointed to by register pair HL
1
2 7 SZKAPVC |
SBBSubtract from A with Borrow A8-bit accumulator A
1
1 4 SZKAPVC |
Ax |
ANAAND A with register B8-bit register B
1
1 4 SZ-AP-0 SZK1P00 |
ANAAND A with register C8-bit register C
1
1 4 SZ-AP-0 SZK1P00 |
ANAAND A with register D8-bit register D
1
1 4 SZ-AP-0 SZK1P00 |
ANAAND A with register E8-bit register E
1
1 4 SZ-AP-0 SZK1P00 |
ANAAND A with register H8-bit register H
1
1 4 SZ-AP-0 SZK1P00 |
ANAAND A with register L8-bit register L
1
1 4 SZ-AP-0 SZK1P00 |
ANAAND A with register MMemory location pointed to by register pair HL
1
2 7 SZ-AP-0 SZK1P00 |
ANAAND A with register A8-bit accumulator A
1
1 4 SZ-AP-0 SZK1P00 |
XRAXOR A with register B8-bit register B
1
1 4 SZK0P-0 |
XRAXOR A with register C8-bit register C
1
1 4 SZK0P-0 |
XRAXOR A with register D8-bit register D
1
1 4 SZK0P-0 |
XRAXOR A with register E8-bit register E
1
1 4 SZK0P-0 |
XRAXOR A with register H8-bit register H
1
1 4 SZK0P-0 |
XRAXOR A with register L8-bit register L
1
1 4 SZK0P-0 |
XRAXOR A with register MMemory location pointed to by register pair HL
1
2 7 SZK0P-0 |
XRAXOR A with register A8-bit accumulator A
1
1 4 SZK0P-0 |
Bx |
ORAOR A with register B8-bit register B
1
1 4 SZK0P00 |
ORAOR A with register C8-bit register C
1
1 4 SZK0P00 |
ORAOR A with register D8-bit register D
1
1 4 SZK0P00 |
ORAOR A with register E8-bit register E
1
1 4 SZK0P00 |
ORAOR A with register H8-bit register H
1
1 4 SZK0P00 |
ORAOR A with register L8-bit register L
1
1 4 SZK0P00 |
ORAOR A with register MMemory location pointed to by register pair HL
1
2 7 SZK0P00 |
ORAOR A with register A8-bit accumulator A
1
1 4 SZK0P00 |
CMPCompare A with register or memory value B8-bit register B
1
1 4 SZKAPVC |
CMPCompare A with register or memory value C8-bit register C
1
1 4 SZKAPVC |
CMPCompare A with register or memory value D8-bit register D
1
1 4 SZKAPVC |
CMPCompare A with register or memory value E8-bit register E
1
1 4 SZKAPVC |
CMPCompare A with register or memory value H8-bit register H
1
1 4 SZKAPVC |
CMPCompare A with register or memory value L8-bit register L
1
1 4 SZKAPVC |
CMPCompare A with register or memory value MMemory location pointed to by register pair HL
1
2 7 SZKAPVC |
CMPCompare A with register or memory value A8-bit accumulator A
1
1 4 SZKAPVC |
Cx |
RNZReturn if Not Zero (Z is not set)
1
1/3 5/11 1/3 6/12 ------- |
POPPop from stack into register pair B16-bit register pair BC
1
3 10 ------- |
JNZJump if Not Zero (Z not set) a1616-bit immediate address
3
3 10 2/3 7/10 ------- |
JMPJump to address a1616-bit immediate address
3
3 10 ------- |
CNZCall if Not Zero (Z not set) a1616-bit immediate address
3
3/5 11/17 2/5 9/18 ------- |
PUSHPush register pair to stack B16-bit register pair BC
1
3 11 3 13 ------- |
ADIAdd immediate value to A d88-bit immediate value
2
2 7 SZKAPVC |
RSTCall restart subroutine 0Restart subroutine 0 at address 0x0000
1
3 11 3 12 ------- |
RZReturn if Zero (Z is set)
1
1/3 5/11 1/3 6/12 ------- |
RETReturn from subroutine
1
3 10 ------- |
JZJump if Zero (Z set) a1616-bit immediate address
3
3 10 2/3 7/10 ------- |
JMPJump to address
(illegal opcode) a1616-bit immediate address 3 3 10 -------
RSTVCall $0040 if overflag (V) flag is set
(illegal opcode) 1 1/3 6/12 ------- |
CZCall if Zero (Z set) a1616-bit immediate address
3
3/5 11/17 2/5 9/18 ------- |
CALLCall subroutine a1616-bit immediate address
3
5 17 5 18 ------- |
ACIAdd immediate value to A with Carry d88-bit immediate value
2
2 7 SZKAPVC |
RSTCall restart subroutine 1Restart subroutine 1 at address 0x0008
1
3 11 3 12 ------- |
Dx |
RNCReturn if Not Carry (C is not set)
1
1/3 5/11 1/3 6/12 ------- |
POPPop from stack into register pair D16-bit register pair DE
1
3 10 ------- |
JNCJump if Not Carry (C is not set) a1616-bit immediate address
3
3 10 2/3 7/10 ------- |
OUTOutput A to port d88-bit immediate value
2
3 10 ------- |
CNCCall if Not Carry (C is not set) a1616-bit immediate address
3
3/5 11/17 2/5 9/18 ------- |
PUSHPush register pair to stack D16-bit register pair DE
1
3 11 3 13 ------- |
SUISubtract immediate value from A d88-bit immediate value
2
2 7 SZKAPVC |
RSTCall restart subroutine 2Restart subroutine 2 at address 0x0010
1
3 11 3 12 ------- |
RCReturn if Carry (C is set)
1
1/3 5/11 1/3 6/12 ------- |
RETReturn from subroutine
(illegal opcode) 1 3 10 -------
SHLXStore HL in memory indexed by DE
(illegal opcode) 1 3 10 ------- |
JCJump if Carry (C is set) a1616-bit immediate address
3
3 10 2/3 7/10 ------- |
INInput port to A d88-bit immediate value
2
3 10 ------- |
CCCall if Carry (C is set) a1616-bit immediate address
3
3/5 11/17 2/5 9/18 ------- |
CALLCall subroutine
(illegal opcode) a1616-bit immediate address 3 5 17 -------
JNKJump if K flag is not set
(illegal opcode) a1616-bit immediate address 3 2/3 7/10 ------- |
SBISubtract immediate value from A with Borrow d88-bit immediate value
2
2 7 SZKAPVC |
RSTCall restart subroutine 3Restart subroutine 3 at address 0x0018
1
3 11 3 12 ------- |
Ex |
RPOReturn if Parity Odd (P is not set)
1
1/3 5/11 1/3 6/12 ------- |
POPPop from stack into register pair H16-bit register pair HL
1
3 10 ------- |
JPOJump if Parity Odd (P is not set) a1616-bit immediate address
3
3 10 2/3 7/10 ------- |
XTHLExchange Top of stack (two bytes addressed by SP+1 and SP) with HL
1
5 18 5 16 ------- |
CPOCall if Parity Odd (P is not set) a1616-bit immediate address
3
3/5 11/17 2/5 9/18 ------- |
PUSHPush register pair to stack H16-bit register pair HL
1
3 11 3 13 ------- |
ANIAND A with immediate value d88-bit immediate value
2
2 7 SZ-AP-0 SZK1P00 |
RSTCall restart subroutine 4Restart subroutine 4 at address 0x0020
1
3 11 3 12 ------- |
RPEReturn if Parity Even (P is set)
1
1/3 5/11 1/3 6/12 ------- |
PCHLLoad program counter from HL
1
1 5 1 6 ------- |
JPEJump if Parity Even (P is set) a1616-bit immediate address
3
3 10 2/3 7/10 ------- |
XCHGExchange DE and HL
1
1 4 ------- |
CPECall if Parity Even (P is set) a1616-bit immediate address
3
3/5 11/17 2/5 9/18 ------- |
CALLCall subroutine
(illegal opcode) a1616-bit immediate address 3 5 17 -------
LHLXLoad HL from memory indexed by DE
(illegal opcode) 1 3 10 ------- |
XRIXOR A with immediate value d88-bit immediate value
2
2 7 SZK0P-0 |
RSTCall restart subroutine 5Restart subroutine 5 at address 0x0028
1
3 11 3 12 ------- |
Fx |
RPReturn if plus (S is not set)
1
1/3 5/11 1/3 6/12 ------- |
POPPop from stack into register pair PSW16-bit register pair constructed from Accumulator A and flags
1
3 10 SZKAPVC |
JPJump if plus (S is not set) a1616-bit immediate address
3
3 10 2/3 7/10 ------- |
DIDisable Interrupts
1
1 4 ------- |
CPCall if plus (S is not set) a1616-bit immediate address
3
3/5 11/17 2/5 9/18 ------- |
PUSHPush register pair to stack PSW16-bit register pair constructed from Accumulator A and flags
1
3 11 3 13 ------- |
ORIOR A with immediate value d88-bit immediate value
2
2 7 SZK0P00 |
RSTCall restart subroutine 6Restart subroutine 6 at address 0x0030
1
3 11 3 12 ------- |
RMReturn if minus (S is set)
1
1/3 5/11 1/3 6/12 ------- |
SPHLLoad SP from HL
1
1 5 1 6 ------- |
JMJump if minus (S is set) a1616-bit immediate address
3
3 10 2/3 7/10 ------- |
EIEnable Interrupts
1
1 4 ------- |
CMCall if minus (S is set) a1616-bit immediate address
3
3/5 11/17 2/5 9/18 ------- |
CALLCall subroutine
(illegal opcode) a1616-bit immediate address 3 5 17 -------
JNKJump if K flag is not set
(illegal opcode) a1616-bit immediate address 3 2/3 7/10 ------- |
CPICompare A with immediate value d88-bit immediate value
2
2 7 SZKAPVC |
RSTCall restart subroutine 7Restart subroutine 7 at address 0x0038
1
3 11 3 12 ------- |
Illegal/undocumented instructions
Stack, I/O and machine control instructions
Branch and program flow instructions
Data transfer instructions
Arithmetic instructions
Logical instructions
INS op | ← | Instruction mnemonic | ||
Length in bytes | → | 2 | ||
Cycles (8080) | → | 2 7 | ← | States (8080) |
Cycles (8085, if different) | → | 2 7 | ← | States (8085, if different) |
SZKAPVC | ← | Flags affected | ||
SZKAPVC | ← | Flags affected (8085, if different) |
Flag registers and their bit positions in PSW:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
S | Z | K | A | - | P | V | C |
- C: Carry flag; set to carry out of bit 7 in result
- V: Undocumented signed overflow flag* (8085 only, on 8080 bit is always 1 in PSW)
- 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
- K: Undocumented signed Underflow Indicator (UI/X5) and comparison flag* (8085 only, on 8080 bit is always 0 in PSW)
- 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: SZKAPVC. 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.
Blue flags are only affected on 8085. For some instructions that affect flags differently on 8080 and 8085, there are two flag status lines.
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.
d8 immediate 8-bit data
d16 immediate 16-bit data
a16 16-bit address