2025年ldr指令(ldr指令的功能)

ldr指令(ldr指令的功能)blockquote 作者简介 大家好我是 IM 汤姆凯特 大家可以叫我汤姆 个人主页 系列专栏 ARM 嵌入式基础 每日一句 总有一天 你坚持的东西 会返过来拥抱你 我们知道 LDR 和 MOV 都是用来传递数据的指令 什么时候用 LDR 什么时候用 MOV 呢 想要掌握 LDR 指令和 MOV 指令的用法 我们可以先了解一下 ARM 和 x86 的区别 ARM 采用的是 RISC 精简指令计算机 blockquote

大家好,我是讯享网,很高兴认识大家。



 <blockquote> 

讯享网


讯享网  作者简介:大家好我是IM汤姆凯特,大家可以叫我汤姆
 个人主页:
 系列专栏:【ARM嵌入式基础】
 每日一句:总有一天,你坚持的东西,会返过来拥抱你


我们知道LDR和MOV都是用来传递数据的指令,什么时候用LDR什么时候用MOV呢?

🌴想要掌握LDR指令和MOV指令的用法,我们可以先了解一下ARM和x86的区别

ARM采用的是RISC(精简指令计算机),x86架构采用的是CISC(复杂指令计算机)CISC架构采用庞大的指令集,可以减少编程所需要的代码行数,减轻程序员的负担,RISC采用精简指令集,包含了简单、基本的指令,通过这些简单、基本的指令,就可以组合成复杂指令,二者各有优缺点。CISC在桌面计算机和服务器中应用广泛,而RISC在嵌入式微处理器中则占有较大的市场份额。ARM系列的芯片全部基于RISC技术。

我们现在使用的计算机大部分都是冯·诺依曼结构,而ARM9系列之后基本都是用的哈佛结构,如图

 ARM结构是将程序指令存储器和数据存储器分开的,x86是合并在一起的存储结构

🧡了解完硬件的设计架构就能明白为什么LDR指令在x86汇编中是不存在的,因为x86中程序指令存储器和数据存储器是在一块的直接用mov就可以从内存传递数据,而ARM必须通过LDR才能内存中读取数据。


1.可以把内存中32位的字数据传送到寄存器中

2.也可以通过间接寻址的方式某寄存器的值传递到目的寄存器中

1.有等号“=”就是伪指令

2.等号后面如果是值直接将值传递给寄存器,如果是定义的别名,则是把别名对应的地址传递到寄存器

常用于从内存中读取数据到寄存器,两种方法:

  • 1.把0x地址中的值读入到r0
讯享网
  • 2.通过LDR伪指令把a对应的地址存到r1,然后将以r1的值为地址的内存中的数据传递到r0中
 

1.用于寄存器和寄存器之间传递数据

2.把立即数(立即数表示数值的数字,前面加#)传递给寄存器

  • 将r2的内容传给r1
讯享网
  • 将6传递给r1
 

都可以传递立即数,但是MOV的立即数长度限制为8位,也就是不能超过512,LDR伪指令却没有限制。

  •  都可以赋值“0”
讯享网

可是MOV超过512就会出错

 当它用LDR伪指令时就没有问题

 其实LDR伪指令在赋值小于512的立即数时就是用的MOV指令,超出512后就会变成两条指令,或从偏移地址中读取一个32位的数据给寄存器。


1.从内存中读取数据常用的有两种方法

        1)LDR和地址直接读取

        2)LDR伪指令读取

2.寄存器之间数据的传递

        1)用MOV指令

3.立即数赋值两种方法

        1)MOV # 但是有长度限制

        2)LDR = 没有长度限制


本期就结束了,如果对您有帮助,点赞+评论支持一下博主再走吧

还没有关注汤姆的朋友,点个关注每天学一点汇编

下期预告:测试ARM堆栈的类型

小讯
上一篇 2025-06-12 19:17
下一篇 2025-05-11 09:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/204609.html