题目
ARM汇编语句“ADD R0, R2, R3, LSL#1”的作用是( )A. R0 = R2 + (R3 〈〈 1)B. R0 =( R2〈〈 1) + R3C. 。 R3= R0+ (R2 〈D. (R3 〈
ARM汇编语句“ADD R0, R2, R3, LSL#1”的作用是( )
A. R0 = R2 + (R3 〈〈 1)
B. R0 =( R2〈〈 1) + R3
C. 。 R3= R0+ (R2 〈< 1)
D. (R3 〈< 1)= R0+ R2
题目解答
答案
A. R0 = R2 + (R3 〈〈 1)
解析
本题考查ARM汇编指令中ADD语句的语法及操作数处理。关键在于理解操作数的位移修饰符(如LSL#1)的作用对象以及指令中各操作数的顺序。
核心思路:
- ADD指令的格式:
ADD <目的寄存器>, <源操作数1>, <源操作数2, 位移修饰符>。 - 位移修饰符的作用对象:修饰符(如LSL#1)作用于第三个操作数(即源操作数2)。
- 运算逻辑:将源操作数1与经过位移修饰后的源操作数2相加,结果存入目的寄存器。
指令拆解
指令 ADD R0, R2, R3, LSL#1 的各部分含义:
- 目的寄存器:
R0(存储最终结果)。 - 源操作数1:
R2(直接参与加法)。 - 源操作数2:
R3,并附加修饰符LSL#1(逻辑左移1位)。
运算过程
- 处理源操作数2:将
R3的值逻辑左移1位(等价于乘以2)。 - 加法运算:将
R2的值与左移后的R3相加。 - 存储结果:将加法结果存入
R0。
选项分析
- 选项A:
R0 = R2 + (R3 << 1),正确反映指令逻辑。 - 选项B:错误地将位移应用在
R2上。 - 选项C、D:目的寄存器或操作数顺序错误。