Compare Index Register

Compare Index Register with Memory

The CPX & CPY instructions subtracts the data at the address in the operand from the contents of the relevant index register, setting the n, z & c flags based on the result. The register & Memory are unaffected by this operation.

The primary use of the CPX or CPY instructions is to test the value of the index register against loop boundaries.

Data size

On all processors, the data added from memory is 8-bit. However, for 16-bit processors with the m flag is clear then the data added is 16-bit with the low-order 8-bits at the effective address and the high-order 8-bits at the effective address plus one.

Flags Affected
Flags
n-----zc
nSet if most-significant bit of result is set
zSet if result is zero
cSet if register value greater than or equal or Cleared if less than memory value
Instructions
SyntaxOpcode Available on: # of # of Addressing Mode
(hex) 6502 65C02 65816 bytes cycles
CPX #constE0 x x x 21 22 Immediate
CPX addrEC x x x 3 42 Absolute
CPX dpE4 x x x 2 32, 3 Direct Page
CPY #constC0 x x x 21 22 Immediate
CPY addrCC x x x 3 42 Absolute
CPY dpC4 x x x 2 32, 3 Direct Page

Notes:

  1. 65816: Add 1 byte if m=0 (16-bit memory/accumulator)
  2. 65816: Add 1 cycle if m=0 (16-bit memory/accumulator)
  3. 65816: Add 1 cycle if low byte of Direct Page register is not 0

Last modified November 5, 2021: Add instruction categories (6b74ff9)