当前位置: 首页 > article >正文

汇编知识点汇总

汇编的组成

  • 汇编指令
    • 数据处理指令
      • 数据搬移指令
      • 数据位移指令
      • 位运算指令
      • 算术运算指令
      • 比较指令
    • 跳转指令
    • 内存读写指令
    • 状态寄存器传送指令
    • 异常产生指令
    • 协处理器指令
  • 伪操作
    • 在程序编译过程中起到编译引导作用的内容
    •  .text  .global  .if  .else  .endif
  • 伪指令
    • 不是汇编指令,但是可以起到指令的作用,会占用一定内存空间
  • 注释
    • 单行注释:@         ;
    • 多行注释:/*         */
    • 条件注释:.if   .else   .endif

立即数

循环左移偶数位,取反(或不取)能得到0-255之间的数(8位以内)就是立即数

数据搬移指令

mov{条件码} 目标寄存器 操作数

功能:将操作数搬移到目标寄存器中,相当于赋值

mvn{条件码} 目标寄存器 操作数

功能:将操作数按位取反后结果搬移到目标寄存器中

注意:操作数可以是一个寄存器,也可以是一个立即数

数据移位指令

逻辑左移

        lsl{条件码} 目标寄存器,第一操作寄存器,第二操作数

        功能:将第一操作寄存器中的数左移第二操作数位数,将结果保存到目标寄存器中

逻辑右移

        lsr{条件码} 目标寄存器,第一操作寄存器,第二操作数

        功能:将第一操作寄存器中的数右移第二操作数位数,将结果保存到目标寄存器中

循环右移

        ror{条件码} 目标寄存器,第一操作寄存器,第二操作数

        功能:将第一操作寄存器中的数循环右移第二操作数位数,将结果保存到目标寄存器中

补充:汇编中对操作数书写的形式可以写成c语言风格的移位运算形式

ex:LSL R1,R0,#(0X1<<2)

位运算指令

与运算(and),与0清零,与1不变

        and{条件码} 目标寄存器,第一操作寄存器,第二操作数

        功能: 将第一操作寄存器中的数和第二操作数进行与运算,将结果保存到目标寄存器中

或运算(orr),有1位1,全0为0

        orr{条件码} 目标寄存器,第一操作寄存器,第二操作数

        功能: 将第一操作寄存器中的数和第二操作数进行或运算,将结果保存到目标寄存器中

异或运算(eor),相同为0,不同为1

        eor{条件码} 目标寄存器,第一操作寄存器,第二操作数

        功能: 将第一操作寄存器中的数和第二操作数进行异或运算,将结果保存到目标寄存器中

按位取反(mvn),0为1,1为0

        mvn{条件码} 目标寄存器,第一操作寄存器,第二操作数

        功能: 将第一操作寄存器中的数和第二操作数进行按位取反运算,将结果保存到目标寄存器中

按位清零(bic),指定位和1运算零

算术运算指令

加法指令

        add{条件码}{s} 目标寄存器,第一操作寄存器,第二操作数

        功能: 目标寄存器=第一操作寄存器+第二操作数

包含cpsr条件位的加法指令

        adc{条件码}{s} 目标寄存器,第一操作寄存器,第二操作数

        功能: 目标寄存器=第一操作寄存器+第二操作数+cpsr寄存器c位的值

减法指令

        sub{条件码}{s} 目标寄存器,第一操作寄存器,第二操作数

        功能: 目标寄存器=第一操作寄存器-第二操作数

包含cpsr条件位的减法指令

        sbc{条件码}{s} 目标寄存器,第一操作寄存器,第二操作数

        功能: 目标寄存器=第一操作寄存器+-第二操作数-cpsr寄存器c位的取反值

乘法指令

        mul{条件码}{s} 目标寄存器,第一操作寄存器,第二操作数

        功能: 目标寄存器=第一操作寄存器*第二操作数

模拟32位处理器进行64位数据运算

32位处理器一条指令最大能进行32位数据运算,想要进行64位运算,需要多条指令

第一个64位数据:

        0x00000003 FFFFFFFE

第二个64位数据

        0X00000005 00000006

运算原则:

低32位先运算,结果会影响cpsr条件位

高32位后运算,运算过程包含cpsr条件位


http://www.kler.cn/a/530556.html

相关文章:

  • Spring Boot - 数据库集成06 - 集成ElasticSearch
  • unity学习23:场景scene相关,场景信息,场景跳转
  • Unity学习笔记
  • MySQL基础-多表查询
  • 本地部署DeepSeek教程(Mac版本)
  • C++模板编程——可变参函数模板之折叠表达式
  • MVC、MVP和MVVM模式
  • 刷题记录 动态规划-3: 70. 爬楼梯
  • SpringMVC拦截器详解:原理、使用与配置
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.4 索引优化:避免意外复制的高效技巧
  • deepseek使用教程
  • 力扣 347. 前 K 个高频元素
  • Baklib赋能企业提升内容中台构建效率的全新路径解析
  • 基于人脸识别的课堂考勤系统
  • 【系统迁移】将系统迁移到新硬盘中(G15 5520)
  • 高清种子资源获取指南 | ✈️@seedlinkbot
  • 第六篇:事务与并发控制
  • 算法【混合背包】
  • 深入探索 Android 技术:从基础到前沿
  • 向上管理的必要性
  • 本地部署DeepSeek 多模态大模型Janus-Pro-7B
  • C++ 常用排序算法
  • 音视频入门基础:RTP专题(5)——FFmpeg源码中,解析SDP的实现
  • XML DOM 节点信息
  • 眼见着折叠手机面临崩溃,三星计划增强抗摔能力挽救它
  • 【LeetCode 刷题】回溯算法-分割问题