汇编常见指令
汇编常见指令
一、数据传送指令
指令 | 功能 | 示例 | 说明 |
---|---|---|---|
MOV | 数据传送 | MOV EAX, 10 | 将立即数 10 送入 EAX |
MOV [EBX], EAX | 将 EAX 值存入 EBX 指向的内存 | ||
LEA | 加载有效地址 | LEA EAX, [EBX+4] | 将 EBX+4 的地址存入 EAX(不访问内存) |
XCHG | 交换数据 | XCHG EAX, EBX | 交换 EAX 和 EBX 的值 |
PUSH /POP | 栈操作 | PUSH EAX | 将 EAX 压入栈 POP EBX 弹出栈顶到 EBX |
二、算术运算指令
指令 | 功能 | 示例 |
---|---|---|
ADD | 加法 | ADD EAX, EBX ; EAX = EAX + EBX |
SUB | 减法 | SUB AX, 5 ; AX = AX - 5 |
INC /DEC | 自增/自减 | INC ECX ; ECX++ DEC DL ; DL– |
MUL | 无符号乘法 | MUL BL ; AX = AL * BL |
IMUL | 有符号乘法 | IMUL CX ; DX:AX = AX * CX |
DIV | 无符号除法 | DIV BX ; AX = (DX:AX) / BX |
IDIV | 有符号除法 | IDIV CL ; AL = AX / CL |
三、位操作指令
指令 | 功能 | 示例 |
---|---|---|
AND | 按位与 | AND AL, 0xF0 ; 清零 AL 的低4位 |
OR | 按位或 | OR DX, 1 ; 设置 DX 的最低位为1 |
XOR | 按位异或 | XOR EAX, EAX ; 快速清零 EAX |
NOT | 按位取反 | NOT BL ; BL = ~BL |
SHL /SHR | 逻辑左移/右移 | SHL AX, 1 ; AX 左移1位(乘2) |
SAL /SAR | 算术左移/右移 | SAR DX, 2 ; 有符号右移(除4) |
ROL /ROR | 循环左移/右移 | ROL CL, 3 ; CL 循环左移3位 |
四、流程控制指令
1. 无条件跳转
指令 | 功能 | |
---|---|---|
JMP | 跳转到指定地址 | JMP label |
2. 条件跳转(基于标志位)
指令 | 跳转条件 | 说明 |
---|---|---|
JE /JZ | ZF=1 | 相等/为零时跳转 |
JNE /JNZ | ZF=0 | 不等/非零时跳转 |
JG /JNLE | (ZF=0) & (SF=OF) | 有符号大于时跳转 |
JL /JNGE | SF ≠ OF | 有符号小于时跳转 |
JA /JNBE | (CF=0) & (ZF=0) | 无符号大于时跳转 |
JB /JC | CF=1 | 无符号小于/进位时跳转 |
3. 比较与测试
指令 | 功能 | 说明 |
---|---|---|
CMP | 比较操作数 | CMP AX, BX ; 设置标志位(AX-BX) |
TEST | 位测试 | TEST AL, 1 ; 检查 AL 最低位(AL & 1) |
4. 循环控制
指令 | 功能 | 示例 |
---|---|---|
LOOP | ECX 减1,非零则跳转 | LOOP label |
LOOPE | ECX≠0 且 ZF=1 时跳转 | LOOPE label |
五、函数调用指令
指令 | 功能 | 说明 |
---|---|---|
CALL | 调用函数 | CALL func ; 压入返回地址后跳转 |
RET | 从函数返回 | RET ; 弹出返回地址并跳转 |
六、标志位操作
指令 | 功能 |
---|---|
STC | 设置进位标志 CF=1 |
CLC | 清除进位标志 CF=0 |
STD | 设置方向标志 DF=1(字符串操作从高地址向低地址) |
CLD | 清除方向标志 DF=0(默认低→高) |
七、字符串操作指令
指令 | 功能 | 说明 |
---|---|---|
MOVSB | 移动字节串 | [EDI] ← [ESI] ,按 DF 更新 ESI/EDI |
CMPSB | 比较字节串 | 比较 [ESI] 和 [EDI] ,更新标志位 |
SCASB | 扫描字节串 | 比较 AL 和 [EDI] ,常用于搜索字符 |
LODSB | 加载字节到 AL | AL ← [ESI] , ESI++ |
STOSB | 存储 AL 到字节串 | [EDI] ← AL , EDI++ |
🔥 提示:搭配前缀
REP
(如REP MOVSB
)可重复执行至 ECX=0。
八、系统调用指令
架构 | 指令 | 功能 |
---|---|---|
x86 (Linux) | INT 0x80 | 触发系统调用(参数通过 EAX/EBX/ECX 传递) |
x86-64 | SYSCALL | 64位系统调用(参数:RAX/RDI/RSI/RDX) |
Windows | INT 0x2E | Windows NT 系统调用 |
关键注意点
- 操作数大小:
MOV AL, BL
(8位) vsMOV AX, BX
(16位) vsMOV EAX, EBX
(32位)
- 内存访问格式:
- 直接寻址:
MOV EAX, [0x4000]
- 寄存器间接:
MOV CL, [ESI]
- 带偏移:
MOV DX, [EBX+8]
- 直接寻址:
- AT&T vs Intel 语法:
- Intel:
MOV EAX, DWORD PTR [EBX]
- AT&T:
movl (%ebx), %eax
(目标在后)
- Intel:
经典代码片段
section .datamsg db 'Hello World!', 0xA ; 定义字符串section .text
global _start
_start:MOV EAX, 4 ; sys_write 系统调用号MOV EBX, 1 ; 文件描述符 (stdout)MOV ECX, msg ; 字符串地址MOV EDX, 13 ; 字符串长度INT 0x80 ; 调用内核MOV EAX, 1 ; sys_exitXOR EBX, EBX ; 返回码 0INT 0x80
相关文章:
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...