汇编常见指令

news2025/6/12 20:09:56

汇编常见指令


一、数据传送指令

指令功能示例说明
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/JZZF=1相等/为零时跳转
JNE/JNZZF=0不等/非零时跳转
JG/JNLE(ZF=0) & (SF=OF)有符号大于时跳转
JL/JNGESF ≠ OF有符号小于时跳转
JA/JNBE(CF=0) & (ZF=0)无符号大于时跳转
JB/JCCF=1无符号小于/进位时跳转
3. 比较与测试
指令功能说明
CMP比较操作数CMP AX, BX ; 设置标志位(AX-BX)
TEST位测试TEST AL, 1 ; 检查 AL 最低位(AL & 1)
4. 循环控制
指令功能示例
LOOPECX 减1,非零则跳转LOOP label
LOOPEECX≠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加载字节到 ALAL ← [ESI], ESI++
STOSB存储 AL 到字节串[EDI] ← AL, EDI++

🔥 提示:搭配前缀 REP(如 REP MOVSB)可重复执行至 ECX=0。


八、系统调用指令

架构指令功能
x86 (Linux)INT 0x80触发系统调用(参数通过 EAX/EBX/ECX 传递)
x86-64SYSCALL64位系统调用(参数:RAX/RDI/RSI/RDX)
WindowsINT 0x2EWindows NT 系统调用

关键注意点

  1. 操作数大小
    • MOV AL, BL(8位) vs MOV AX, BX(16位) vs MOV EAX, EBX(32位)
  2. 内存访问格式
    • 直接寻址:MOV EAX, [0x4000]
    • 寄存器间接:MOV CL, [ESI]
    • 带偏移:MOV DX, [EBX+8]
  3. AT&T vs Intel 语法
    • Intel:MOV EAX, DWORD PTR [EBX]
    • AT&T:movl (%ebx), %eax(目标在后)

经典代码片段

section .data
    msg 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_exit
    XOR EBX, EBX    ; 返回码 0
    INT 0x80

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2407529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…

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 是什么?&…

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…

SpringCloudGateway 自定义局部过滤器

场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…

(转)什么是DockerCompose?它有什么作用?

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

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

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

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…

自然语言处理——循环神经网络

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

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…