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

As instruções de Set(Scc), testam as condições das flags contidas no CCR e setam um valor em um endereço em memória ou registrador de dados com 0xff ou 0x00.

Para trabalhar com coprocessadores ou testar valores em memória/registrador, as instruções de teste TAS e TST são utilizadas.

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
<-> Troca/Permuta de valores
i Registrador Início
f Registrador Fim
; Comentário
CCR
a Alterada de acordo com resultado
- Não sofre alteração
0 Sempre zero
1 Sempre um

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

A instrução TAS é utilizada quando trabalhamos com multiprocessadores. Esse instrução testa um Byte em um endereço de memória e seta seu Bit 7 que é usado como semáforo para indicar se o valor está liberado para uso.

Nenhum outro processador tem acesso ao valor testado enquanto a instrução TAS é executada.

Operação
flags <- 0 - operando
operando(bit7) <- 1
Endereçamento Origem
Dx, (Ax), (Ax)+, -(Ax), n(Ax), n(Ax,Dx[.W|.L]|Ax[.W|.L]), absoluto.W, absoluto.L
Tamanho do dado
Byte
CCR
X: -
N: a
Z: a 
V: 0
C: 0 
Sintaxe
TAS.B (Ax)
TAS.B $FFFF
TAS.B (Ax)+
Ex
TAS.B (A0)+
TAS.B $FFFF00
TAS.B $FFFF

A instrução TST é utilizada quando precismos testar um valor de memória Byte, Word ou Longword e descobrir o se valor, por exemplo, é igual zero ou negativo. Essa instruções utiliza as flags Z e N que são atualizadas de acordo como resultado do teste.

Operação
flags <- 0 - origem
Endereçamento Origem
Dx, (Ax), (Ax)+, -(Ax), n(Ax), n(Ax,Dx[.W|.L]|Ax[.W|.L]), absoluto.W, absoluto.L
Tamanho do dado
Byte, Word e Longword
CCR
X: -
N: a
Z: a 
V: 0
C: 0 
Sintaxe
TST.B (Ax)
TST.W $FFFF
TST.L (Ax)+
Ex
TAS.B (A0)+
TAS.B $FFFF00
TAS.B $FFFF

A instrução Scc(Set/Setar) utiliza as flags do registrador CCR para checagem de condições e setar todos os bits de byte em uma posição de memória ou registrador de dados.

Se a condição cc for verdade(true), o byte em memória ou registrador é alterado para 0xff. Caso contrário, o valor é alterado para 0x00.

Essa instrução Scc é utilizada em conjunto com as instrução de teste e comparação TST e CMP respectivamente.

Operação
se cc = 1 
   entao 
        destino <- 0xff 
   senao 
        destino <- 0x00
Endereçamento Origem
-
Endereçamento Destino
Dx, (Ax), (Ax)+, -(Ax), n(Ax), n(Ax,Dx[.W|.L]|Ax[.W|.L]), absoluto.W, absoluto.L
Tamanho do dado
Byte
CCR
X: -
N: -
Z: -
V: -
C: -

Abaixo a tabela contendo os possíveis valores para as condições cc da instrução Scc:

Tab. 2: Tabela de condições cc
Sigla(cc) Descrição Lógica
CC Carry Clear C = 0
CS Carry Set C = 1
EQ EQual Z = 1
GE Greater than or Equal -
GT Greater than -
HI Higher than C = 0 + Z = 0
LE Less than or Equal -
LS Lower than or Same C=1 + Z=1
LT Less than N=1 + V=0, N=0 + V=1
MI Minus N = 1
NE Not Equal Z = 0
PL Plus N = 0
VC oVerflow Clear V = 0
VS oVerflow Set V = 1
F false 0
T true 1
Sintaxe
Scc.B (Ax)
Scc.B Dx
Scc.B -(Ax)
Scc.B (Ax)+
Exemplo
;D0=00000001 D1=00000001 D3=00000000 D4=000000FF
CMP.B D0, D1 ; Z=1
SEQ.B D3
SNE.B D4
;D3=000000FF D4=00000000
  1. 05/09/2024 - Revisão 1 - Correção em exemplos e sintaxes TST/TAS
  2. 11/04/2024 - versão inicial