汇编 高低八位寄存器数据存储方式(逆向分析)

目录

一、32位寄存器中支持高低八位的寄存器

二、低八位与高八位的基本概念

三、实际案例与二进制编码

[案例1:mov al, 98(修改低8位)](#案例1:mov al, 98(修改低8位))

案例2:同时操作低8位和高8位(EBX)

[案例3:mov ah, 0xFF(修改高8位)](#案例3:mov ah, 0xFF(修改高8位))

四、64位寄存器中的低高八位

五、总结

一、32位寄存器中支持高低八位的寄存器

在32位x86架构中,只有以下4个寄存器 同时支持低8位高8位的独立访问:

32位寄存器 低8位寄存器 高8位寄存器 说明
EAX AL AH 累加器,最常用
EBX BL BH 基址寄存器
ECX CL CH 计数器寄存器
EDX DL DH 数据寄存器

其余寄存器(ESI、EDI、EBP、ESP)只有低8位访问方式,没有对应的高8位寄存器。

二、低八位与高八位的基本概念

32位寄存器由4个字节组成(32位),以 EAX 为例,其结构如下:

复制代码
EAX = | Byte 3(31-24位) | Byte 2(23-16位) | Byte 1(15-8位) | Byte 0(7-0位) |
      最高字节             中字节             高8位(AH)       低8位(AL)
  • 低8位:Byte 0(最低有效字节),对应 AL/BL/CL/DL

  • 高8位:Byte 1(第8-15位),对应 AH/BH/CH/DH


三、实际案例与二进制编码

案例1:mov al, 98(修改低8位)
复制代码
mov eax, 0x12345678
mov al, 98

执行前(EAX = 0x12345678)二进制:

复制代码
0001 0010  0011 0100  0101 0110  0111 1000
Byte3      Byte2       Byte1(AH)  Byte0(AL)

执行后(EAX = 0x12345662)二进制:

复制代码
0001 0010  0011 0100  0101 0110  0110 0010
Byte3      Byte2       Byte1(AH)  Byte0(AL)

变化

  • AL(低8位):0111 1000 (0x78) →替换 0110 0010 (0x62 = 98)

  • AH(高8位):0101 0110 (0x56) 保持不变

案例2:同时操作低8位和高8位(EBX)
复制代码
mov ebx, 0x00000000
mov bl, 0xAB        ; 修改低8位
mov bh, 0xCD        ; 修改高8位

执行后 EBX = 0x0000CDAB

二进制显示:

复制代码
0000 0000  0000 0000  1100 1101  1010 1011
Byte3      Byte2       Byte1(BH)  Byte0(BL)
          高8位 = 0xCD      低8位 = 0xAB
案例3:mov ah, 0xFF(修改高8位)

执行前:

复制代码
... 0101 0110  0111 1000   (AH=0x56, AL=0x78)

执行后:

复制代码
... 1111 1111  0111 1000   (AH=0xFF, AL=0x78)

EAX 变为 0x1234FF78

四、64位寄存器中的低高八位

64位寄存器(RAX等)包含8个字节,低高八位的访问方式与32位完全兼容:

复制代码
RAX = | Byte7 | Byte6 | Byte5 | Byte4 | Byte3 | Byte2 | Byte1(AH) | Byte0(AL) |

案例4:64位下修改低8位

复制代码
mov rax, 0x1122334455667788
mov al, 0x99

执行后 :最低字节变为 0x99,结果为 0x1122334455667799

二进制局部变化(最低16位):

  • 执行前:0111 1000 1000 1000 (AH=0x77, AL=0x88)

  • 执行后:0111 1000 1001 1001 (AH不变,AL=0x99)


五、总结

  • 支持高低8位的寄存器 只有 EAX、EBX、ECX、EDX ,分别对应 AL/AH、BL/BH、CL/CH、DL/DH

  • 低8位 = 寄存器最低字节(第0-7位),高8位 = 第8-15位。

  • mov al, xx 只修改最低8位,其他字节完全不变。

  • mov ah, xx 只修改第8-15位(高8位),不影响低8位和其他高位字节。

  • 这种字节级访问在字符处理、标志位操作、颜色值提取和汇编优化中非常常用。

相关推荐
·薯条大王4 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
deepseek2316 小时前
OpenAI 首次为自家模型踩刹车:Astra「无法排除关键网络能力」,Preparedness Framework 第一次真的咬人
人工智能·网络安全·ai agent
m0_5474866618 小时前
《网络协议安全》全套PPT课件(太原理工大学)
网络协议·安全·网络安全
txg6661 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
数据知道1 天前
IDOR 不安全的直接对象引用:API 越权实战检测
java·开发语言·网络·安全·网络安全
能年玲奈喝榴莲牛奶2 天前
使用AI编写-资产和漏洞管理系统
人工智能·python·网络安全·安全服务
小小工匠2 天前
当 Agent 遇上逆向:拆解 reverse-skill 的技能路由架构
架构·逆向·reverse-skill
菩提小狗2 天前
每日安全情报报告 · 2026-08-05
网络安全·漏洞·cve·安全情报·每日安全
sunburn-2 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
Yan_chen6662 天前
CTFHub Web前置技能闯关
网络安全·漏洞·ctfhub web前置技能