写一条 ARM 指令,完成操作r1 = r2 * 3(4分) ADD R1,R2,R2, LSL #1

2024-12-16 05:00:59
推荐回答(2个)
回答1:

ADD R1,R2,R2, LSL #1

=> R1= R2+R2<<1 = R2+R2*2 =R2*3;

是的,左移2位就是乘2*2。

逻辑左移是从2进制来看,比如结尾是01,左移变10,1变成了2。

对比十进制来看,十进制的一个数左移一位,后面加了个0,相当于乘10。

二进制左移也是后面添0,只不过是最高位移到进位标志里,结果就是乘以2。

扩展资料:

128 位结果: 寄存器 0、1、2、和 3

第一个 128 位数: 寄存器 4、5、6、和 7

第二个 128 位数: 寄存器 8、9、10、和 11。

ADDS R0, R4, R8 ; 加低端的字

ADCS R1, R5, R9 ; 加下一个字,带进位

ADCS R2, R6, R10 ; 加第三个字,带进位

ADCS R3, R7, R11 ; 加高端的字,带进位

注意: 如果如果要做这样的加法,不要忘记设置 S 后缀来更改进位标志。

参考资料来源:百度百科-ARM指令集

回答2:

ADD R1,R2,R2, LSL #1
=> R1= R2+R2<<1 = R2+R2*2 =R2*3;