1. NEGS    R3, R2; 求补指令      带进位加法指令 ADC(Addition Carry);  Bpl是跳转指令,其中pl代表正号+,Bpl也就是当结果为正时,跳转;  ORR(Logical OR)为逻辑或操作指令
2. SMULxy [condition] dest, op1, op2. SMULxy 指令使用有符号 16 位操作数 op1 与 op2 执行乘法。乘法的结果写入 dest。condition 必须是有效值;否则将指令当作 NOP。
3. 逆向减法指令:RSB R0,R1,R2; R0 = R2 – R1 ,  ORR―――――逻辑"或"操作指令, eor是逻辑异或指令

4. BIC(位清除)指令对 Rn 中的值 和 Operand2 值的反码按位进行逻辑“与”运算。

5.ADRL 伪指令:将相对于程序或相对于寄存器的地址载入寄存器中。BCC     branch on carry clear进位标志被清除时转移。
6.BIC(位清除)指令对 Rn 中的值 和 Operand2 值的反码按位进行逻辑“与”运算。

7.BLT Branch if Less Than; CBZ 比较,如果结果为0 就转移。

8.SBC带进位减法指令,即除了加两个数以外,还要把CPSR的C值也要带进来,类似ADC
9.atpcs-ARM-THUMB procedure call standard(ARM-Thumb过程调用标准)的简称,规定了一些子程序间调用的基本规则,哪寄存器的使用规则,堆栈的使用规则和参数的传递规则等。
  1)寄存器的使用规则子程序之间通过寄存器r0~r3来传递参数,当参数个数多于4个时,使用堆栈来传递参数。此时r0~r3可记作A1~A4。在子程序中,使用寄存器r4~r11保存局部变量。因此当进行子程序调用时要注意对这些寄存器的保存和恢复。此时r4~r11可记作V1~V8。寄存器r12用于保存堆栈指针SP,当子程序返回时使用该寄存器出栈,记作ip。寄存器r13用作堆栈指针,记作SP。寄存器r14称为链接寄存器,记作lr。该寄存器用于保存子程序的返回地址。寄存器r15称为程序计数器,记作PC。
  2)堆栈的使用规则
    atpcs规定堆栈采用满递减类型(fd,Full Descending),即堆栈通过减小存储器地址而向下增长,堆栈指针指向内含有效数据项的最低地址。
  3)参数的传递规则
    整数参数的前4个使用r0~r3传递,其他参数使用堆栈传递;浮点参数使用编号最小且能够满足需要的一组连续的FP寄存器传递参数。子程序的返回结果为一个32位整数时,通过r0返回;返回结果为一个64位整数时,通过r0和r1返回;依此类推。结果为浮点数时,通过浮点运算部件的寄存器F0、D0或者S0返回。

10.ROR OPRD ,m :把由OPRD指定的寄存器或存储器操作数循环右移m所指定的次数,每右移一次,把操作数的最低位同时移入CF和操作数的最高位汇编指令 ror和rol 用高级语言(如C)该如何描述:
   ror eax,cl ==> eax=(eax>>cl)+(eax<<(32-cl));rol eax,cl ==> eax=(eax<<cl)+(eax>>(32-cl));
   头文件STDLIB.H ;unsigned long __cdecl _lrotl(unsigned long, int);循环左移
   unsigned long __cdecl _lrotr(unsigned long, int);循环右移
10.CBZ  比较(Compare),如果结果为零(Zero)就转移(只能跳到后面的指令)
  TST : 测试指令用于将一个寄存器的值和一个算术值做比较。条件标志位根据两个操作数做“逻辑与”后的结果设置。
  BCC 是指当CPSR寄存器条件标志位为0时跳转。  BIC(位清除)指令对 Rn 中的值 和 Operand2 值的反码按位进行逻辑“与”运算。

参考学习:ARM处理器汇编

常用的arm汇编指令(3) -学无止尽,积土成山,积水成渊相关推荐

  1. 常用的ARM汇编指令总结

    第一次写博客,请各路大神多多关照. 本人从事软件开发相关的工作,平时主要用c语言撸代码,前段时间因工作需要,接触到了ARM架构下的汇编指令,之前学过51单片机的汇编指令,早已经还给老师了,且ARM汇编 ...

  2. ARM 汇编指令 MOV32用法

    前言 移植基于ARM平台的RTOS时,需要掌握一些基本的汇编指令,只有熟悉了这些ARM 的汇编指令,才能真正的掌握RTOS的移植方法 MOV32 指令,字面意思是 MOVE 一个 32位 值的意思,具 ...

  3. arm汇编指令详细整理及实例详解

    目录 一.简介 二.ARM 汇编指令说明 2.1 32位数据操作指令 2.2 32位存储器数据传送指令 2.3 32位转移指令 2.4 其它32位指令 三.实例讲解 3.1 MRS 3.2 MSR 3 ...

  4. 嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总

    嵌入式工程师到底要不要学习ARM汇编指令? 网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言. 而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精.搞 ...

  5. ARM汇编指令调试方法

    学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...

  6. ida pro 反汇编 Android so 库后修改 arm 汇编指令的方法总结

    1 前言 最近博主在学习Android逆向的时候,参照吾爱破解论坛的<教我兄弟学Android逆向系列课程>学习的时候,学到第8章<教我兄弟学Android逆向08 IDA爆破签名验 ...

  7. arm汇编指令——分析问题的利器

    文章目录 arm汇编指令为什么重要 1. 主导问题 2. arm汇编指令分类介绍 通用寄存器 状态寄存器 数据转移指令 寻址格式 运算指令 比较指令 跳转指令 3. 反汇编接口 4. 反汇编分析举例 ...

  8. ARM汇编指令学习---基于启动文件startup.S分析

    本文主要是基于启动文件startup.s对ARM汇编指令进行学习分析. 以 . 开头一般是伪汇编/操作指令,形如: .section伪操作来定义一个段,形如: .section .testsectio ...

  9. 1.15.ARM汇编指令3之逻辑指令

    ARM汇编指令之逻辑指令:and & orr & eor & bic * and 逻辑与操作指令,将operand2的值与寄存器Rn的值按位逻辑与操作,结果保存到Rd中. 指令 ...

最新文章

  1. Savitzky-Golay 滤波器详解及C/matlab语言程序设计
  2. vue项目运行启动方法(从github上下载了一个前端项目进行运行)
  3. 暑期作息时间表模板_人民日报给孩子的暑假作息时间表,转给家长!
  4. Mongodb副本集配置
  5. ubuntu gedit出错:Failed to connect to the session manager
  6. 【转】android Notification 的使用
  7. 盲人如何学计算机编程,盲人程序员是如何编程的?
  8. java调用nodejs程序,从java里面调用node.js脚本
  9. 技术干货丨隐私保护下的迁移算法
  10. Python+OpenCV:Hough圆检测(Hough Circle Transform)
  11. C++ Web编程实战
  12. 最新版gg服务器框架安装器,GG服务框架安装器
  13. 4大领域、33篇课题成果,2021阿里研究生态报告集来了
  14. java mxs mxm_mxm格式在3DMax中具体怎么用(步骤)?
  15. Java遍历包中所有类包括jar包(完整转载)
  16. spring事务管理配置
  17. Windows中Nginx下载、安装、配置
  18. 例行性工作排程 (crontab)
  19. 特征选择对于机器学习重要性
  20. ublox center获取RTK卫星数据

热门文章

  1. wxpython制作excel表格_怎么做一个精美的excel表格
  2. LOGO创意-IT行业-随记
  3. 【历史上的今天】9 月 17 日:世界上的第一张火车票;GamerDNA 创始人出生;中国开设第一个网上多媒体讲座
  4. OFDM载波间隔_5G NR的空口技术。为什么子载波间隔越大,符号长度越小?
  5. 删除+mysql+用户密码_误删除mysql中的所用用户,如何重新设置root账号和密码
  6. 阿里云服务器的windows和linux系统怎么选
  7. 企业ERP管理系统原型
  8. Modelsim仿真流程及相关命令
  9. 传奇如何一台服务器配置多个版本微端更新
  10. 如何有效的招聘技术人员