Objetivos
Comparação e Busca
As instruções de busca percorrem dados em memória comparando-os com o conteúdo do registrador
A apenas. Os registradores HL e BC são usados como endereço de origem dos dados e contador
respectivamente.
A instrução de comparação executa uma operação de subtração entre um operando e o
registrador A. As flags de status contidas no registrador F são atualizadas de acordo
com o resultado que é descartado após o término da execução.
Notação utilizada:
- r - registrador de uso geral
- n - valor 8-bits
- d - valor 8-bits sinalizado
- () - conteúdo em memória
A instrução CP subtrai do registrador A um valor contido em um operando da instrução. Essa
instrução é utilizada em conjunto com CALL, JP e JR na tomada para desvio de fluxo.
Operação:
resultado <- A - operando
Sintaxe
LDI
Operandos/ME:
F(Flags)
S: 1 se negativo; 0, caso contrário.
Z: 1 se 0; 0, caso contrário.
H: 1 “vem-um” de bit 5; 0, caso contrário.
P/V: 1 se overflow; 0, caso contrário.
N: 1
C: 1 se “vem-um”; 0, caso contrário.
Exemplo:
LDA #$ff
;(...)
CP #$FF
JP Z, local
;(...)
local:
;omitido
A instrução CPI compara um valor apontado por HL com o registrador A. Durante a execução,
o endereço contido em HL tem seu valor incrementado e o contador BC tem seu valor
decrementado.
Caso o contador BC seja iniciado com valor 0 antes da execução, 64K de memória serão
percorridos se o conteúdo de A não for encontrado.
Operação:
resultado <- A - (HL)
HL <- HL + 1
BC <- BC - 1
Sintaxe
CPI
Operandos/ME:
F(Flags)
S: 1 se negativo; 0 se positivo.
Z: 1 se A == (HL); caso contrário, 0.
H: 1 se “vem-um”; caso contrário, 0.
P/V: 1 se BC – 1 != 0; Caso contrário, 0.
N: 1
C: -
Exemplo:
LD DE,$F1FF
LD HL, $01FF
LD BC,#$00FF
CPI
A instrução CPIR é semelhante à instrução CPI, exceto por repetir a instrução enquanto o
contador BC for diferente de zero ou A for diferente do conteúdo de HL.
Caso o contador BC seja iniciado com valor 00h antes da execução, 64K de memória serão
percorridos se o conteúdo de A não for encontrado.
Operação:
resultado <- A - (HL)
HL <- HL + 1
BC <- BC - 1
Se BC != 0 ou A != (HL)
PC <- PC - 1
Se BC = 0 or A = (HL)
continua
Sintaxe
CPIR
Operandos/ME:
F(Flags)
S: 1 se negativo; 0 se positivo.
Z: 1 se A == (HL); caso contrário, 0.
H: 1 se "vem-um"; caso contrário, 0.
P/V: 1 se BC – 1 != 0; Caso contrário, 0.
N: 1
C: -
Exemplo:
LD DE,$F1FF
LD HL, $01FF
LD BC,#$00FF
CPIR
A instrução CPD compara um valor contido em HL com o valor contido no registrador A.
Durante a execução, o endereço contido no par HL e o contador BC têm seus valores
decrementados.
Caso o contador BC seja iniciado com valor 00h antes da execução, 64K de memória serão
percorridos se o conteúdo de A não for encontrado.
Operação:
resultado <- A - (HL)
HL <- HL - 1
BC <- BC - 1
Sintaxe
CPD
Operandos/ME:
F(Flags)
S: 1 se negativo; 0 se positivo.
Z: 1 se A == (HL); caso contrário, 0.
H: 1 se “vem-um”; caso contrário, 0.
P/V: 1 se BC – 1 != 0; Caso contrário, 0.
N: 1
C: -
Exemplo:
LD DE,$F1FF
LD HL, $01FF
LD BC,#$00FF
CPD
A instrução CPD compara um valor contido em HL com o valor contido no registrador A. Durante
a execução, o endereço contido no par HL e o contador BC têm seus valores decrementados
enquanto o contador BC for diferente de zero ou A for diferente do conteúdo de HL.
Caso o contador BC seja iniciado com valor 00h antes da execução, 64K de memória serão
percorridos se o conteúdo de A não for encontrado.
Operação:
resultado <- A - (HL)
HL <- HL - 1
BC <- BC - 1
Se BC != 0 ou A != (HL)
PC <- PC - 1
Se BC = 0 or A = (HL)
continua fluxo
Sintaxe
CPDR
Operandos/ME:
F(Flags)
S: 1 se negativo; 0 se positivo.
Z: 1 se A == (HL); caso contrário, 0.
H: 1 se "vem-um"; caso contrário, 0.
P/V: 1 se BC – 1 != 0; Caso contrário, 0.
N: 1
C: -
Exemplo:
LD DE,$F1FF
LD HL, $01FF
LD BC,#$00FF
CPDR
Histórico de atualizações
- 14/08/2026 - revisão 1 - Ajustes: intro e outros pontuais
- 03/08/2026 - versão inicial: CP, CPI, CPIR, CPD e CPDR
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.