单寄存器加载与存储指令

这种指令用于把单一的数  传入或者传出一个寄存器。支持的数据类型有字(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 。

posted @ 2011-09-19 08:59  auleaf  阅读(866)  评论(0编辑  收藏  举报