S3C2440A datasheet上关于这两条指令的说明如下:

SINGLE DATA TRANSFER (LDR, STR), The single data transfer instructions are used to load or store single bytes or words of data.

简单的理解就是数据的传送/存储指令。

接下来是datasheet上关于这两个指令格式的说明:

<LDR|STR>{cond}{B}{T} Rd,<Address>
where:
LDR   ---   Load from memory into a register
STR   ---   Store from a register into memory
{cond} ---Two-character condition mnemonic. See Table 3-2.  (这个可以不用考虑)
{B} ---  If B is present then byte transfer, otherwise word transfer.  (这个也可以不用考虑)
{T}  --- If T is present the W bit will be set in a post-indexed instruction, forcing non-privileged
mode for the transfer cycle. T is not allowed when a pre-indexed addressing mode is
specified or implied.   (这个也可以不用考虑)
Rd ---    An expression evaluating to a valid register number. (CPU一个寄存器的具体名字:R0~R15)
Rn and Rm ---   Expressions evaluating to a register number. If Rn is R15 then the assembler will
subtract 8 from the offset value to allow for ARM920T pipelining.
In this case base write-back should not be specified.
<Address>can be:  (以下是关于地址的几种表示方法)
1       An expression which generates an address:  (立即寻址)
The assembler will attempt to generate an instruction using the PC as a base and a
corrected immediate offset to address the location given by evaluating the expression.
This will be a PC relative, pre-indexed address. If the address is out of range, an error
will be generated.
2        A pre-indexed addressing specification:  (变址寻址)
[Rn] offset of zero
[Rn,<#expression>]{!} offset of <expression> bytes
[Rn,{+/-}Rm{,<shift>}]{!} offset of +/- contents of index register, shifted
by <shift>
3       A post-indexed addressing specification:  (偏移寻址)
[Rn],<#expression> offset of <expression> bytes
[Rn],{+/-}Rm{,<shift>} offset of +/- contents of index register, shifted as
by <shift>.
<shift> General shift operation (see data processing instructions) but you cannot specify the shift
amount by a register.

{!} --- Writes back the base register (set the W bit) if! is present  (是否会写基寄存器,这个一般很少用)

在ARM架构下,  数据从内存到CPU之间的移动只能通过LDR/STR指令来完成.  而MOV只能在寄存器之间移动数据,或者把立即数移动到寄存器中,并且数据的长度不能超过8位

以下是具体的应用例子:

1.  LDR   r0,=label      用于加载立即数或一个地址值到指定寄存器中

1.1  如果label是立即数:  LDR r0,=0X123           ;将0X123存入r0中

1.2  如果name是个标识符:  LDR   r0,=label_1    ;将label_1所指向的地址值存入r0中

2.   LDR       r0,[r1]   ;将R1中的值存到r0中

3.   LDR       r1,[r2,#16]    ;将(r2+16)地址中的内容存到r1中

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

a.  STR   r1,[r2]        ; 将r1中的值存到r2所指定的地址中

b.  STR   r1,[r2,#4]   ;将r1中的值存到r2+4所指定的地址中

c.   STR   r1,[r2],#4  ;将r1中的值存到r2所指定的地址中, 同时r2=r2+4

LDR/STR指令学习相关推荐

  1. ARM汇编指令 SUB MOV LDR STR

    开启arm汇编学习. 环境介绍:使用的是TI TDA4平台.该平台是基于ARMV8架构,64bit的CPU. 先上一段C代码: #include <stdio.h>int main(voi ...

  2. ldr,str指令作用,详解

    LDR,STR 的第一操作数是目标寄存器,第二操作数是内存地址, LDR 内存 --> 寄存器; STR 寄存器 --> 内存 内存的表示方式有:立即数,寄存器,或寄存器加偏移,立即数:内 ...

  3. ARM汇编指令:LDR伪指令和LDR装载指令的区别

    LDR伪指令的格式: LDR  register, =expression 相当于把expression的值(其实标号可以理解为地址值)放到寄存器中: LDR装载指令的格式: LDR register ...

  4. Android逆向之旅--「最右」签名算法解析(ARM指令学习恶心篇)

    一.前言 今天开始我们后续会开展三篇左右的arm指令学习,因为之前一直都有同学和我说有没有详细的arm指令分析,这个之前的确一直没有好的样本,有的人可能说可以用自己写的C代码然后反编译so来学习,那样 ...

  5. arm 指令 学习载录

    ARM处理器汇编 ARM寻址方式: 1. 立即寻址,操作数在指令中给出. ADDR0,R0,#1;    R0ßR0+1 ANDR8,R7,#&FF; R8ßR7[7:0]; ADDR0,R0 ...

  6. linux 指令学习总结~~~

    linux 指令学习总结~~~ 目录操作: mkdir $HOME/testFolder(创建一个目录) cd ./testFolder(cd $HOME/testFolder)(切换目录) cd . ...

  7. Modbus通信协议指令学习记录

    Modbus通信协议指令学习记录 Modbus协议版本 读取指令格式 Modbus RTU Modbus ASCII Modbus TCP 写入指令格式 Modbus RTU Modbus ASCII ...

  8. linux系统指令学习(创建目录,在目录下创建一个*.txt,*.txt输入内容,把*.txt文件拷贝到*目录下,把*文件夹目录移动到*目录下)

    linux系统指令学习1 透过12道题熟练掌握20个指令 Linux有150个常用指令,透过12道题去学习以及练习指令 1.创建一个目录/dzqc 提示: windows下的路径样式为c: \dzqc ...

  9. DL/T645-2007通信协议指令学习记录

    DL/T645-2007通信协议指令学习记录 DL/T645协议版本 DL/T645通信链路 DL/T645-2007数据格式 地址域 控制码C 数据长度L 数据域 DATA 校验码 CS 数据标识 ...

最新文章

  1. VMware 虚拟化编程(8) — 多线程中的 VixDiskLib
  2. 将存储过程的返回值赋给变量
  3. javac环境变量配置(转)
  4. 深度学习与计算机视觉系列(10)_细说卷积神经网络
  5. 奥运会上刷新亚洲记录的211高校副教授苏炳添论文被扒出,网友:膜拜大神!...
  6. Java中重定向,转发深入理解 2021-04-26
  7. 2010年3月blog汇总:企业架构、团队管理
  8. ListControl响应右键,弹出菜单
  9. Wordpress卡在 wp-admin/setup-config.php,一片空白
  10. Linux学习笔记4 - Linux常用命令
  11. 基于java的房屋销售管理系统设计(含源文件)
  12. mysql触发器更新前触发_mysql触发器实例:更新前触发
  13. sever串口wifi拓展板_什么是串口WIFI模块
  14. UE4 VR官方教程学习总结-项目设置
  15. apache 二级域名设置完整步骤
  16. 怎么做好备件管理?备件管理系统都包括哪些功能模块?
  17. Java导出多个excel并且打包成zip压缩文件
  18. bilibili视频格式m4s批量转换为mp3,mp4
  19. 微信小程序分页加载列表
  20. go学习笔记接口部分

热门文章

  1. AD学习笔记--构建51最小系统板
  2. 一阶电路的时域分析 - 学习笔记
  3. 判断字段是否存在,判断主键是否存在,判断某个字段是否具有not null约束
  4. Jenkins凭据管理之配置ssh私钥形式的凭据
  5. 全国程序员收入大调查,粒度到省
  6. libuv download
  7. win10屏幕亮度无法调节如何处理
  8. 百宝云ERP管理系统行业案例
  9. 如何将多个条码标签打印在一张A4纸上
  10. 软件安装 怎么安装与破解Xmind 8 pro