前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汇编指令-MOV与ldr区别

汇编指令-MOV与ldr区别

作者头像
嵌入式与Linux那些事
发布2021-05-20 09:41:43
1.2K0
发布2021-05-20 09:41:43
举报
MOV

  1.可以寄存器与寄存器之间传递数据   2.可以把立即数移动到寄存器中(常数不能超过32位)

LDR

  1.可以地址与寄存器之间的数据传递   2.也可以常数传递到寄存器中 实例:

  1.r1与r2寄存器之间传递就只能用MOV:

代码语言:javascript
复制
  MOV r1,r2

  2.常数传递到寄存器可以使用MOV和ldr:

代码语言:javascript
复制
  MOV r0,#0
  ldr r0,=0

  3.寄存器与地址0X00000000之间传递数据只能用ldr:

代码语言:javascript
复制
  ldr r0,=0X30000000
  ldr r0,0X00000000

LDR指令

代码语言:javascript
复制
ldr r0, 0x12345678          // 就是把0x12345678这个地址中的值存放到r0中。而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中。
ldr r0,r1                     //表示把r1寄存器中的值放入r0
ldr r0,[r1]                  // [r1]表示r1中值对应内存的地址,所以是把r1中的数当作一个地址,把这个地址中的值放入r0.

LDR伪指令

代码语言:javascript
复制
 ldr r0, =0x12345678`       //例1(立即数):

  这样,就把0x12345678这个地址写到r0中了。所以,ldr伪指令和mov是比较相似的。只不过mov指令限制了立即数的长度为8位,也就是不能超过512。而ldr伪指令没有这个限制。如果使用ldr伪指令时,后面跟的立即数没有超过8位,那么在实际汇编的时候该ldr伪指令是被转换为mov指令的

代码语言:javascript
复制
ldr  r0, =_start //将指定标号的值赋给r0

  这里取得的是标号 _start 的绝对地址,这个绝对地址(链接地址)是在链接的时候确定的。它要占用 2 个 32bit的空间,一条是指令,另一条是文字池中存放_start 的绝对地址。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MOV
  • LDR
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档