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

  1. Comparação e Busca
  2. CP
  3. CPI
  4. CPIR
  5. CPD
  6. CPDR

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:
  1. r - registrador de uso geral
  2. n - valor 8-bits
  3. d - valor 8-bits sinalizado
  4. () - 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:
r
n
(HL)
(IX+d)
(IY+d)
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
  1. 14/08/2026 - revisão 1 - Ajustes: intro e outros pontuais
  2. 03/08/2026 - versão inicial: CP, CPI, CPIR, CPD e CPDR