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:

Register Abbreviations

Symbol

Description

Registers

D

Destination register (8-bit)

See register fields below

S

Source register (8-bit)

See register fields below

RP

Register pair (16-bit)

BC, DE, HL, SP

#

Immediate operand

8 or 16-bit value

a

Memory address

16-bit

p

Port address

8-bit

ccc

Condition code

See condition codes below

Register Fields

8-bit registers are encoded as 3-bit fields:

8-bit Register Encoding

Code

Register

Description

111

A

Accumulator

000

B

General purpose

001

C

General purpose

010

D

General purpose

011

E

General purpose

100

H

High byte of HL pair

101

L

Low byte of HL pair

110

M

Memory reference through HL

Register Pairs

16-bit register pairs are encoded as 2-bit fields:

Register Pair Encoding

Code

Pair

Description

00

BC

B:C as 16-bit register

01

DE

D:E as 16-bit register

10

HL

H:L as 16-bit register

11

SP

Stack pointer (PSW for PUSH/POP)

Condition Codes

Condition codes for conditional instructions:

Condition Codes

Code

Mnemonic

Condition

000

NZ

Zero flag not set

001

Z

Zero flag set

010

NC

Carry flag not set

011

C

Carry flag set

100

PO

Parity odd (parity flag not set)

101

PE

Parity even (parity flag set)

110

P

Positive (sign flag not set)

111

M

Minus (sign flag set)

Flag Legend

The following flags may be affected by instructions:

Flag Abbreviations

Flag

Description

Note

Z

Zero flag

Set if result is zero

S

Sign flag

Set if result is negative

P

Parity flag

Set if result has even parity

C

Carry flag

Set if carry/borrow occurred

A

Auxiliary carry

For BCD operations

Encoding Legend

For instructions that take operands:

  • db = Data byte (8-bit)

  • lb = Low byte of 16-bit value

  • hb = High byte of 16-bit value

  • pa = 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 flag

  • S = Sign flag

  • P = Parity flag

  • C = Carry flag

  • A = Auxiliary carry flag

  • - = No flags affected

Instruction Set Reference

Data Transfer Instructions

Instruction

Encoding

Description

MOV D,S

01DDDSSS

Move register to register

MVI D,#

00DDD110 db

Move immediate to register

LXI RP,#

00RP0001 lb hb

Load register pair immediate

LDA a

00111010 lb hb

Load A from memory

STA a

00110010 lb hb

Store A to memory

LHLD a

00101010 lb hb

Load HL from memory

SHLD a

00100010 lb hb

Store HL to memory

LDAX RP

00RP1010

Load indirect through BC or DE only

STAX RP

00RP0010

Store indirect through BC or DE only

XCHG

11101011

Exchange DE and HL content

Arithmetic Instructions

Instruction

Encoding

Flags

Description

ADD S

10000SSS

ZSPCA

Add register to A

ADI #

11000110 db

ZSPCA

Add immediate to A

ADC S

10001SSS

ZSPCA

Add register to A with carry

ACI #

11001110 db

ZSPCA

Add immediate to A with carry

SUB S

10010SSS

ZSPCA

Subtract register from A

SUI #

11010110 db

ZSPCA

Subtract immediate from A

SBB S

10011SSS

ZSPCA

Subtract register from A with borrow

SBI #

11011110 db

ZSPCA

Subtract immediate from A with borrow

INR D

00DDD100

ZSPA

Increment register

DCR D

00DDD101

ZSPA

Decrement register

INX RP

00RP0011

Increment register pair

DCX RP

00RP1011

Decrement register pair

DAD RP

00RP1001

C

Add register pair to HL (16-bit)

DAA

00100111

ZSPCA

Decimal Adjust accumulator

Logical Instructions

Instruction

Encoding

Flags

Description

ANA S

10100SSS

ZSPCA

AND register with A

ANI #

11100110 db

ZSPCA

AND immediate with A

ORA S

10110SSS

ZSPCA

OR register with A

ORI #

11110110 db

ZSPCA

OR immediate with A

XRA S

10101SSS

ZSPCA

Exclusive OR register with A

XRI #

11101110 db

ZSPCA

Exclusive OR immediate with A

CMP S

10111SSS

ZSPCA

Compare register with A

CPI #

11111110 db

ZSPCA

Compare immediate with A

Rotate and Shift Instructions

Instruction

Encoding

Flags

Description

RLC

00000111

C

Rotate A left

RRC

00001111

C

Rotate A right

RAL

00010111

C

Rotate A left through carry

RAR

00011111

C

Rotate A right through carry

Complement and Carry Instructions

Instruction

Encoding

Flags

Description

CMA

00101111

Complement A

CMC

00111111

C

Complement Carry flag

STC

00110111

C

Set Carry flag

Branch Instructions

Instruction

Encoding

Description

JMP a

11000011 lb hb

Unconditional jump

Jccc a

11CCC010 lb hb

Conditional jump

CALL a

11001101 lb hb

Unconditional subroutine call

Cccc a

11CCC100 lb hb

Conditional subroutine call

RET

11001001

Unconditional return from subroutine

Rccc

11CCC000

Conditional return from subroutine

RST n

11NNN111

Restart (Call n*8)

PCHL

11101001

Jump to address in HL

Stack Instructions

Instruction

Encoding

Description

PUSH RP

11RP0101

Push register pair on stack (RP=11 pushes PSW)

POP RP

11RP0001

Pop register pair from stack (RP=11 pops PSW, affects all registers)

XTHL

11100011

Swap HL with top word on stack

SPHL

11111001

Set SP to content of HL

I/O Instructions

Instruction

Encoding

Description

IN p

11011011 pa

Read input port into A

OUT p

11010011 pa

Write A to output port

Control Instructions

Instruction

Encoding

Description

EI

11111011

Enable interrupts

DI

11110011

Disable interrupts

HLT

01110110

Halt processor

NOP

00000000

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 -----
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
SZAPC ← Flags affected

Flag registers and their bit positions in PSW:

7 6 5 4 3 2 1 0
S Z - A - P - C
  1. C: Carry flag; set to carry out of bit 7 in result
  2. P: Parity flag; set if the number of bits in the result is even, and reset if it's odd
  3. No flag, bit is always 0 in PSW
  4. A: Auxiliary Carry (AC) flag; set to carry out of bit 3 in result
  5. Z: Zero flag; set if the result was zero, reset otherwise
  6. 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