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

目录

一、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位和其他高位字节。

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

相关推荐
学逆向的14 小时前
C++ 合并命名空间
开发语言·c++·网络安全
学逆向的15 小时前
C 局部静态变量
c语言·开发语言·网络安全
杭州默安科技19 小时前
从“被动响应”到“主动遏制”:AI Agent时代,网络防御体系如何重构?
人工智能·网络安全·ai智能体
砚凝霜20 小时前
[CTF Misc 图片隐写] misc1:文件末尾追加 flag(strings 一秒出 flag,附原理)
网络安全
Gnevergiveup1 天前
ATT&CK红蓝对抗实战指南-Windows安全基础
笔记·网络安全
LLTSTJ1 天前
进制转换详解(二进制、八进制、十进制、十六进制)
二进制·进制转换·计算机基础·编程入门
白帽攻防录1 天前
某pc客户端app从xss到rce实战案例
前端·网络安全·黑客·xss·rce·src漏洞·app漏洞
小向是个Der1 天前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译
学网安的肆伍1 天前
认证机制攻防学习|PortSwigger Authentication 靶场复现总结(二):用户名枚举进阶
学习·web安全·网络安全·burpsuite·portswigger·认证安全·靶场复现
网络小江1 天前
组网第41课:ACL 门禁——标准/扩展、规则顺序、time-range、in/out 方向
运维·网络安全·acl·访问列表·in/out