STR指令的格式为:
STR{条件}  源寄存器,<存储器地址>
STR指令用亍从源寄存器中将一个32位的字数据传送到存储器中。该指令在程序设计中比较常
用,寻址方式灵活多样,使用方式可参考指令LDR。

指令示例:
STR R0,[R1],#8             ;将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。

STR R0,[R1,#8]             ;将R0中的字数据写入以R1+8为地址的存储器中。”

str     r1, [r0]                       ;将r1寄存器的值,传送到地址值为r0的(存储器)内存中

MOV 指令的基本格式如下:
        movx source, destination
   source 和 destination 的值可以是内存地址,存储在内存中的数据值,指令语句中定义的数据值,或者寄存器。

ldr:
当第二个操作数前面没有“=”时,表示内存访问指令,从内存中读取4Byte数据到寄存器,语法格式如下:
ldr{条件} 目的寄存器, 存储器地址
如果第二个操作数前面有“=”,表示大范围地址读取伪指令,用于加载32位的立即数或一个地址到指定寄存器,语法格式如下:
ldr 目的寄存器, =32位立即数/地址

adrl r2, mem_cfg_val

adrl是中等范围地址读取伪指令,将基于pc相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,在汇编编译器编译源程序时,adrl伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。这条代码会替换为:

30000050: e28f2018  add r2, pc, #24 ; 0x18

30000054: e1a00000  nop (mov r0,r0)

adrl伪指令格式:

adrl{cond}   register, expr

地址表达式expr的取值范围:

当地址值是字节对齐时,其取指范围为: -64K~64K;

当地址值是字对齐时,其取指范围为: -256K~256K;

nop

空操作伪指令,在汇编是替换成ARM中的空操作,例如mov r0, r0

cmp

比较指令,格式如下:

cmp{条件} 操作数1, 操作数2

用与将一个寄存器的内容和另一寄存器的内容或立即数进行比较,然后更新CPSR中条件标志位的值,标志位表示操作数1和操作数2的关系(大于、小于、相等)。

bne 1b

b(跳转指令)+ne(条件:不相等),如果CPSR的Z位为0(不相等),就跳转到后面的1标号处。

b表示向后搜索,已经执行过的代码为‘后’;

f表示向前搜索,还未执行的代码为‘前’。

mov  pc, lr

从子程序返回。lr为子程序链接寄存器(r14),当执行bl子程序调用指令时,lr会备份pc(程序计数器r15)。

.align

指定对齐方式,gnu汇编命令都以一个点开头。

.equ

赋值命令,格式如下:

.equ symbol, expression

设置symbol的值为expression。

.long

定义一个4Byte的数据。

arm汇编—str,mov等指令相关推荐

  1. ARM汇编之MOV PC,LR

    ARM汇编之MOV PC,LR BL NEXT :跳转到子程序......... :NEXT处执行NEXT..........MOV PC,LR :从子程序返回 这里的BL是跳转的意思,LR(R14) ...

  2. arm汇编中mov、movs、movw、movl、movb解析

    arm汇编中mov指令 mov 指令在汇编中表示传送含有 movl mov long : 传送字长 : 32位:把32位立即数放到寄存器 movw mov word:传送字 :16位: 把 16 位立 ...

  3. 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)

    首先说明一下 ARM是RISC("reduced instruction set computer",即"精简指令集计算机")结构 x86是CISC(" ...

  4. ARM汇编之跳转指令

    ARM汇编语言之跳转指令 前言 ARM架构在当今主流的芯片中无论是MCU还是SOC都占有很大的市场,因此基于ARM架构的汇编语言对于嵌入式软件开发人员而言,其实也是一项必须掌握的基本功. " ...

  5. ARM汇编之MOV指令

    一.指令格式 MOV{条件}{S} 目的寄存器,源操作数 二.指令详解 MOV指令可完成从另一个寄存器.被移位的寄存器或立即数赋值到目的寄存器.其中S选项为指令的操作结果是否操作CPSR中的条件标志位 ...

  6. ARM汇编寄存器和常用指令详解

    文章目录 AAPCS关于ARM寄存器的定义 寄存器 R0~R12 通用寄存器 R13-SP(Stack Pointer) 栈寄存器 R14-LR(Link Register) 链接寄存器 R15-PC ...

  7. ARM汇编加载/存储指令

    用在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器:存储指令则是完成相反操作.

  8. 汇编指令的学习1——ARM汇编的特点

    以下内容源于朱友鹏<物联网大讲堂>的课程学习,如有侵权,请告知删除. 1.指令和伪指令 指令是CPU机器指令的助记符,经过编译(汇编器加工)后会得到一串10组成的机器码,可以由CPU读取执 ...

  9. 操作符指令 - ARM汇编指令(二)

    ARM包含6种重要的数据计算处理指令 数据处理指令格式与条件码 条件码 ARM汇编特点3:指令后缀 同一指令经常附带不同后缀,变成不同的指令.经常使用的后缀有: B(byte)功能不变,操作长度变为8 ...

  10. ARM汇编(gun-complier)

    首先,在前面已经将ARM架构体系和计算机系统的简单讲解,如果到时候忘了直接先浏览一下前面写好的<从计算机系统组成到ARM体系架构>. 处理器执行状态 最常用的执行状态ARM状态,其次是Th ...

最新文章

  1. mysql实现sass_使用sass绘制三角形
  2. 英特尔90亿美元卖掉「起家业务」,SK海力士接盘
  3. Python最热,PyTorch增速是TF的13倍:2019数据分析/机器学习工具调查发布
  4. 如何给你的web项目加入log4net支持
  5. arm rtx教程_ARM CMSIS标准概述及快速入门
  6. SAP Spartacus 中的 checkout(结帐) 设计
  7. spring java配置_Spring:使基于Java的配置更加优雅
  8. 鸟哥linux 私房菜
  9. 获得SD卡的剩余容量
  10. 利用flashback query解决误删除表数据
  11. pip install 到指定的目录下,查看pip包位置
  12. android 设置特殊字体,Android引入外部自定义特殊字体的方法
  13. (开源)微信小程序实时控制stc89c51,通过esp8266
  14. 使用idea把Svn分支合并到主干上
  15. Java将json格式数据转换为对象
  16. 等待其他线程执行完后执行(CountDownLatch)
  17. 利用 0day 双杀-java 环境-宏感染-安卓客户端渗透
  18. 推荐信息安全书籍27本(含电子书)
  19. 不看别后悔,关于小儿夜啼、踹被、食欲差和积食,虫妈原创,55首发
  20. Java awaitUninterruptibly用法

热门文章

  1. jdbc连接数据库代码
  2. 文件和目录属性ls which alias
  3. Oracle 备份与恢复学习笔记(8)
  4. 数据中心降低运营成本战略解密
  5. ubuntu和ok6410开发板之间架设nfs
  6. 使用perforce+git处理连线离线工作的pipeline
  7. Spring源码探究:容器
  8. 使用Outlook Connector插件之后 qq发送过来的邮件为乱码
  9. MYSQL 大数据性能优化
  10. Node.js学习笔记(二)