在ARM中,对寄存器的操作只能用LDR和STR两条指令,LDR是读指令,一般的格式为:
LDR R0, =0xXXXX XXXX
需要注意的是后面的那个=0xXXXX XXXX代表对应的寄存器,前面的“=”格式表示该立即数就是对应的寄存器,所以这条指令的意义是,将寄存器值0xXXXX XXXX 放到R0中,当然这条指令也可以用mov指令替换,如:
MOV R0, #0xXXXX XXXX
需要注意,这个立即数前面的符号是#。 举例分析:
LDR R0, =0x5600 0010 //R0的内容就是 0x5600 0010
MOV R1, #0x0000 0400 //R1的内容就是 0x0000 0400
STR R1, [R0] // 将数值0x0000 0400赋值给寄存器0x5600 0010
为什么要用LDR呢,很简单,因为LDR长距访问寄存器,另外一方面是硬性规定。