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

As instruções de manipulação de bits, são responsáveis por realizar as operações de set e reset de bits testando bits específicos de um registrador ou valor em memória.

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
BT Teste de Bit
! Complemento
ee Endereço efetivo
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.

Com a instruções BTST, podemos testar um bit de um registrador de dados ou valor em memória. A flag Zero(Z) é a única flag afetada e os bits 0 a 31 podem ser testados.

Para valores em memória, apenas os bits de 0 a 7 podem ser utilizados. Para registradores de dados, os bits 0 a 31 podem ser utilizados.

Operação
Z <- destino BT numero_bit
Endereçamento Origem
Dx , #imediato
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 e Longword
CCR
X: -
N: -
Z: a ; 1 se bit numero_bit igual a 0, 0 caso contrário.
V: -
C: -
Sintaxe
BTST Dx, Dy
BTST Dx,ee

Abaixo, uma demostração da aplicação da operação BTST sobre o bit 7 de um valor de 8-bits:

Tab. 2: Valor 1 - 0xCC
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
- 0 1 0 0 1 1 0 0
Tab. 3: Valor 1 - 0xCC
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 1 0 0 1 1 0 0
Exemplo
BTST.B #7,D0
BTST.L #15,D1

A instrução BSET, é utilizada para setar determinado bit de um registrador de dados ou valor em memória. A flag Zero(Z) é a única flag afetada pelo teste do bit.

Para valores em memória, apenas os bits de 0 a 7 podem ser utilizados. Para registradores de dado, os bits 0 a 31 podem ser utilizados.

Operação
Z <- destino BT numero_bit
destino[numero_bit] <- 1
Endereçamento Origem
Dx , #imediato
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 e Longword
CCR
X: -
N: -
Z: a ; 1 se bit numero_bit igual a 0, 0 caso contrário.
V: -
C: -
Sintaxe
BSET Dx, Dy
BTST Dx,ee

Abaixo, uma demostração da aplicação da operação BSET sobre o bit 7 de um valor de 8-bits:

Tab. 4: Valor 0x4C
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
- 0 1 0 0 1 1 0 0
Tab. 5: Atualizar Flag Z
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 1 0 0 1 1 0 0
Tab. 6: Setar Bit
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 1 1 0 0 1 1 0 0
Ex
BTST.B #7,D0
BTST.L #15,D1

A instrução BCLR, é o oposto da instrução BSET. A BCLR é utilizada para resetar determinado bit de um registrador de dados ou valor em memória. A flag Zero(Z) é a única flag afetada pelo teste do bit.

Para valores em memória, apenas os bits de 0 a 7 podem ser utilizados. Para registradores de dado, os bits 0 a 31 podem ser utilizados.

Operação
Z <- destino BT numero_bit
destino[numero_bit] <- 0
Endereçamento Origem
Dx , #imediato
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 e Longword
CCR
X: -
N: -
Z: a ; 1 se bit numero_bit igual a 0, 0 caso contrário.
V: -
C: -
Sintaxe
BCLR Dx, Dy
BCLR Dx,ee

Abaixo, uma demostração da aplicação da operação BCLR sobre o bit 7 de um valor de 8-bits:

Tab. 4: Valor 0xCC
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
- 1 1 0 0 1 1 0 0
Tab. 5: Atualizar Flag Z
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 1 1 0 0 1 1 0 0
Tab. 6: Resetar Bit
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 0 1 0 0 1 1 0 0
Exemplo
BTST.B #7,D0
BTST.L #15,D1

A instrução BCHG, é utilizada para inverter(complemento) o valor de um determinado bit em um registrador de dados ou valor em memória. A flag Zero(Z) é a única flag afetada pelo teste do bit.

Para valores em memória, apenas os bits de 0 a 7 podem ser utilizados. Para registradores de dado, os bits 0 a 31 podem ser utilizados.

Operação
Z <- destino BT numero_bit
destino[numero_bit] <- !destino[numero_bit]
Endereçamento Origem
Dx , #imediato
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 e Longword
CCR
X: -
N: -
Z: a ; 1 se bit numero_bit igual a 0, 0 caso contrário.
V: -
C: -
Sintaxe
BCHG Dx, Dy
BCHG Dx,ee

Abaixo, uma demostração da aplicação da operação BCHG sobre o bit 7 de um valor de 8-bits:

Tab. 4: Valor 0xCC
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
- 1 1 0 0 1 1 0 0
Tab. 5: Atualizar Flag Z
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 1 1 0 0 1 1 0 0
Tab. 6: Inverter Bit
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 0 1 0 0 1 1 0 0
Exemplo
BCHG.B #7,D0
BCHG.L #15,D1
  1. 05/09/2024 - Revisão 1 - Correção em descrição BCLR
  2. 08/04/2024 - versão inicial