当前位置:首页 > 未分类 > 正文内容

汇编指令

admin2年前 (2024-06-26)未分类348

NOP

表示 No Operation(空操作),机器码为 0x90,无操作数。执行这条指令时,CPU 不进行任何实质性操作,仅消耗一个指令周期,常用于内存地址对齐、延时控制或填充溢出 payload 等场景。

PUSH

功能:将数据压入栈中(栈遵循 “先进后出” 原则)。

指令格式:push x

操作数范围

  • x 可取 imm8(8 位立即数)、imm16(16 位立即数)、imm32(32 位立即数)、r/m16(16 位寄存器 / 内存)、r/m32(32 位寄存器 / 内存)、r/m64(64 位寄存器 / 内存)。

执行逻辑:栈指针寄存器 ESP(32 位环境)或 RSP(64 位环境)自动递减(32 位环境递减 4 字节,64 位环境递减 8 字节),再将数据存入栈指针指向的内存地址。

POP

功能:从栈中弹出数据(取出栈顶元素)。

指令格式:pop x

操作数范围

  • x 可取 r/m16(16 位寄存器 / 内存)、r/m32(32 位寄存器 / 内存)、r/m64(64 位寄存器 / 内存)(不可为立即数)。

执行逻辑:先将栈指针 ESP/RSP 指向的栈顶数据存入目标操作数 x,再使 ESP/RSP 自动递增(32 位环境递增 4 字节,64 位环境递增 8 字节)。

MOV

功能:将数据从源操作数移动到目的操作数(仅数据拷贝,源操作数内容不变)。

指令格式:mov x1, x2(意为 “将 x2 的数据移动到 x1”,x1 为目的操作数,x2 为源操作数)。

操作数组合规则

  1. 寄存器到寄存器(如 mov eax, ebx);

  1. 内存到寄存器(如 mov eax, [0x12345678])、寄存器到内存(如 mov [0x12345678], eax);

  1. 立即数到寄存器(如 mov eax, 0x12)、立即数到内存(如 mov [0x12345678], 0x12)。

注意:不支持 “内存直接到内存” 的移动(如 mov [0x1234], [0x5678] 非法),需通过寄存器中转。

LEA

功能:Load Effective Address(载入有效地址),本质是计算内存操作数的地址并存入目标寄存器,而非读取内存中的数据。

指令格式:lea x1, x2

操作数范围

  • x1:r16(16 位寄存器)、r32(32 位寄存器)、r64(64 位寄存器);

  • x2:内存地址(常用 [] 语法表示 “引用内存地址”,如 [eax+4*ebx+0x12])。

典型用途

  1. 指针运算(如计算数组元素地址:lea eax, [ebx+4*ecx],假设数组元素占 4 字节);

  1. 简化数值计算(如 lea eax, [ebx+ecx+0x10],等效于 eax = ebx + ecx + 16,比 add 指令更高效)。

ADD

功能:实现两个操作数的加法运算,结果存入目的操作数。

指令格式:add x1, x2(意为 “x1 = x1 + x2”,x1 为目的操作数,x2 为源操作数)。

操作数范围

  • x1:r/m16、r/m32、r/m64;

  • x2:r/m16、r/m32、r/m64 或立即数(imm8/16/32)。

注意:x1 和 x2 不能同时为内存操作数。

标志位影响:执行结果会修改 eflags 寄存器中的标志位,包括:

  • OF(溢出标志)、SF(符号标志)、ZF(零标志)、AF(辅助进位标志)、PF(奇偶标志)、CF(进位标志)。

SUB

功能:实现两个操作数的减法运算,结果存入目的操作数(x1 = x1 - x2)。

指令格式:sub x1, x2(x1 为目的操作数,x2 为源操作数)。

操作数范围:与 ADD 指令一致:

  • x1:r/m16、r/m32、r/m64;

  • x2:r/m16、r/m32、r/m64 或立即数(imm8/16/32)。

注意:x1 和 x2 不能同时为内存操作数。

标志位影响:与 ADD 指令一致,会修改 eflags 寄存器的 OF、SF、ZF、AF、PF、CF 标志位。

IMUL/MUL

1. IMUL(有符号乘法指令)

功能:实现有符号整数的乘法运算,结果长度为操作数的 2 倍(需用两个寄存器存储)。

三种指令格式

  1. imul r/m32(单操作数):

    • 功能:edx:eax = eax * r/m32(32 位环境),edx 存储高位结果,eax 存储低位结果;

    • 示例:imul ebx(等效于 edx:eax = eax * ebx)。

  1. imul reg, r/m32(双操作数):

    • 功能:reg = reg * r/m32(结果存入目标寄存器 reg);

    • 示例:imul ecx, ebx(等效于 ecx = ecx * ebx)。

  1. imul reg, r/m32, imm(三操作数):

    • 功能:reg = r/m32 * imm(立即数 imm 与 r/m32 相乘,结果存入 reg);

    • 示例:imul ecx, ebx, 0x10(等效于 ecx = ebx * 16)。

2. MUL(无符号乘法指令)

功能:实现无符号整数的乘法运算,指令格式与 IMUL 的 “单操作数格式” 一致,但仅处理无符号数,结果存储规则相同(如 mul r/m32 对应 edx:eax = eax * r/m32)。

注意:IMUL 也可处理无符号数(结果与 MUL 一致),但 MUL 无法处理有符号数。

IDIV/DIV

1. DIV(无符号除法指令)

功能:实现无符号整数的除法运算,被除数长度为除数的 2 倍(需用两个寄存器存储)。

两种指令格式

  1. 16 位除法:div r/m8

    • 被除数:ax(16 位);

    • 除数:r/m8(8 位);

    • 结果:al 存储商,ah 存储余数。

    • 示例:div bl(ax / bl,商存 al,余数存 ah)。

  1. 32 位除法:div r/m32

    • 被除数:edx:eax(64 位,edx 为高位,eax 为低位);

    • 除数:r/m32(32 位);

    • 结果:eax 存储商,edx 存储余数。

    • 示例:div ebx(edx:eax / ebx,商存 eax,余数存 edx)。

注意

  • 若被除数为 32 位(eax),执行前需将 edx 置为 0(避免高位残留数据影响结果);

  • 若除数为 0 或商超过目标寄存器容量(如 16 位除法商超过 8 位),会抛出 “除零异常” 或 “溢出异常”。

2. IDIV(有符号除法指令)

功能:实现有符号整数的除法运算,指令格式与 DIV 一致,但处理有符号数,余数符号与被除数相同。

示例:idiv ebx(edx:eax 除以 ebx,有符号运算,商存 eax,余数存 edx)。

AND

功能:实现两个操作数的 “按位逻辑与” 运算,结果存入目的操作数(x1 = x1 & x2)。

指令格式:and x1, x2(x1 为目的操作数,x2 为源操作数)。

操作数范围

  • x1:r/m16、r/m32、r/m64;

  • x2:r/m16、r/m32、r/m64 或立即数(imm8/16/32)。

注意:x1 和 x2 不能同时为内存操作数。

典型用途:按位清零(如 and eax, 0x0000ffff,将 eax 高 16 位清零)。

OR

功能:实现两个操作数的 “按位逻辑或” 运算,结果存入目的操作数(x1 = x1 | x2)。

指令格式:or x1, x2(x1 为目的操作数,x2 为源操作数)。

操作数范围:与 AND 指令一致:

  • x1:r/m16、r/m32、r/m64;

  • x2:r/m16、r/m32、r/m64 或立即数(imm8/16/32)。

注意:x1 和 x2 不能同时为内存操作数。

典型用途:按位置 1(如 or eax, 0x00000001,将 eax 最低位置 1)。

XOR

功能:实现两个操作数的 “按位异或” 运算(相同为 0,不同为 1),结果存入目的操作数(x1 = x1 ^ x2)。

指令格式:xor x1, x2(x1 为目的操作数,x2 为源操作数)。

操作数范围:与 AND、OR 指令一致:

  • x1:r/m16、r/m32、r/m64;

  • x2:r/m16、r/m32、r/m64 或立即数(imm8/16/32)。

注意:x1 和 x2 不能同时为内存操作数。

典型用途:寄存器清零(如 xor eax, eax,等效于 mov eax, 0,但执行效率更高)。

NOT

功能:实现操作数的 “按位逻辑非” 运算(每一位取反,0 变 1,1 变 0),结果存入原操作数(x = ~x)。

指令格式:not x

操作数范围:r/m16(16 位寄存器 / 内存)、r/m32(32 位寄存器 / 内存)、r/m64(64 位寄存器 / 内存)(不可为立即数)。

注意:NOT 是单操作数指令,且不影响 eflags 寄存器的任何标志位。


扫描二维码推送至手机访问。

版权声明:本文由克拉玛依三十年社团发布,如需转载请注明出处。

本文链接:https://www.klmyssn.com/?id=73

分享给朋友:

“汇编指令” 的相关文章

(原创)想学黑阔?这些书可以带你飞![web 安全书籍]

(原创)想学黑阔?这些书可以带你飞![web 安全书籍]

这些是我多年前收集的一些 web 安全相关书籍,虽当初未能坚持系统学习,但书籍本身质量较好,现分享给大家,希望能为想学 web 安全的朋友提供帮助!书籍资源获取百度云链接:http://pan.baidu.com/s/1jHVch9O提取密码:bauj...

(原创)校园卡破解系列之权限克隆 [pm3 破解饭卡][pm3 克隆数据][校园卡克隆][IC 卡克隆]

(原创)校园卡破解系列之权限克隆 [pm3 破解饭卡][pm3 克隆数据][校园卡克隆][IC 卡克隆]

一、免责声明本文主张交流与科研学习,请勿对文中提及的内容进行恶意使用!本社团及作者对读者后续的行为不承担任何法律责任。此文章是综合之前饭卡复制、权限提升漏洞后的合并版本,后半部分聚焦饭卡破解;若看过之前文章,可直接跳转至 “(一)饭卡权限提升” 章节。二、基础准备:工具与测试对象1. 核心工具:PM...

(原创)求人不如求己 -- 剪辑音乐就是这么简单 [如何剪辑音乐]

(原创)求人不如求己 -- 剪辑音乐就是这么简单 [如何剪辑音乐]

每每到了学校有活动,需要播放歌曲时,QQ 就多几个好友,消息又 99+,不消问什么事情,就知道是找我剪辑歌曲的同学了。怎么说,我这人对别人提出的需求,都尽力去帮助的,在剪辑音乐这事情上,从没拒绝过,但年复一年,每次剪辑音乐其实很简单,但是量多,就比较影响自己时间了,我又不会拒绝别人,很是尴尬,所以在...

小讲堂心得

小讲堂心得

参加小讲堂活动,是受邀两位学习部的同学十分热情的邀请,为同学们讲讲网络安全方面的知识。我感到十分荣幸,但又有些许担忧,怕讲不好,因为网络安全这个学科涉及的知识面十分宽泛,网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理...

(原创)Web 渗透实例之中国教育部青少年普法网站逻辑漏洞【网站逻辑漏洞】【网站逻辑漏洞挖掘】【网站逻辑漏洞实例】

(原创)Web 渗透实例之中国教育部青少年普法网站逻辑漏洞【网站逻辑漏洞】【网站逻辑漏洞挖掘】【网站逻辑漏洞实例】

重要声明:此漏洞于 2016 年 12 月 2 号由社团成员挖掘出来,已经第一时间提交到补天,现已修复,发出来仅供学习与讨论,请勿用于非法途径!!!一、漏洞基本信息漏洞关联网站:中国教育部青少年普法网站用户登录界面地址:https://user.qspfw.com具体漏洞页面:用户密码找回界面,地址...

(原创)web 渗透实例之克市教育局内网渗透 — 市十六小

(原创)web 渗透实例之克市教育局内网渗透 — 市十六小

引言下午元旦搞活动不上课,在机房浪一波。想到上次内网提权了学校饭卡管理服务器,便把 bugscan 的节点加到这个服务器了 —— 因为该服务器处于教育局内网,bugscan 直接扫出来了很多内网 IP 的网站,渗透了一波,如市三中、新一中、十八小、十六小等等。之前暑假对教育局 web 站点渗透都是外...