汇编基础-----常见命令基本使用
汇编基础-----常见命令基本使用
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&…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...