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

汇编基础-----常见命令基本使用

汇编基础-----常见命令基本使用

MOV:将数据从一个位置复制到另一个位置。

MOV destination, source

例如:

MOV RAX, RBX  ; 将RBX寄存器中的值复制到RAX寄存器中

ADD/SUB:将两个操作数相加或相减。

ADD destination, source
SUB destination, source

例如:

ADD RAX, RBX  ; 将RAX寄存器中的值加上RBX寄存器中的值,并将结果存储回RAX

INC/DEC:递增或递减操作数的值。

INC operand
DEC operand

例如:

INC RCX  ; 将RCX寄存器中的值加1

CMP:比较两个操作数的值。

CMP operand1, operand2

例如:

CMP RAX, RBX  ; 比较RAX和RBX寄存器中的值

JMP:无条件跳转到指定位置执行。

JMP destination

例如:

JMP label1  ; 跳转到标签为label1的位置执行

JE/JNE:条件跳转,当相等或不相等时跳转。

JE destination
JNE destination

例如:

JE label1  ; 如果上一次比较结果为相等,则跳转到标签为label1的位置执行

CALL/RET:调用和返回子程序。

CALL subroutine
RET

例如:

CALL some_function  ; 调用名为some_function的子程序

PUSH/POP:将数据推入堆栈或从堆栈中弹出数据。

PUSH operand
POP operand

例如:

PUSH RAX  ; 将RAX寄存器中的值推入堆栈

LEA (Load Effective Address):加载有效地址,将一个内存地址加载到一个寄存器中,而不是加载内存中的值。

LEA RDI, [RAX + 8]  ; 将RAX寄存器中的值加上8的偏移量的地址加载到RDI中

AND/OR/XOR/NOT:按位逻辑运算。

AND RAX, RBX  ; RAX寄存器和RBX寄存器的值进行按位与运算
OR RDX, RCX  ; RDX寄存器和RCX寄存器的值进行按位或运算
XOR RSI, RDI  ; RSI寄存器和RDI寄存器的值进行按位异或运算
NOT RAX  ; 对RAX寄存器的值进行按位取反

SHL/SHR/SAR:逻辑左移、逻辑右移、算术右移。

SHL RAX, 3  ; 将RAX寄存器中的值向左逻辑移位3位
SHR RCX, 1  ; 将RCX寄存器中的值向右逻辑移位1位
SAR RDX, 2  ; 将RDX寄存器中的值向右算术移位2位

LOOP:循环指令,根据CX/ECX/RCX寄存器中的计数值执行循环。

LOOP label1  ; 循环执行,直到CX/ECX/RCX寄存器中的值减为0

NOP:空操作,不执行任何操作,通常用于填充代码或调试。

NOP  ; 空操作

HLT:停机指令,停止CPU执行。

HLT  ; 停止CPU执行

CDQ/CQO:将双字扩展为四字或将四字扩展为八字。

rubyCDQ  ; 将EAX中的有符号数扩展到EDX:EAX中
CQO  ; 将RAX中的有符号数扩展到RDX:RAX中

REP:重复指令前缀,用于重复执行字符串操作等。

ruby
REP MOVSB  ; 重复执行将字节从DS:SI移动到ES:DI的操作

CMOV:条件移动指令,根据条件码执行条件移动。

CMOVZ RAX, RBX  ; 如果ZF标志位为1(表示相等),则将RBX的值移动到RAX

BSWAP:字节顺序交换指令,用于交换32位或64位寄存器中的字节顺序。

BSWAP EAX  ; 交换EAX寄存器中的字节顺序

BSF/BSR:查找最低/高位设置位的指令。

BSF RCX, RAX  ; 将RAX寄存器中的值的最低设置位的索引加载到RCX中
BSR RDX, RBX  ; 将RBX寄存器中的值的最高设置位的索引加载到RDX中

CPUID:CPU信息指令,用于获取CPU相关信息。

CPUID  ; 执行CPUID指令,返回CPU相关信息

RDTSC/RDTSCP:时间戳计数器指令,用于获取时间戳计数器的当前值。

RDTSC  ; 将时间戳计数器的当前值加载到EDX:EAX中
RDTSCP ; 类似于RDTSC,但返回值包括了CPU核心编号

XCHG:交换指令,用于交换寄存器或内存中的值。

XCHG RAX, RBX  ; 交换RAX和RBX寄存器中的值
XCHG [RDI], RSI  ; 交换RDI寄存器指向的内存地址和RSI寄存器中的值

MUL/IMUL/DIV/IDIV:无符号乘法、有符号乘法、无符号除法、有符号除法指令。

MUL RBX  ; 无符号乘法,将RAX和RBX中的值相乘,结果存放在RDX:RAX中
IMUL RCX, RDX, 5  ; 有符号乘法,将RDX和5相乘,结果存放在RCX中
DIV RBX  ; 无符号除法,将RDX:RAX中的值除以RBX,商存放在RAX中,余数存放在RDX中
IDIV RBX  ; 有符号除法,将RDX:RAX中的值除以RBX,商存放在RAX中,余数存放在RDX中

FPU指令:用于浮点数运算的指令集,如加载浮点数、加减乘除等。

FLD real_value  ; 将实数值加载到FPU栈顶
FADD ST(0), ST(1)  ; 将栈顶和次栈顶的浮点数相加,并将结果存放在栈顶

SIMD指令:用于向量化操作的指令集,如SSE、AVX等。

MOVAPS XMM1, XMM2  ; 将XMM2中的值复制到XMM1中
ADDPS XMM1, XMM2  ; 将XMM1和XMM2中的浮点数向量相加

控制指令:用于程序流程控制的指令,如条件跳转、循环等。

JCXZ label  ; 如果CX寄存器为0,则跳转到指定标签
LOOP label  ; 循环执行,直到CX寄存器为0

内存访问指令:用于访问内存的指令,如加载、存储等。

MOV [address], EAX  ; 将EAX中的值存储到指定内存地址
MOV EAX, [address]  ; 将指定内存地址中的值加载到EAX中

系统调用指令:用于与操作系统进行交互的指令,如Linux中的int 0x80、syscall等。

INT 0x80  ; 发起系统调用
SYSCALL  ; 发起系统调用(在x86-64 Linux中)

辅助指令:用于辅助调试和优化的指令,如NOP、HLT、PAUSE等。

NOP  ; 空操作,不执行任何操作
HLT  ; 停止CPU执行
PAUSE  ; 暂停CPU执行,用于优化

相关文章:

汇编基础-----常见命令基本使用

汇编基础-----常见命令基本使用 MOV:将数据从一个位置复制到另一个位置。 MOV destination, source例如: MOV RAX, RBX ; 将RBX寄存器中的值复制到RAX寄存器中ADD/SUB:将两个操作数相加或相减。 ADD destination, source SUB destinatio…...

科研学习|可视化——相关性结果的可视化

一、相关性分析介绍 相关性分析是指研究两种或者两种以上的变量之间相关关系的统计分析方法,一般分析步骤为: 1)判断变量间是否存在关联;2)分析关联关系(线性/非线性)、关联方向(正相…...

MapReduce过程解析

一、Map过程解析 Read阶段:MapTask通过用户编写的RecordReader,从输入的InputSplit中解析出一个个key/value。Map阶段:将解析出的key/value交给用户编写的Map()函数处理,并产生一系列的key/value。Collect阶段:在用户编…...

速看!这8道嵌入式面试题你都会吗?

大家好,我是知微! 正逢求职季,分享一些嵌入式面试当中经常会遇到的题目,希望这些干货对小伙伴们面试有用哦! 1、介绍一下static关键字的作用 在C语言中,static 关键字有几种不同的作用,根据其…...

基于SSM的电影网站(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的电影网站(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMv…...

SOCKS代理是如何提高网络性能和兼容性的?

SOCKS代理作为一种网络协议中间件,不仅在提升网络隐私和安全性方面发挥着重要作用,也在提高网络性能和兼容性方面有着不容忽视的影响🚀。本文将深入探讨SOCKS代理如何通过减少网络延迟🚀、优化数据传输🔄、提高跨平台兼…...

好菜每回味道不同--建造者模式

1.1 炒菜没放盐 中餐,老板需要每次炒菜,每次炒出来的味道都有可能不同。麦当劳、肯德基这些不过百年的洋快餐却能在有千年饮食文化的中国发展的那么好呢?是因为你不管何时何地在哪里吃味道都一样,而鱼香肉丝在我们中餐却可以吃出上…...

RuoYi-Cloud下载与运行

一、源码下载 若依官网:RuoYi 若依官方网站 鼠标放到"源码地址"上,点击"RuoYi-Cloud 微服务版"。 跳转至Gitee页面,点击"克隆/下载",复制HTTPS链接即可。 源码地址为:https://gitee.com/y_project/RuoYi-Cloud.git 点击复制 打开IDEA,选…...

Vue2.x计算属性

1.计算属性 在Vue 插值表达式内实现一些操作其实非常便利&#xff0c;但如果表达式的逻辑过于复杂&#xff0c;会让插值过于臃肿且难以维护。这时可以考虑使用Vue的计算属性 1.1 不使用计算属性的例子 <!DOCTYPE html> <html><head><meta charset"…...

Vue中使用require.context()自动引入组件和自动生成路由的方法介绍

目录 一、自动引入组件 1、语法 2、使用 2.1、在compoents文件下随便创建index.js文件 2.2、mian.js引入该js 二、自动生成路由 1、示例&#xff1a; 2、使用 2.1、在router文件下随便创建autoRouter.js文件 2.2、在router文件下index.js文件中引入autoRouter.js文件…...

【炒股Zero To Hero】MACD金叉死叉到底是否有效,加上这个指标回报率增加197倍

移动平均收敛散度&#xff08;MACD - Moving Average Convergence Divergence&#xff09;是一种趋势跟踪动量指标&#xff0c;显示了证券价格的两个移动平均之间的关系。它用于识别趋势的方向和强度&#xff0c;属于技术分析中振荡器的一类。 MACD如何衡量股票及其趋势 有两…...

Linux网络名称空间和虚拟机有何区别

在Linux系统中&#xff0c;网络名称空间和虚拟机都是实现资源隔离和虚拟化的技术&#xff0c;但它们在设计理念、实现机制、资源消耗、使用场景等方面存在着显著的区别。本文旨在全方位、系统性地分析这两种技术的区别。&#x1f50d; 1. 设计理念与实现机制 1.1. 网络名称空…...

【UE Niagara】蓝图获取粒子数据

目录 效果 步骤 一、创建粒子 二、创建蓝图接收Niagara参数 效果 步骤 一、创建粒子 1. 新建一个Niagara发射器&#xff0c;使用Empty模板&#xff0c;打开后先添加“Spawn Rate”模块&#xff0c;这里设置粒子生成速率为0.7 在“Initialize Particle”模块中设置粒子颜色…...

更改el-cascade默认的value和label的键值

后端返回的树结构中&#xff0c;label的key不是el-cascade默认的label&#xff0c;我需要改成对应的字段&#xff0c;但是一直没有成功&#xff0c;我也在文档中找到了说明&#xff0c;但是我没注意这是在props中改&#xff0c;导致一直不成功 这是我一开始错误的写法&#xf…...

2024邮件工单系统排行揭晓:出海必备新宠

2024年各大榜单结果纷纷出炉&#xff0c;一起来看看2024十大邮件工单系统最新排行吧&#xff01; 2024十大邮件工单系统 1、Zoho Desk&#xff1b;2、FreshDesk&#xff1b;3、Service Desk Plus&#xff1b;4、Help Scout&#xff1b;5、Helpshift&#xff1b;6、HongDans&am…...

java题目17:以m行n列二维数组为参数进行方法调用,分别计算二维数组各列元素之和,返回并输出计算结果(MethodCalls17)

每日小语 伟大企业的一项特质是“利润之上的追求”。——段永平 思考 方法调用 方法调用是通过在代码中使用方法名和参数列表来实现的。 public class MethodExample {public static void main(String[] args) {// 调用方法add&#xff0c;并传入两个参数int sum add(3, 5…...

Python中Python-docx 包的run介绍

先对run做一个简单地介绍。每个paragraph对象都包含一个run对象的列表。举例&#xff1a; 这是一个简短的段落。 from docx import Document doc Document("1.docx") #上面这段话保存在1.docx中 print("这一段的run个数是&#xff1a;",len(doc.paragr…...

vue2升级到vue3的一些使用注意事项记录(三)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…...

SwiftUI Swift 显示隐藏系统顶部状态栏

Show me the code // // TestHideSystemTopBar.swift // pandabill // // Created by 朱洪苇 on 2024/4/1. //import SwiftUIstruct TestHideSystemTopBar: View {State private var isStatusBarHidden falsevar body: some View {Button {withAnimation {self.isStatusBa…...

PowerJob 分布式任务调度简介

目录 适用场景 设计目标 PowerJob 功能全景 任务调度 工作流 分布式计算 动态容器 什么是动态容器? 使用场景 可维护性和灵活性的完美结合 实时日志&在线运维 PowerJob 系统组件 PowerJob 应用场景 PowerJob 的优势 PowerJob&#xff08;原OhMyScheduler&…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...