GameBoy CPU InstructionSet Sheet (GCISheet)
QuickJump Navigator:
ADC A,n
ADD A,n
ADD HL,n
ADD SP,n
AND n
BIT b,r
CALL n
CALL cc,n
CCF
CP n
CPL
DAA
DEC n
DEC nn
DI
EI
INC n
INC nn
JP n
JP cc,n
JP [HL]
JR n
JR cc,n
HALT
LD A,n
LD n,A
LD A,[C]
LD A,[HL+]
LD A,[HL-]
LD A,[HLI]
LD A,[HLD]
LD [C],A
LD [HL+],A
LD [HL-],A
LD [HLI],A
LD [HLD],A
LD r1,r2
LD n,nn
LD HL,[SP+n]
LD SP,HL
LD [n],SP
LDD A,[HL]
LDD [HL],A
LDH [n],A
LDH A,[n]
LDHL SP,n
LDI A,[HL]
LDI [HL],A
NOP
OR n
POP nn
PUSH nn
RES b,r
RET
RET cc
RETI
RL n
RLC n
RR n
RRC n
RST n
SBC A,n
SCF
SET b,r
SLA n
SRA n
SRL n
STOP
SUB n
SWAP n
XOR n

ADC A,n       - Add n + Carry flag to A.

			

	n = A,B,C,D,E,H,L,(HL),#

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Set if carry from bit 3.

		C - Set if carry from bit 7.

			
Top

ADD A,n       - Add n to A.

			

	n = A,B,C,D,E,H,L,(HL),#

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Set if carry from bit 3.

		C - Set if carry from bit 7.

			
Top

ADD HL,n      - Add n to HL.

			

	n = BC,DE,HL

			

	Flags affected:

		Z - Not affected

		N - Reset.

		H - Set if carry from bit 11.

		C - Set if carry from bit 15.

			
Top

ADD SP,n      - Add n to Stack Pointer (SP).

			

	n = one byte signed immediate value

			

	Flags affected:

		Z - Reset.

		N - Reset.

		H - Set or reset according to operation.

		C - Set or reset according to operation.

			
Top

AND n         - Logically AND n with A, result in A.

			

	n = A,B,C,D,E,H,L,(HL),#

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Set.

		C - Reset.

			
Top

BIT b,r       - Test bit b in register r.

			

	b = 0-7, r = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if bit b of register r is 0.

		N - Reset.

		H - Set.

		C - Not affected.

			
Top

CALL n        - Push address of next instruction onto

		stack and then jump to address n.

				

	Flags affected:

		None

			
Top

CALL cc,n     - Call address n if following condition

		is true:

			

	cc = NZ, Call if Z flag is reset.

	cc = Z,  Call if Z flag is set.

	cc = NC, Call if C flag is reset.

	cc = C,  Call if C flag is set.

			

	Flags affected:

		None

			
Top

CCF           - Complement carry flag.

			

	If C flag is set then reset it.

	If C flag is reset then set it.

			

	Flags affected:

		Z - Not affected.

		N - Reset.

		H - Reset.

		C - Complemented.

			
Top

CP n          - Compare A with n.

			

	This is basically an A - n subtraction

	instruction but the results are thrown away.

			

	n = A,B,C,D,E,H,L,(HL),#

			

	Flags affected:

		Z - Set if result is zero. (Set if A = n)

		N - Set.

		H - Set if no borrow from bit 4.

		C - Set for no borrow. (Set if A < n.)

			
Top

CPL           - Complement A register. (Flip all bits.)

			

	Flags affected:

		Z - Not affected.

		N - Set.

		H - Set.

		C - Not affected.

			
Top

DAA           - Decimal adjust register A.

			

	This instruction adjusts register A so that the

	correct representation of Binary Coded Decimal

	(BCD) is obtained.

			

	Flags affected:

		Z - Set if register A is zero.

		N - Not affected.

		H - Reset.

		C - Set of reset according to operation.

			
Top

DEC n         - Decrement register n.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Set.

		H - Set if no borrow from bit 4.

		C - Not affected.

			
Top

DEC nn        - Decrement register nn.

			

	nn = BC,DE,HL,SP

			

	Flags affected:

		None

			
Top

DI            - Disable interrupts.

			

	Flags affected:

		None

			
Top

EI            - Enable interrupts.

			

	This instruction enables the interrupts but not immediately.

	Interrupts are enabled after the instruction after EI is

	executed.

			

	Flags affected:

		None

			
Top

INC n         - Increment register n.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Set if carry from bit 3.

		C - Not affected.

			
Top

INC nn        - Increment register nn.

			

	n = BC,DE,HL,SP

			

	Flags affected:

		None

			
Top

JP n          - Jump to address n.

			

	n = two byte immediate value. (LSByte first)

			

	Flags affected:

		None

			
Top

JP cc,n       - Jump to address n if following condition

		is true:

			

	n = two byte immediate value. (LSByte first.)

			

	cc = NZ, Jump if Z flag is reset.

	cc = Z,  Jump if Z flag is set.

	cc = NC, Jump if C flag is reset.

	cc = C,  Jump if C flag is set.

			

	Flags affected:

		None

			
Top

JP [HL]       - Jump to address contained in HL.

			

	Flags affected:

		None

			
Top

JR n          - Add n to current address and jump to it.

			

	n = one byte signed immediate value.

			

	Flags affected:

		None

			
Top

JR cc,n       - If following condition is true then

		add n to current address and jump to it:

			

	n = one byte signed immediate value

			

	cc = NZ, Jump if Z flag is reset.

	cc = Z,  Jump if Z flag is set.

	cc = NC, Jump if C flag is reset.

	cc = C,  Jump if C flag is set.

			

	Flags affected:

		None

			
Top

HALT          - Power down CPU until an interrupt occurs.

			

	Flags affected:

		None

			
Top

LD A,n        - Put value n into A.

			

	n = A,B,C,D,E,H,L,(BC),(DE),(HL),(nnnn),#

			

	Flags affected:

		None

			
Top

LD n,A        - Put value A into n.

			

	n = A,B,C,D,E,H,L,(BC,(DE),(HL),(nnnn)

			

	Flags affected:

		None

			
Top

LD A,[C]      - Put value at address $FF00 + register C into A.

			

	Flags affected:

		None

			
Top

LD A,[HL+]    - Same as LD A,[HLI].

			
Top

LD A,[HL-]    - Same as LD A,[HLD].

			
Top

LD A,[HLI]    - Put value at address HL into A. Increment HL.

			

	Flags affected:

		None

			
Top

LD A,[HLD]    - Put value at address HL into A. Decrement HL.

			

	Flags affected:

		None

			
Top

LD [C],A      - Put A into address $FF00 + register C.

			

	Flags affected:

		None

			
Top

LD [HL+],A    - Same as LD [HLI],A.

			
Top

LD [HL-],A    - Same as LD [HLD],A.

			
Top

LD [HLI],A    - Put A into memory address HL. Increment HL.

			

	Flags affected:

		None

			
Top

LD [HLD],A    - Put A into memory address HL. Decrement HL.

			

	Flags affected:

		None

			
Top

LD r1,r2      - Put value r2 into r1.

			

	Flags affected:

		None

			
Top

LD n,nn       - Put value nn into n.

			

	n = BC,DE,HL,SP

	nn = 16 bit immediate value

			

	Flags affected:

		None

			
Top

LD HL,[SP+n]  - Put SP + n into HL.

			

	n = one byte signed immediate value

			

	Flags affected:

		Z - Reset.

		N - Reset.

		H - Set or reset according to operation.

		C - Set or reset according to operation.

			
Top

LD SP,HL      - Put HL into Stack Pointer (SP).

			

	Flags affected:

		None

			
Top

LD [n],SP     - Put Stack Pointer (SP) at address n.

			

	n = two byte immediate address

			

	Flags affected:

		None

			
Top

LDD A,[HL]    - Same as LD A,[HLD].

			
Top

LDD [HL],A    - Same as LD [HLD],A.

			
Top

LDH [n],A     - Put A into memory address $FF00 + n.

			

	n = one byte immediate value

			

	Flags affected:

		None

			
Top

LDH A,[n]     - Put memory address $FF00 + n into A.

			

	n = one byte immediate value

			

	Flags affected:

		None

			
Top

LDHL SP,n     - Same as LD HL,[SP+n]

			
Top

LDI A,[HL]    - Same as LD A,[HLI].

			
Top

LDI [HL],A    - Same as LD [HLI],A.

			
Top

NOP           - No operation.

			

	Flags affected:

		None

			
Top

OR n          - Logical OR n with register A, result in A.

			

	n = A,B,C,D,E,H,L,(HL),#

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Reset.

			
Top

POP nn        - Pop two bytes off stack into register pair nn.

		Increment Stack Pointer (SP) twice.

			

	nn = AF,BC,DE,HL

			

	Flags affected:

		None

			
Top

PUSH nn       - Push register pair nn onto stack.

		Decrement Stack Pointer (SP) twice.

			

	nn = AF,BC,DE,HL

			

	Flags affected:

		None

			
Top

RES b,r       - Reset bit b in register r.

			

	b = 0-7, r = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		None

			
Top

RET           - Pop two bytes from stack & jump to that address.

			

	Flags affected:

		None

			
Top

RET cc        - Return if following condition is true:

			

	cc = NZ, Return if Z flag is reset.

	cc = Z,  Return if Z flag is set.

	cc = NC, Return if C flag is reset.

	cc = C,  Return if C flag is set.

			

	Flags affected:

		None

			
Top

RETI          - Pop two bytes from stack & jump to that address

		then enable interrupts.

			

	Flags affected:

		None

			
Top

RL n          - Rotate n left through Carry flag.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Contains old bit 7 data.

			
Top

RLC n         - Rotate n left. Old bit 7 to Carry flag.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Contains old bit 7 data.

			
Top

RR n          - Rotate n right through Carry flag.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Contains old bit 0 data.

			
Top

RRC n         - Rotate n right. Old bit 0 to Carry flag.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Contains old bit 0 data.

			
Top

RST n         - Push present address onto stack.

		Jump to address $0000 + n.

			

	n = $00,$08,$10,$18,$20,$28,$30,$38

			

	Flags affected:

		None

			
Top

SBC A,n       - Subtract n + Carry flag from A.

			

	n = A,B,C,D,E,H,L,(HL),#

			

	Flags affected:

		Z - Set if result is zero.

		N - Set.

		H - Set if no borrow from bit 4.

		C - Set if no borrow.

			
Top

SCF           - Set Carry flag.

			

	Flags affected:

		Z - Not affected.

		N - Reset.

		H - Reset.

		C - Set.

			
Top

SET b,r       - Set bit b in register r.

			

	b = 0-7, r = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		None

			
Top

SLA n         - Shift n left into Carry. LSBit of n set to 0.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Contains old bit 7 data.

			
Top

SRA n         - Shift n right into Carry. MSBit doesn't change.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Contains old bit 0 data.

			
Top

SRL n         - Shift n right into Carry. MSBit of n set to 0.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Contains old bit 0 data.

			
Top

STOP          - ???

			

	Flags affected:

		?

			
Top

SUB n         - Subtract n from A.

			

	n = A,B,C,D,E,H,L,(HL),#

			

	Flags affected:

		Z - Set if result is zero.

		N - Set.

		H - Set if no borrow from bit 4.

		C - Set if no borrow.

			
Top

SWAP n        - Swap upper & lower bits of n.

			

	n = A,B,C,D,E,H,L,(HL)

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Reset.

			
Top

XOR n         - Logical exclusive OR n with

		register A, result in A.

			

	n = A,B,C,D,E,H,L,(HL),#

			

	Flags affected:

		Z - Set if result is zero.

		N - Reset.

		H - Reset.

		C - Reset.

			
Top

All material on this page is Copyright (c) 1999 by col_deamon. All rights reserved.
Last updated: 11.25.99 09:46