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 状态。

相关推荐
liuyicenysabel5 小时前
多服务上线日记三:
运维·服务器·笔记·学习
CHENGQUAN_kenan6 小时前
佛山亚马逊卖家出口退税合规指南|9610免税、一般贸易退税、无票采购、申报误区全覆盖
大数据·经验分享·笔记·百度
一只小小的芙厨7 小时前
基础数论总结
笔记·学习·算法
@Mike@10 小时前
09-数据库学习笔记(数据库索引与过滤器)
数据库·笔记
一米阳光866110 小时前
软考(中级)软件设计师核心笔记(9)算法——背包问题
笔记·算法·职场发展·软考·软件设计师·中级职称
Chris _data10 小时前
WPF 上位机开发学习笔记 - 第四天
笔记·学习·wpf
树的枝11 小时前
【STM32】03.中断和EXTI外设
笔记·stm32·单片机·嵌入式硬件
Wang's Blog11 小时前
PostgreSQL笔记34:索引优化策略全景解析——从B-tree到HOT的核心原理与实践
数据库·笔记·postgresql
金字塔頂の蝸牛11 小时前
商务日语口语实用手册
笔记·学习笔记·日语·外语
HwJack2012 小时前
UIAbility 生命周期全链路:从冷启动到热启动的实战笔记
笔记·华为·harmonyos