A instrução ASR é semelhante ao instrução LSR. Porém, a instrução ASR trabalha com valores sinalizados.
O bit mais significativo é mantido quando o deslocamento é feito, preservando assim o sinal do valor contido
no registrador.
Sintaxe
MNEMÔNICO{<cond>}{S} Rd, Rm, ASR #imediato_5bits
MNEMÔNICO{<cond>}{S} Rd, Rm, ASR Rs
Operação
C <- Rm[Bit 0]
Rm >> #imediato_5bits
Rm[Bit 31] <- Rm[Bit 31]
Endereçamento:
Rm, ASR #<deslocamento_imediato>
Rm, ASR Rs
CPSR
N: a
Z: a
C: a
V: -
Ex:
MOV R1, #FFFFFFFD ; -4
MOV R0, R1, ASR #1
;R0 = FFFFFFFE (-2) ; C = 0
MOV R1, #80000000 ; -2.147.483.648
MOV R0, R1, ASR #1
;R0 = C0000000 (-1.073.741.824) ; C = 0