嵌入式Linux学习笔记——汇编指令LDR、STR

学习正点原子嵌入式第二期第八讲时,涉及汇编LDR、STR指令。

嵌入式Linux学习笔记——汇编指令LDR、STR

嵌入式Linux学习笔记——汇编指令LDR、STR 

 LDR R1,[R0] 是读取R0地址所对应的数据给R1寄存器。而STR R1,[R0] 则是将R1里的数据给到R0地址中,而不是和LDR语句一样,R0地址所对应的数据?(其实这是一个很笨的问题,数据给到R0地址中,与R0地址所对应的数据是一个意思,都是修改了R0地址中所对应的数据的值)。

后查阅资料个人理解:[R0] 类似于51单片机中@R0 指R0中的值作为地址所对应的数据。

同时知道了

LDR R0,0xff (没有等号为指令)即将0xff这个值所对应的地址(即地址为0xff)中的值给到寄存器R0,相当于51中MOV R0,@R1  (R1=0xff,这里想表达的是51中的以寄存器中的值为地址所对应的值这个意思,语句MOV R0,@R1 可能有错,但表达的意思没错,已经好久没看过51的书了);为什么此处不用MOV呢?MOV只能在寄存器之间移动数据,或者把立即数移动到寄存器中。

LDR R0,=0xff (有等号为伪指令)即将0xff这个值给到寄存器R0,相当于51中取立即数;LDR伪指令和MOV的作用差不多,主要区别为MOV 操作的立即数的长度为8位,LDR伪指令没有限制。

在使用LDR伪指令时,后面跟的立即数没有超过8位,那么在实际汇编的时候该LDR伪指令是会被转换为MOV的,如下图所示。

嵌入式Linux学习笔记——汇编指令LDR、STR

 查阅资料链接为:adr adrl ldr mov总结整理 - 宋桓公 - 博客园 (cnblogs.com)

上一篇:花样LED


下一篇:树莓派驱动DHT温湿度传感器的3种方法