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

  1. CMPM - Comparar Memória
  2. TAS - Testar e Setar
  3. TST - Comparar com zero
  4. Scc - Setar de acordo com condição cc

As instruções de comparação comparam registradores e valores de memória e setam os bits do CCR de acordo com o resultado. Internamente, um operação de subtração é realizada, porém o resultado é descartado sendo apenas utilizado para atualização das flags.

Abaixo, a notação utilizada ao longo dos tópicos abordados nesta parte do tutorial:

Tab. 1: Notação utilizada
Símbolo Descrição
-> Atribuição
- Subtração
ee Endereço efetivo
CCR
a Alterada de acordo com resultado
- Não sofre alteração
0 Sempre zero
1 Sempre um

Mais informações sobre registradores, visite Registradores e para mais informações sobre modos de endereçamento, visite Modos de Endereçamento.

Com a instrução CMP, podemos comparar registrados de dados e/ou valor em memória. As flags do CCR são atualizados de acordo com o resultado.

Operação
flags <- destino - origem
Endereçamento Destino
Dx
Endereçamento Origem
Dx, An, (Ax), (Ax)+, ‑(Ax), n(Ax), n(Ax,Dx[.W|.L]|Ax[.W|.L]), absoluto.W, absoluto.L e #imediato
Tamanho do dado
Byte, Word e Longword
CCR
X: -
N: a
Z: a
V: a
C: a ; 1 sem empréstimo, 0 com empréstimo
Sintaxe
CMPA Ax, Ay
CMPA ee,Ax
Exemplo
;A0 = 0000ffff A1 = 0000ffff
CMPA.W A0,A1
; Z = 1, N = 0, V= 0, C = 1(sem empréstimo), X = -

CMPA.L A4,A5

A instrução CMPA, é semelhante a instrução CMP, mas comparar valores contidos nos registradores A0-7. As flags do CCR são atualizados de acordo com o resultado.

Quando um endereço Word é utilizado, esse é extendido para Longword antes da comparação. Isso é feito baseado no bit mais significativo do endereço.

Operação
flags <- destino - origem
Endereçamento Destino
Ax
Endereçamento Origem
Dx, An, (Ax), (Ax)+, ‑(Ax), n(Ax), n(Ax,Dx[.W|.L]|Ax[.W|.L]), absoluto.W, absoluto.L e #imediato
Tamanho do dado
Word e Longword
CCR
X: -
N: a
Z: a ; 1 se bit numero_bit igual a 0, 0 caso contrário.
V: a
C: a ; 1 sem empréstimo, 0 empréstimo
Sintaxe
CMPA Ax, Ay
CMPA ee, Ax
Ex
;D0 = 00000001 D1 = 00000001
CMPA.W D0,D1
; Z = 1, N = 0, V= 0, C = 1(sem empréstimo), X = -
    
CMPA.W A2,D3
CMPA.L A4,D5

A instrução CMPI, é semelhante a instrução CMP, mas compara valores imediatos com registradores de dados ou valor em memória. As flags do CCR são atualizados de acordo com o resultado.

Operação
flags <- destino - imediato
Endereçamento Origem
#imediato
Endereçamento Destino
Dx, (Ax), (Ax)+, ‑(Ax), n(Ax), n(Ax,Dx[.W|.L]|Ax[.W|.L]), absoluto.W, absoluto.L, n(PC), n(PC,Dx[.W|.L]|Ax[.W|.L])
Tamanho do dado
Byte, Word e Longword
CCR
X: -
N: a
Z: a 
V: a
C: a ; 1 sem empréstimo, 0 empréstimo
Sintaxe
CMPI #$FF, D0
CMPI.W #$FFFF, D1
CMPI.L #00123456,(An)
Exemplo
CMPI.B #$FF,D0  
CMPI.W #$FFAA,(A0)
CMPI.L #00123456,D7

A instrução CMPM, é semelhante a instrução CMP, mas compara valores em memória. As flags do CCR são atualizados de acordo com o resultado.

Operação
flags <- memoria_destino - memoria_origem
Endereçamento Origem
(Ax)+
Endereçamento Destino
(Ay)+
Tamanho do dado
Byte, Word e Longword
CCR
X: -
N: a
Z: a 
V: a
C: a ; 1 sem empréstimo, 0 empréstimo
Sintaxe
CMPM.B (Ax)+,(Ay)+
CMPM.W (Ax)+,(Ay)+
CMPM.L (Ax)+,(Ay)+
Exemplo
CMPM.B (A0)+,(A1)+  
  1. 05/09/2024 - Revisão 1 - Correção em erros gramaticais e em descrição de CMPM.
  2. 08/04/2024 - versão inicial