臂组件语言用寄存器向右旋转

时间:2017-06-19 09:30:04

标签: assembly arm

任何人都可以帮我解释一下这段代码。我不明白这些代码。特别是什么意思? 通过R2寄存器旋转R0 。我试图理解,但我没有得到它。

问题是:

运行以下代码段后提供R0,R1,R2内容。

这是我的代码:

MOV R0, #0x0000FF00
MOV R2, #0xFF
MOV R1, R0, ROR R2
BIC R0, R1, R0
ADD R0, R0, R2

结果将在这里。

R0=........,
R1=.........., 
R2= ..........

手臂移位是如何工作的?

1 个答案:

答案 0 :(得分:1)

这是一条带有灵活的第二个操作数的MOV指令。 R0向右x位旋转,x存储R2

例如,假设

r0 = 0x01
r2 = 0x02
r1 = 0x00

指示后MOV r1, r0, ROR R2 R1将等于0x40000000,因为0x01正向旋转两位,其他寄存器将保持不变。