op2, ASR #sh_imm
其中:
op2 |
指定包含要移位的值的暫存器。 |
ASR |
指示算術右移。 |
sh_imm |
指定移位。此值介於 1 與 32 之間。移 32 位使用 sh_imm == 0 編碼表示。 |
數據處理運算元“按立即數算術右移”執行以下操作(偽程式碼說明):
if sh_imm == 0 then
if op2[31] == 0 then
addr_mode = 0
shifter_carry_out = op2[31]
else /* op2[31] == 1 */
addr_mode = 0xFFFFFFFF
shifter_carry_out = op2[31]
else /* sh_imm > 0 */
addr_mode = op2 Arithmetic_Shift_right sh_imm
shifter_carry_out = op2[sh_imm -1]
此數據處理運算元提供右移暫存器(除以 2 的常數次冪)的有符號值。
此指令運算元代表按立即數算術右移的暫存器 op2 的值,該立即數介於 1 與 32 之間。在騰出的位中,將插入 op2 ( op2 [31] ) 的符號位。最後移出的位是移位器的進位。
31 |
|
|
28 |
27 |
26 |
25 |
24 |
|
|
21 |
20 |
19 |
|
|
16 |
condition |
0 |
0 |
0 |
opcode |
S |
basereg |
15 |
|
|
12 |
11 |
|
|
|
7 |
6 |
5 |
4 |
3 |
|
|
0 |
dest |
sh_imm |
1 |
0 |
0 |
op2 |