汇编基础-----常见命令基本使用
汇编基础-----常见命令基本使用
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 插值表达式内实现一些操作其实非常便利,但如果表达式的逻辑过于复杂,会让插值过于臃肿且难以维护。这时可以考虑使用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、示例: 2、使用 2.1、在router文件下随便创建autoRouter.js文件 2.2、在router文件下index.js文件中引入autoRouter.js文件…...
【炒股Zero To Hero】MACD金叉死叉到底是否有效,加上这个指标回报率增加197倍
移动平均收敛散度(MACD - Moving Average Convergence Divergence)是一种趋势跟踪动量指标,显示了证券价格的两个移动平均之间的关系。它用于识别趋势的方向和强度,属于技术分析中振荡器的一类。 MACD如何衡量股票及其趋势 有两…...
Linux网络名称空间和虚拟机有何区别
在Linux系统中,网络名称空间和虚拟机都是实现资源隔离和虚拟化的技术,但它们在设计理念、实现机制、资源消耗、使用场景等方面存在着显著的区别。本文旨在全方位、系统性地分析这两种技术的区别。🔍 1. 设计理念与实现机制 1.1. 网络名称空…...
【UE Niagara】蓝图获取粒子数据
目录 效果 步骤 一、创建粒子 二、创建蓝图接收Niagara参数 效果 步骤 一、创建粒子 1. 新建一个Niagara发射器,使用Empty模板,打开后先添加“Spawn Rate”模块,这里设置粒子生成速率为0.7 在“Initialize Particle”模块中设置粒子颜色…...
更改el-cascade默认的value和label的键值
后端返回的树结构中,label的key不是el-cascade默认的label,我需要改成对应的字段,但是一直没有成功,我也在文档中找到了说明,但是我没注意这是在props中改,导致一直不成功 这是我一开始错误的写法…...
2024邮件工单系统排行揭晓:出海必备新宠
2024年各大榜单结果纷纷出炉,一起来看看2024十大邮件工单系统最新排行吧! 2024十大邮件工单系统 1、Zoho Desk;2、FreshDesk;3、Service Desk Plus;4、Help Scout;5、Helpshift;6、HongDans&am…...
java题目17:以m行n列二维数组为参数进行方法调用,分别计算二维数组各列元素之和,返回并输出计算结果(MethodCalls17)
每日小语 伟大企业的一项特质是“利润之上的追求”。——段永平 思考 方法调用 方法调用是通过在代码中使用方法名和参数列表来实现的。 public class MethodExample {public static void main(String[] args) {// 调用方法add,并传入两个参数int sum add(3, 5…...
Python中Python-docx 包的run介绍
先对run做一个简单地介绍。每个paragraph对象都包含一个run对象的列表。举例: 这是一个简短的段落。 from docx import Document doc Document("1.docx") #上面这段话保存在1.docx中 print("这一段的run个数是:",len(doc.paragr…...
vue2升级到vue3的一些使用注意事项记录(三)
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码:…...
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(原OhMyScheduler&…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...
