单寄存器加载与存储指令
这种指令用于把单一的数 传入或者传出一个寄存器。支持的数据类型有字(32 位 ) 、半字(16 位) 和字节。常用的单寄存器加载与存储指令包括:
LDR/STR 字数据加载/ 存储指令
LDRB/STRB 字节数据加载/ 存储指令
LDRH/STRH 半字数据加载/ 存储指令
LDRSB/LDRSH 有符号数字节/ 半字加载指令
( 注意:没有strsb/strsh 指令)
1. 汇编格式 : LDR{<cond>}{T} Rd ,addr
功能: LDR 指令用于从存储器中将一个 32 位的字数据加载到目的寄存器 Rd 中。该指令通常用于从存储器中读取32 位的字数据到通用寄存器,然后对数据进行处理。当程序计数器 PC 作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。
例 3.41 LDR 指令示例:
;使用标号
LDR R4,START ;将存储地址为START 的字数据读入R4
STR R5,DATA1 ;将R5 存入存储地址为DATA1 中
;前索引
LDR R0 ,[R1] ;将存储器地址为R1 的字数据读入寄R0
LDR R0 ,[R1 ,R2] ;将存储器地址为R1+R2 的字数据读入寄存器R0 。
LDR R0 ,[R1 ,#8] ;将存储器地址为R1+8 的字数据读入寄存器R0 。
LDR R0 ,[R1 ,R2 ,LSL #2] ;将存储器地址为R1 +R2×4 的字数据读入寄存器R0 。
;自动索引
STR R0 ,[R1 ,R2] ! ;将 R0 字数据存入存储器地址为R1+R2 的存储单元中,并将新地址R1 +R2 写入R1 。
STR R0 ,[R1 ,#8] ! ;将 R0 字数据存入存储器地址为R1+8 的存储单元中,并将新地址R1 +8 写入R1
STR R0 ,[R1 ,R2 ,LSL #2] ! ;将 R0 字数据存入地址为R1 +R2×4 的存储单元中,并将新地址R1 +R2×4 写入R1 。
;后索引
LDR R0 ,[R1] ,#8 ;将存储器地址为R1 的字数据读入寄存器R0,并将新地址R1 +8 写入R1
LDR R0 ,[R1] ,R2 ;将存储器地址为R1 的字数据读入寄存器R0,并将新地址R1 +R2 写入R1 。
LDR R0 ,[R1] ,R2 ,LSL #2 ;将存储器地址为R1 的字数据读入寄存器R0,并将新地址R1 +R2×4 写入R1 。