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

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

As instruções de comparação são utilizadas para comparar registradores, valor em memória ou imediato com o registrador Acumulador. Internamente, uma operação de subtração é executada e as flags Z, S, P, Cy e AC são atualizados de acordo com o resultado que é descartado.

A instrução CMP compara os registradores ou valor em memória com o acumulador, enquanto a instrução CPI utiliza um valor imediato para a comparação.

Esse tipo de operação é utilizada para tomada de decisões, como if e else, e utilizada em conjunto com as instruções de Desvio(Jumps e Calls condicionais).

Notação utilizada
#$NN Valor hexadecimal imediato
; Comentário
<- Atribuição
R Registradores A,B,C,D,E,H e L
M Endereço 16-bits contido em HL
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 e Flags.

Essa instrução CMP compara um dos registradores de uso geral A, B, C, D, E, H, L ou em memória com o regitrador Acumulador A.

Operação
Z, S, P, Cy, AC <- A - R
ou
Z, S, P, Cy, AC <- A - M
Endereçamento
Registrador CMP R
Indireto CMP M
Imediato CPI #$NN
F(Flags)
S: resultado[bit 7]
Z: resultado == 0 ? 1 : 0
Ac:borrow do bit 4 
P: #num bits 1 de resultado == par ? 1 : 0
Cy:borrow de bit 7
Ex.:
MVI A,#$01
MVI B,#$01
CMP B
; Z <- 1, 
; S <- 0 
; Cy,Ac <- 0

A instrução CPI é semelhante à instrução CMP, porém utiliza um valor de 8-bits imediato para a comparação com o registrador acumulador.

Operação
Z, S, P, Cy, AC <- A - #$NN
Endereçamento
Imediato CPI #$NN
F(Flags)
S: resultado[bit 7]
Z: resultado == 0 ? 1 : 0
Ac:borrow do bit 4 
P: #num bits 1 de resultado == par ? 1 : 0
Cy:borrow de bit 7
Ex.:
MVI A,#$01
CPI #$01
; Z <- 1, 
; S <- 0 
; Cy,Ac <- 0
  1. 12/05/2026 - revisão 5 - Ajustes: objetivos, intro e sintaxes; Adição: CPI , e como setar flags
  2. 13/12/2024 - revisão 4 - Ajustes pontuais
  3. 09/09/2024 - revisão 3 - Correção em erros gramaticais, endereçamentos e exemplo em CMP, adição de flags afetadas
  4. 30/08/2024 - revisão 2 - Correção em links de objetivos
  5. 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação e erros gramaticaiss
  6. 28/04/2023 - versão inicial