Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

  1. Instruções de comparação
  2. CMP
  3. CPX
  4. CPY
  5. interpretando flags

As instruções de comparação são utilizadas para comparar valores de memória ou imediato, com os registradores Acumulador, X e Y atualizando as flags de status de acordo com o resultado.

Internamente, o 6502 realiza uma operação de subtração e o resultado é utilizado para setar as flags N, Z e C e posteriormente descartado. A flag Carry é alterado como em SBC, mas não usada como operando. A flag V não é alterada.

Notação utilizada
#$NN Valor hexadecimal imediato
#$NNNN; Endereço hexadecimal imediato
$NNNN Endereço hexadecimal
$NN ou h Valor hexadecimal
; Comentário
() Conteúdo de memória
Flags
a Alterada de acordo com resultado
- Não sofre alteração
0 Sempre zero
1 Sempre um

Mais informações sobre os registradores e flags podem ser vistas em Registradores.

Esta instrução compara um valor de memória ou imediato com o registrador Acumulador e atualiza as flags de acordo com o resultado.

Operação
Z,C,N <- A - (M)
Z,C,N <- A - #$NN
Endereçamento
Imediato CMP #$NN
Página Zero CMP $NN
Página Zero,X CMP $NN,X
Absoluto CMP $NNNN
Absoluto,X CMP $NNNN,X
Absoluto,Y CMP $NNNN,Y
Indireto X CMP ($NN,X)
Indireto Y CMP ($NN),Y
PS - Flags afetadas
N: resultado[bit 7]
V: -
B: - 
D: -
D: -
Z: resultado == 0 ? 1: 0
C: houve empréstimo ? 0 : 1
Ex.:
LDA #$01
CMP #$01 ; Z = 1 N = 0 e C=0

Esta instrução compara um valor de memória ou imediato com o registrador X e atualiza as flags de acordo com o resultado.

Operação
Z,C,N = X - (M)
ou
Z,C,N = X - #$NN
Endereçamento
Imediato CPX #$NN
Página Zero CPX $NN
Absoluto CPX $NNNN
PS - Flags afetadas
N: resultado[bit 7]
V: -
B: - 
D: -
D: -
Z: resultado == 0 ? 1: 0
C: houve empréstimo ? 0 : 1
Ex.:
LDX #$01
CPX #$01 ; Z = 1 N = 0 e C=0

Esta instrução compara um valor de memória ou imediato com o registrador Y e atualiza as flags de acordo com o resultado.

Operação
Z,C,N = Y - (M)
ou
Z,C,N = Y - #$NN
Endereçamento
Imediato CPY #$NN
Página Zero CPY $NN
Absoluto CPY $NNNN
PS - Flags afetadas
N: resultado[bit 7]
V: -
B: - 
D: -
D: -
Z: resultado == 0 ? 1: 0
C: houve empréstimo ? 0 : 1
Ex.:
LDY #$01
CPY #$01 ; Z = 1 N = 0 e C=0
  1. 11/05/2026 - revisão 4 - Ajustes: objetivos, intro e sintaxes; Adição: como setar flags
  2. 12/03/2025 - revisão 3 - ajuste em intro
  3. 11/09/2024 - revisão 2 - adição de flags afetadas, correção em CPY
  4. 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação
  5. 28/04/2023 - versão inicial