A instrução ROXL rotaciona todos bits, em uma ou mais posição à esquerda, de um registrador de dados ou
valor em memória. Os bits mais significativos são copiado para a flags Carry(C) e Extend(X) e
os espaços à direita são preenchidos com os bits Extend(X) no destino.
As 3 possibilidades de uso estão abaixo:
- - Deslocar de 1 a 8 bits informados em outro registrador de dado
- - Deslocar uma quantidade de bits informada em um valor imediato
- - Deslocar 1 bit de um dado Word em memória
Abaixo um exemplo básico do deslocamento de 1 bit em um valor de 8-bits.
Tab.10: Flags X/C e valor 8-bits
X |
C |
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
- |
- |
1* |
0 |
0 |
0 |
0 |
0 |
0 |
1** |
Tab.11: valor 8-bits rotacionado 1 bit à esquerda
X |
C |
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
1* |
1* |
0 |
0 |
0 |
0 |
0 |
0 |
1** |
1* |
Operação
destino <- destino <<> numero_bits
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, Word e Longword
CCR
X: a - Bit mais significativo se numero_bits maior que 0, inalterada caso contrário.
N: a
Z: a
V: 0
C: X
Sintaxe
ROXL Dx,Dy
ROXL #imediato,Dx
ROXL absoluto.W
ROXL absoluto.L
Ex
ROXL.W #$02,D0
ROXL.L D1,D3
ROXL.W $FFFFFF00