A instrução ASL desloca todos bits em uma ou mais posição à direita de um registrador de dados ou valor Word
em memória. O bit menos significativo é copiado para as flags Carry(C) e Extend(X) e
os espaços à esquerda são preenchidos com bits mais significativo anterior 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.4: Flags X/C e valor 8-bits
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
C |
X |
1* |
0 |
0 |
0 |
0 |
0 |
0 |
1** |
- |
- |
Tab.5: valor 8-bits deslocado 1 bit a esquerda
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
C |
X |
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 , a - Bit menos significativo se numero_bits maior que 0, inalterada caso contrário.
N: a
Z: a
V: a , 1 se bit mais significativo mudar, 0 caso contrário.
C: X
Sintaxe
ASR Dx,Dy
ASR #imediato,Dx
ASR absoluto.W
ASR absoluto.L
Ex
ASR.B D0,D1
ASL.W #02,D2
ASL $8000
ASL $FFFF0000