Objetivos
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.
CMP - Compare Accumulator - Comparar Acumulador
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
CPX - Compare X Register - Compara Registrador X
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
CPY - Compare Y Register - Compara Registrador Y
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
Histórico de atualizações
- 11/05/2026 - revisão 4 - Ajustes: objetivos, intro e sintaxes; Adição: como setar flags
- 12/03/2025 - revisão 3 - ajuste em intro
- 11/09/2024 - revisão 2 - adição de flags afetadas, correção em CPY
- 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação
- 28/04/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.