ARM指令集

数据操作

ARM指令的种类

  1. 数据处理指令
  2. 程序状态寄存器与通用寄存器之间的传送指令
  3. Load/Store指令
  4. 转移指令
  5. 异常中断指令
  6. 协处理器指令

数据处理指令分为6类

  1. 数据传送指令
  2. 算术运算指令
  3. 逻辑运算指令
  4. 比较指令
  5. 测试指令
  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数据处理指令——算术运算、数据传送相关推荐

  1. 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

    文章目录 一.call 子函数调用指令 二.jmp 跳转指令 三.lea 加载指令 四.mov 数据传送指令 总结 一.call 子函数调用指令 call 指令是 子函数调用指令 , 调用的指令的下一 ...

  2. 【汇编语言】通用数据处理指令——算术运算类指令

    通用数据处理指令--算术运算类指令 文章目录 通用数据处理指令--算术运算类指令 一.状态标志 1.进位标志CF(Carry Flag) 2.溢出标志OF(Overflow Flag) 3.零标志ZF ...

  3. MOV指令是数据传送指令

    在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的).其特点是不破坏源地址单元的内容.  例如:  MOV AX,2 ...

  4. 【汇编语言】通用数据处理指令——数据传送类指令

    通用数据处理指令--数据传送类指令 文章目录 通用数据处理指令--数据传送类指令 一.MOV指令 1.数据长度 2.传送方式 3.常见错误 二.XCHG指令 1.数据长度 2.空操作指令NOP(no- ...

  5. 【汇编语言与计算机系统结构笔记05】汇编的系统结构,从C代码生产汇编代码,一个具体的、经典的数据传送指令(mov)实例与分析

    本次笔记内容: 06.寻址模式与数据传输指令等 文章目录 汇编程序员眼中的系统结构 如何从C代码生产汇编代码 如何装gcc? 汇编语言数据格式 第一条汇编指令实例 数据传送指令(mov) 语法与操作数 ...

  6. movs 数据传送指令_PLC中简单好用的传送指令功能,你学会了吗?

    戳上方蓝字 "技成电工课堂" 关注我们哦! PLC的各种功能指令中,传送指令的使用非常频繁,且相对简单.一说到简单,我猜已经有很多人蠢蠢欲动,迫不及待地想征服这个传送指令了.那么, ...

  7. 微型计算机原理与接口技术——8086指令系统之数据传送指令

    8086指令系统之数据传送指令 前言 1.通用数据传送指令 一般传送指令MOV 指令格式 指令功能 MOV指令可实现以下各种传送 堆栈操作指令PUSH和POP 压栈指令 PUSH 指令格式 执行过程 ...

  8. 微机原理笔记——数据传送指令

    数据传送指令 通用数据传送指令 传送指令MOV 格式 MOV DST,SRC 功能 将一个源操作数送到目的操作数 说明 1.DST是目的操作数,可以是寄存器,存储器,累加器 SRC是源操作数,可以是寄 ...

  9. python数据分析入门【二】 --- 数据处理

    python数据分析入门[二] - 数据处理 上一章内容python数据分析入门[一] - DataFrame & Series 下一章内容python数据分析入门[三] - 数据分析 文章目 ...

最新文章

  1. 为什么博图中放置按下按钮无反应_如何更好的设计按钮
  2. java定时关机源码_java实现电脑定时关机的方法
  3. android 自定义搜索框edittext,Android编程自定义搜索框实现方法【附demo源码下载】...
  4. mybaits十九:bind绑定
  5. IO:Reactor和Proactor的区别
  6. 音视频技术开发周刊 | 158
  7. Python稳基修炼之计算机等级考试易错概念题1(含答案与解析)
  8. 张艾迪(创始人):艾迪成长记
  9. 除了自定义cell以为,还可以通过属性来控制cell线条的长度
  10. python super()函数
  11. doubango安卓端的帧率太低,解决办法
  12. 关于wow游戏插件制作之前的几件事
  13. unity如何实现图片透视_实战 | 自己实现扫描全能王
  14. Springboot配置多个数据源
  15. 自学编程,十年磨一剑
  16. MATLAB De_Pcode Mex 求助
  17. 计算机 文笔不好的论文,文笔差怎么写出好文章
  18. 侍魂服务器维护,侍魂手游8月5日停机维护更新公告
  19. CentOS 7安装chrome
  20. SQL存储过程(MySQL)

热门文章

  1. 中国的漫威,还很遥远么
  2. 顾客信息表mysql_Qt5.5.0使用mysql编撰小软件源码讲解-顾客信息登记表_mysql
  3. win10系统Microsoft Edge连接不上Internet
  4. 4路 HX5+Emulex 8Gb 实现 BOFM 实施 -chenjhh@dc
  5. Proteus STM32仿真学习板
  6. Python入门03——函数相关
  7. 执行若依(ruoyi)项目
  8. 第3章第13节:如何快速生成一份漂亮的相册 [PowerPoint精美幻灯片实战教程]
  9. HDU-1014 线性同余法
  10. 图解:网络硬件的发展史