汇编知识点汇总

server/2025/2/14 0:47:12/

汇编的组成

  • 汇编指令
    • 数据处理指令
      • 数据搬移指令
      • 数据位移指令
      • 位运算指令
      • 算术运算指令
      • 比较指令
    • 跳转指令
    • 内存读写指令
    • 状态寄存器传送指令
    • 异常产生指令
    • 协处理器指令
  • 伪操作
    • 在程序编译过程中起到编译引导作用的内容
    •  .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.ppmy.cn/server/167477.html

相关文章

如何将网站提交百度收录完整SEO教程

百度收录是中文网站获取流量的重要渠道。本文以我的网站&#xff0c;www.mnxz.fun&#xff08;当然现在没啥流量&#xff09; 为例&#xff0c;详细讲解从提交收录到自动化维护的全流程。 一、百度收录提交方法 1. 验证网站所有权 1、登录百度搜索资源平台 2、选择「用户中心…

网络安全要学python 、爬虫吗

网络安全其实并不复杂&#xff0c;只是比普通开发岗位要学习的内容多一点。无论是有过编程基础还是零基础的都可以学习的。网络安全目前可就业的岗位从技术上可分为两部分&#xff1a;web安全和二进制逆向安全。web安全是网络安全的入门方向&#xff0c;内容简单&#xff0c;就…

HarmonyOS第一课第四章习题答案

应用程序框架基础 判断题 1.在基于Stage模型开发的应用项目中都存在一个app.json5配置文件、以及一个或多个module.json5配置文件。 答案&#xff1a;对 2.一个应用只可以包含一个UIAbility组件。 答案&#xff1a;错误 3.Background状态在UIAbility实例销毁时触发。可以…

分享一款免费的AI大模型字幕工具,支持语音识别、字幕断句、优化、翻译、视频合成等全流程自动处理(支持抖音、B站、油管等国内外多平台视频下载与处理)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 AI字幕工具:全平台视频创作的福音 📒💡 功能与特点:一网打尽⚙️ 使用⚓️ 相关链接 ⚓️📖 介绍 📖 还在为视频加字幕抓狂?🤯 平台限制多,操作又繁琐?别再挠破头皮啦!今天给大家分享的这款AI神器,简直是视频创…

Ansible中playbook的变量

变量 playbook的变量有以下几种 在playbook中用户自定义的变量远程主机中由Ansible收集的变量在文件模板中使用的上述两种变量把任务结果作为一个变量使用&#xff0c;叫注册变量用户在执行playbook时&#xff0c;通过命令行传入的变量&#xff0c;叫做额外变量 在playbook中…

3dgs 2025 学习笔记

CVPR 2024 3D方向总汇包含&#xff08;3DGS、三维重建、深度补全、深度估计、全景定位、表面重建和特征匹配等&#xff09;_cvpr2024-structure-awaresparse-viewx-ray3dreconstr-CSDN博客 https://github.com/apple/ml-hugs 3DGS COLMAP-Free 3D Gaussian Splatting ⭐code &…

基于SpringBoot+Vue的扶贫助农管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着国家对农业发展的日益重视&#xff0c;扶农助农政策不断出台&#xff0c;旨在推动农业现代化&#xff0c;帮助贫困地区农户对接市场&#xff0c;提供技术与资金支持&#xff0c;提升农产品的市场竞争力。然而&#xff0c;在…

Django REST Framework:如何获取序列化后的ID

Django REST Framework&#xff1a;如何获取序列化后的ID &#x1f604; 嗨&#xff0c;小伙伴们&#xff01;今天我们来聊一聊Django REST Framework&#xff08;简称DRF&#xff09;中一个非常常见的操作&#xff1a;如何获取序列化后的ID。对于那些刚入门的朋友们&#xff…