arm汇编—str,mov等指令
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等指令相关推荐
- ARM汇编之MOV PC,LR
ARM汇编之MOV PC,LR BL NEXT :跳转到子程序......... :NEXT处执行NEXT..........MOV PC,LR :从子程序返回 这里的BL是跳转的意思,LR(R14) ...
- arm汇编中mov、movs、movw、movl、movb解析
arm汇编中mov指令 mov 指令在汇编中表示传送含有 movl mov long : 传送字长 : 32位:把32位立即数放到寄存器 movw mov word:传送字 :16位: 把 16 位立 ...
- 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)
首先说明一下 ARM是RISC("reduced instruction set computer",即"精简指令集计算机")结构 x86是CISC(" ...
- ARM汇编之跳转指令
ARM汇编语言之跳转指令 前言 ARM架构在当今主流的芯片中无论是MCU还是SOC都占有很大的市场,因此基于ARM架构的汇编语言对于嵌入式软件开发人员而言,其实也是一项必须掌握的基本功. " ...
- ARM汇编之MOV指令
一.指令格式 MOV{条件}{S} 目的寄存器,源操作数 二.指令详解 MOV指令可完成从另一个寄存器.被移位的寄存器或立即数赋值到目的寄存器.其中S选项为指令的操作结果是否操作CPSR中的条件标志位 ...
- ARM汇编寄存器和常用指令详解
文章目录 AAPCS关于ARM寄存器的定义 寄存器 R0~R12 通用寄存器 R13-SP(Stack Pointer) 栈寄存器 R14-LR(Link Register) 链接寄存器 R15-PC ...
- ARM汇编加载/存储指令
用在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器:存储指令则是完成相反操作.
- 汇编指令的学习1——ARM汇编的特点
以下内容源于朱友鹏<物联网大讲堂>的课程学习,如有侵权,请告知删除. 1.指令和伪指令 指令是CPU机器指令的助记符,经过编译(汇编器加工)后会得到一串10组成的机器码,可以由CPU读取执 ...
- 操作符指令 - ARM汇编指令(二)
ARM包含6种重要的数据计算处理指令 数据处理指令格式与条件码 条件码 ARM汇编特点3:指令后缀 同一指令经常附带不同后缀,变成不同的指令.经常使用的后缀有: B(byte)功能不变,操作长度变为8 ...
- ARM汇编(gun-complier)
首先,在前面已经将ARM架构体系和计算机系统的简单讲解,如果到时候忘了直接先浏览一下前面写好的<从计算机系统组成到ARM体系架构>. 处理器执行状态 最常用的执行状态ARM状态,其次是Th ...
最新文章
- mysql实现sass_使用sass绘制三角形
- 英特尔90亿美元卖掉「起家业务」,SK海力士接盘
- Python最热,PyTorch增速是TF的13倍:2019数据分析/机器学习工具调查发布
- 如何给你的web项目加入log4net支持
- arm rtx教程_ARM CMSIS标准概述及快速入门
- SAP Spartacus 中的 checkout(结帐) 设计
- spring java配置_Spring:使基于Java的配置更加优雅
- 鸟哥linux 私房菜
- 获得SD卡的剩余容量
- 利用flashback query解决误删除表数据
- pip install 到指定的目录下,查看pip包位置
- android 设置特殊字体,Android引入外部自定义特殊字体的方法
- (开源)微信小程序实时控制stc89c51,通过esp8266
- 使用idea把Svn分支合并到主干上
- Java将json格式数据转换为对象
- 等待其他线程执行完后执行(CountDownLatch)
- 利用 0day 双杀-java 环境-宏感染-安卓客户端渗透
- 推荐信息安全书籍27本(含电子书)
- 不看别后悔,关于小儿夜啼、踹被、食欲差和积食,虫妈原创,55首发
- Java awaitUninterruptibly用法