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