看到一些样板程序有一条语句LDR R0,=0x3FF0000不知道上面这个等号是什么意思?能起到什么样的作用?先谢大家了!!!!
期待回音!!!
等等啊~~
TX们,还木来~
LDR R0,=0x3FF0000的意思就是把0x3FF0000这个数赋给R0
这是一种伪指令的写法。因为ARM的汇编对立即数的赋值有限制,所以0x3FF0000这个数无法用一条指令赋给寄存器。为了避免麻烦程序员自己去考虑立即数的限制,所以制定了这个伪指令LDR Rx, =0xXXXXXXXX。你只需要这么写,如果可以用一条指令完成,汇编器会把它变成相应的指令,如果不能用一条指令完成,汇编器会将它翻译成两条指令。
如果安楼上的朋友这么说是否把:
LDR RO ,=0XFF30000
改成:
MOV RO ,#0XFF30000
MOV 指令操作一个8位的数
因为我说过0XFF30000这个数超过一条指令所能赋值的限制
如果是0xff000000就可以
一条指令赋值有什么限制。0xff30000和0xff00000有什么不同吗?