LDR/STR

LDR内存 ------>寄存器;

STR寄存器------>内存;

  • LDR r0,=label :用于加载立即数或一个地址值到指定寄存器中
    • 如果Labbel 是立即数:LDR r0,=0x123 :将0x123存入r0中
    • 如果name是个标符:LDR r0,=label_1 :将label_1所指向的地址存入r0中

这是一条伪指令:表示把一个地址写到某寄存器中

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

LDR r0,r1 将r1中的值存到r0中

LDR r1,r2,#16 将(r2+16)地址中的内容存到r1中

LDR r1,r2,#4 将r2地址中的内容存到r1中,同时r2=r2+4

STR r1,r2, 将r1中的值存到r2所指定的地址中

STR r1,r2,#4 将r1中的值存到r2+4所指定的地址中

STR r1,r2,#4 将r1的值存到r2中,同时r2=r2+4

ARM状态:

  • 32位,ARM状态执行字对齐的32位ARM指令。

  • Thumb状态,16位,执行半字对齐的16位指令。

  • 用Bx Rn指令来进行两种状态的切换:

    • 从 ARM 到 Thumb: LDR R0,=lable+1 BX R0(状态将寄存器的最低位设置为 1,BX 指令、R0 指令将进入 thumb 状态);
    • 从 Thumb 到 ARM : LDR R0,=lable BX R0(寄存器最低位设置为 0,BX 指令、R0 指令将进入 arm 状态)。
  • 当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入 ARM 状态。

相关推荐
-SOLO-8 小时前
开发笔记-摸鱼输入法
笔记
疯狂打码的少年11 小时前
【计算机网络】TCP/IP协议族(四层体系结构,与OSI对比)
网络·笔记·tcp/ip·计算机网络
xqqxqxxq11 小时前
AI Agent学习:Agent协作工具技术笔记(李博杰《深入理解 AI Agent》4.6观后总结)
笔记·学习
彧azz13 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法
自小吃多13 小时前
高云 FPGA 添加时序约束笔记
笔记·fpga开发
彧azz14 小时前
二叉搜索树学习记录
c语言·数据结构·笔记·算法
蒸蒸yyyyzwd14 小时前
机试和Redis学习笔记
c++·笔记·面试
果壳science15 小时前
《自然本源》如何实现狭义相对论的代数化
笔记·算法·几何学
1314lay_100715 小时前
C#调用Sql Server存储过程,并且使用传入表结构
数据库·经验分享·笔记·sqlserver·c#
志尊宝16 小时前
Vue3 零基础每日笔记(015):条件渲染 v-if 与 v-show——控制 DOM 生死还是控制显隐
前端·vue.js·笔记