对存储指令STMIA R0!, {R2-R7, R12};的含义叙述正确的是( )
A. 将寄存器R2~R7以及R12的值保存到R0所指向的存储单元中,存储指针在保存第一个值之前减少,增长方向为向下增长。
B. 将寄存器R2~R7以及R12的值保存到R0所指向的存储单元中,存储指针在保存第一个值之后减少,增长方向为向下增长。
C. 将寄存器R2~R7以及R12的值保存到R0所指向的存储单元中,存储指针在保存第一个值之前增加,增长方向为向上增长。
D. 将寄存器R2~R7以及R12的值保存到R0所指向的存储单元中,存储指针在保存第一个值之后增加,增长方向为向上增长。
查看答案
对对寄存器加载指令LDMFA SP!, {R0-R7, PC};的含义叙述正确的是( )
A. 压栈操作,将寄存器R0~R7以及PC的值压入以寄存器SP的值为栈顶的堆栈中,在存入第一个数据前栈顶指针增加,堆栈为递增堆栈。
B. 压栈操作,将寄存器R0~R7以及PC的值压入以寄存器SP的值为栈顶的堆栈中,在存入第一个数据后栈顶指针增加,堆栈为递减堆栈。
C. 出栈操作,从以寄存器SP的值为栈顶的堆栈中将数据推出并加载至寄存器R0~R7以及PC中,在推出第一个数据后栈顶指针的值减小,堆栈为递增堆栈。
D. 出栈操作,从以寄存器SP的值为栈顶的堆栈中将数据推出并加载至寄存器R0~R7以及PC中,在推出第一个数据前栈顶指针的值减小,堆栈为递减堆栈。
对指令ADDR1,R1,R2,LSLR3;的解读正确的是:
A. 将R1的值右移R2位,然后和R3相加,结果存放在R1中。
B. 将R1的值左移R2位,然后和R3相加,结果存放在R1中。
C. 将R2的值右移R3位,然后和R1相加,结果存放在R1中。
D. 将R2的值左移R3位,然后和R1相加,结果存放在R1中。
以下对加载指令 LDR R1,[R2]; 的解读正确的是:
A. 将R2中的数据读出保存到R1中。
B. 将R1中的数据存储到R2中。
C. 将R1中的数据存储到R2指向的存储单元中。
D. 将R2指向的存储单元的数据读出保存在R1中。
在ARM数据处理指令中,当参与操作的第2操作数为立即数时,这个立即数需要采用一个8位的常数循环右移偶数位而间接得到,即该常数必须对应8位位图。通常,判断一个数是否符合8位位图的原则,首先看这个数的二进制表示中1的个数是否不超过8个。如果不超过8个,再看这n个1(n<=8)是否能同时放到8个二进制位中,如果可以放进去,再看这八个二进制位是否可以循环右移偶数位得到我们欲使用的数。如果可以,则此数符合8位位图原理, 是合法的立即数。否则,不符合。根据上述原则,请判断以下哪一项是有效的立即数:
A. 0xFFFFFFFF
B. 0xFF003
C. 0x104
D. 0x102