汇编(二)——ARM数据处理指令——算术运算、数据传送
ARM指令集
数据操作
ARM指令的种类
- 数据处理指令
- 程序状态寄存器与通用寄存器之间的传送指令
- Load/Store指令
- 转移指令
- 异常中断指令
- 协处理器指令
数据处理指令分为6类
- 数据传送指令
- 算术运算指令
- 逻辑运算指令
- 比较指令
- 测试指令
- 乘法指令
数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。
所有ARM数据处理指令均可选择使用S后缀,并影响状态标志。
ARM数据处理指令——数据传送
助记符 | 说明 | 操作 | 条件码位置 |
---|---|---|---|
MOV Rd, operand2 | 数据传送 | Rd<-operand2 | MOV {cond} {S} |
MVN Rd, operand2 | 数据非传送 | Rd<-(~operand2) | MVN {cond} {S} |
MOV指令将8位图立即数或寄存器传送到目标寄存器(Rd),可用于移位运算等操作,指令格式如下:
MOV {cond} {S} Rd,operand2
MOV指令举例如下:
MOV R1,#0x10 ;R1=0x10MOV R0,R1 ;R0=R1MOVS R3,R1,LSL #2 ;R3=R1<<2,并影响标志位MOV PC,LR ;PC=LR,子程序返回
opcode操作码功能表
操作码 | 指令助记符 | 说明 |
---|---|---|
0000 | AND | 逻辑与操作指令 |
0001 | EOR | 逻辑异或操作指令 |
0010 | SUB | 减法运算指令 |
0011 | RSB | 逆向减法指令 |
0100 | ADD | 加法运算指令 |
0101 | ADC | 带进位加法指令 |
0110 | SBC | 带进位减法指令 |
0111 | RSC | 带进位逆向减法指令 |
1000 | TST | 位测试指令 |
1001 | TEQ | 相等测试指令 |
1010 | CMP | 比较指令 |
1011 | CMN | 负数比较指令 |
1100 | ORR | 逻辑或操作指令 |
1101 | MOV | 数据传输 |
1110 | BIC | 位清除指令 |
1111 | MVN | 数据非传送 |
ARM数据处理指令——算术运算
助记符 | 说明 | 操作 | 条件码位置 |
---|---|---|---|
ADD Rd, Rn, operand2 | 加法运算指令 | Rd<-Rn+operand2 | ADD{cond} {S} |
SUB Rd, Rn, operand2 | 减法运算指令 | Rd<-Rn-operand2 | SUB{cond} {S} |
RSB Rd, Rn, operand2 | 逆向减法指令 | Rd<-operand2-Rn | RSB{cond} {S} |
ACC Rd, Rn, operand2 | 带进位加法 | Rd<-Rn+operand2+Carry | ACC{cond} {S} |
SBC Rd, Rn, operand2 | 带进位减法指令 | Rd<-Rn-operand2-(NOT)Carry | SBC {cond} {S} |
RSC Rd, Rn, operand2 | 带进位逆向减法指令 | Rd<-operand2-Rn-(NOT)Carry | RSC {cond} {S} |
带进位加法指令——ADC将operand2的值与Rn的值相加,再如上CPSR中的C条件标志位,结果保存到Rd寄存器。
指令格式如下:
ADC{cond}{S} Rd,Rn,operand2
应用示例(使用ADC实现64位加法,结果存于R1,R0中)
ADDS R0,R0,R2 ;R0等于低32位相加,并影响标志位
ADC R1,R1,R3 ;R1等于高32位相加,并加上低位进位
汇编(二)——ARM数据处理指令——算术运算、数据传送相关推荐
- 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )
文章目录 一.call 子函数调用指令 二.jmp 跳转指令 三.lea 加载指令 四.mov 数据传送指令 总结 一.call 子函数调用指令 call 指令是 子函数调用指令 , 调用的指令的下一 ...
- 【汇编语言】通用数据处理指令——算术运算类指令
通用数据处理指令--算术运算类指令 文章目录 通用数据处理指令--算术运算类指令 一.状态标志 1.进位标志CF(Carry Flag) 2.溢出标志OF(Overflow Flag) 3.零标志ZF ...
- MOV指令是数据传送指令
在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的).其特点是不破坏源地址单元的内容. 例如: MOV AX,2 ...
- 【汇编语言】通用数据处理指令——数据传送类指令
通用数据处理指令--数据传送类指令 文章目录 通用数据处理指令--数据传送类指令 一.MOV指令 1.数据长度 2.传送方式 3.常见错误 二.XCHG指令 1.数据长度 2.空操作指令NOP(no- ...
- 【汇编语言与计算机系统结构笔记05】汇编的系统结构,从C代码生产汇编代码,一个具体的、经典的数据传送指令(mov)实例与分析
本次笔记内容: 06.寻址模式与数据传输指令等 文章目录 汇编程序员眼中的系统结构 如何从C代码生产汇编代码 如何装gcc? 汇编语言数据格式 第一条汇编指令实例 数据传送指令(mov) 语法与操作数 ...
- movs 数据传送指令_PLC中简单好用的传送指令功能,你学会了吗?
戳上方蓝字 "技成电工课堂" 关注我们哦! PLC的各种功能指令中,传送指令的使用非常频繁,且相对简单.一说到简单,我猜已经有很多人蠢蠢欲动,迫不及待地想征服这个传送指令了.那么, ...
- 微型计算机原理与接口技术——8086指令系统之数据传送指令
8086指令系统之数据传送指令 前言 1.通用数据传送指令 一般传送指令MOV 指令格式 指令功能 MOV指令可实现以下各种传送 堆栈操作指令PUSH和POP 压栈指令 PUSH 指令格式 执行过程 ...
- 微机原理笔记——数据传送指令
数据传送指令 通用数据传送指令 传送指令MOV 格式 MOV DST,SRC 功能 将一个源操作数送到目的操作数 说明 1.DST是目的操作数,可以是寄存器,存储器,累加器 SRC是源操作数,可以是寄 ...
- python数据分析入门【二】 --- 数据处理
python数据分析入门[二] - 数据处理 上一章内容python数据分析入门[一] - DataFrame & Series 下一章内容python数据分析入门[三] - 数据分析 文章目 ...
最新文章
- 为什么博图中放置按下按钮无反应_如何更好的设计按钮
- java定时关机源码_java实现电脑定时关机的方法
- android 自定义搜索框edittext,Android编程自定义搜索框实现方法【附demo源码下载】...
- mybaits十九:bind绑定
- IO:Reactor和Proactor的区别
- 音视频技术开发周刊 | 158
- Python稳基修炼之计算机等级考试易错概念题1(含答案与解析)
- 张艾迪(创始人):艾迪成长记
- 除了自定义cell以为,还可以通过属性来控制cell线条的长度
- python super()函数
- doubango安卓端的帧率太低,解决办法
- 关于wow游戏插件制作之前的几件事
- unity如何实现图片透视_实战 | 自己实现扫描全能王
- Springboot配置多个数据源
- 自学编程,十年磨一剑
- MATLAB De_Pcode Mex 求助
- 计算机 文笔不好的论文,文笔差怎么写出好文章
- 侍魂服务器维护,侍魂手游8月5日停机维护更新公告
- CentOS 7安装chrome
- SQL存储过程(MySQL)
热门文章
- 中国的漫威,还很遥远么
- 顾客信息表mysql_Qt5.5.0使用mysql编撰小软件源码讲解-顾客信息登记表_mysql
- win10系统Microsoft Edge连接不上Internet
- 4路 HX5+Emulex 8Gb 实现 BOFM 实施 -chenjhh@dc
- Proteus STM32仿真学习板
- Python入门03——函数相关
- 执行若依(ruoyi)项目
- 第3章第13节:如何快速生成一份漂亮的相册 [PowerPoint精美幻灯片实战教程]
- HDU-1014 线性同余法
- 图解:网络硬件的发展史