目录
[1. 16位模式(8086/8088 及 16 位 OS,如 DOS、早期 Windows)](#1. 16位模式(8086/8088 及 16 位 OS,如 DOS、早期 Windows))
[1.1 通用寄存器(GPR)](#1.1 通用寄存器(GPR))
[1.2 段寄存器](#1.2 段寄存器)
[1.3 标志寄存器(FLAGS,16位)](#1.3 标志寄存器(FLAGS,16位))
[2. 32位模式(80386+,32 位 OS 如 Win32、Linux i386)](#2. 32位模式(80386+,32 位 OS 如 Win32、Linux i386))
[2.1 通用寄存器(GPR)](#2.1 通用寄存器(GPR))
[2.2 段寄存器](#2.2 段寄存器)
[2.3 标志寄存器(EFLAGS,32位)](#2.3 标志寄存器(EFLAGS,32位))
[3. 64位模式(x86-64 / AMD64,64 位 OS 如 Win64、Linux x86_64)](#3. 64位模式(x86-64 / AMD64,64 位 OS 如 Win64、Linux x86_64))
[3.1 通用寄存器(GPR)](#3.1 通用寄存器(GPR))
[3.2 段寄存器](#3.2 段寄存器)
[3.3 标志寄存器(RFLAGS,64位)](#3.3 标志寄存器(RFLAGS,64位))

1. 16位模式(8086/8088 及 16 位 OS,如 DOS、早期 Windows)
1.1 通用寄存器(GPR)
|--------|-----|-----|------------------|
| 16位寄存器 | 高8位 | 低8位 | 主要用途 |
| AX | AH | AL | 累加器,最常用作运算和返回值 |
| BX | BH | BL | 基址寄存器,常用于内存寻址 |
| CX | CH | CL | 计数器,用于循环和移位 |
| DX | DH | DL | 数据寄存器,常用于乘除法和I/O |
| SI | - | - | 源索引(字符串操作) |
| DI | - | - | 目的索引(字符串操作) |
| BP | - | - | 基址指针(栈帧) |
| SP | - | - | 栈指针(栈顶) |
1.2 段寄存器
-
CS:代码段(Code Segment)
-
DS:数据段(Data Segment)
-
SS:栈段(Stack Segment)
-
ES:附加段(Extra Segment)
1.3 标志寄存器(FLAGS,16位)
|----|----|-----------------|--------|--------|
| 位 | 标志 | 名称 | 0 的含义 | 1 的含义 |
| 0 | CF | Carry Flag | 无进位 | 有进位 |
| 2 | PF | Parity Flag | 奇数个1 | 偶数个1 |
| 4 | AF | Auxiliary Carry | 低4位无进位 | 低4位有进位 |
| 6 | ZF | Zero Flag | 结果 ≠ 0 | 结果 = 0 |
| 7 | SF | Sign Flag | 非负 | 负数 |
| 8 | TF | Trap Flag | 正常执行 | 单步调试 |
| 9 | IF | Interrupt Flag | 禁止中断 | 允许中断 |
| 10 | DF | Direction Flag | 正向(递增) | 反向(递减) |
| 11 | OF | Overflow Flag | 无溢出 | 有符号溢出 |
2. 32位模式(80386+,32 位 OS 如 Win32、Linux i386)
2.1 通用寄存器(GPR)
|---------|------|-----|-----|-----------|
| 32位寄存器 | 低16位 | 高8位 | 低8位 | 主要用途 |
| EAX | AX | AH | AL | 累加器、函数返回值 |
| EBX | BX | BH | BL | 基址寄存器 |
| ECX | CX | CH | CL | 计数器 |
| EDX | DX | DH | DL | 数据寄存器 |
| ESI | SI | - | - | 源索引 |
| EDI | DI | - | - | 目的索引 |
| EBP | BP | - | - | 栈帧基址指针 |
| ESP | SP | - | - | 栈指针 |
2.2 段寄存器
-
CS:代码段
-
DS:数据段
-
SS:栈段
-
ES:附加段
-
FS:线程局部存储(TLS)
-
GS:线程局部存储(TLS)
2.3 标志寄存器(EFLAGS,32位)
低16位与16位 FLAGS 相同,主要标志位如下:
|-------|------|-----------------------|----------|
| 位 | 标志 | 名称 | 含义 |
| 0 | CF | Carry Flag | 进位标志 |
| 2 | PF | Parity Flag | 奇偶标志 |
| 4 | AF | Auxiliary Carry | 辅助进位 |
| 6 | ZF | Zero Flag | 零标志 |
| 7 | SF | Sign Flag | 符号标志 |
| 8 | TF | Trap Flag | 单步调试 |
| 9 | IF | Interrupt Enable Flag | 中断允许标志 |
| 10 | DF | Direction Flag | 方向标志 |
| 11 | OF | Overflow Flag | 溢出标志 |
| 12-13 | IOPL | I/O Privilege Level | I/O特权级 |
| 14 | NT | Nested Task Flag | 嵌套任务 |
| 16 | RF | Resume Flag | 调试恢复 |
| 17 | VM | Virtual-8086 Mode | 虚拟8086模式 |
| 18 | AC | Alignment Check | 对齐检查 |
| 21 | ID | Identification Flag | CPUID支持 |
3. 64位模式(x86-64 / AMD64,64 位 OS 如 Win64、Linux x86_64)
3.1 通用寄存器(GPR)
|---------|-------|-------|---------|---------|
| 64位寄存器 | 32位部分 | 16位部分 | 8位访问 | 主要用途 |
| RAX | EAX | AX | AL / AH | 累加器、返回值 |
| RBX | EBX | BX | BL / BH | 基址寄存器 |
| RCX | ECX | CX | CL / CH | 计数器 |
| RDX | EDX | DX | DL / DH | 数据寄存器 |
| RSI | ESI | SI | SIL | 源索引 |
| RDI | EDI | DI | DIL | 目的索引 |
| RBP | EBP | BP | BPL | 栈帧基址 |
| RSP | ESP | SP | SPL | 栈指针 |
| R8 | R8D | R8W | R8B | 通用 |
| R9 | R9D | R9W | R9B | 通用 |
| R10 | R10D | R10W | R10B | 通用 |
| R11 | R11D | R11W | R11B | 通用 |
| R12 | R12D | R12W | R12B | 通用 |
| R13 | R13D | R13W | R13B | 通用 |
| R14 | R14D | R14W | R14B | 通用 |
| R15 | R15D | R15W | R15B | 通用 |
3.2 段寄存器
|--------|-------------|
| 段寄存器 | 主要用途 |
| CS | 代码段 |
| DS | 数据段 |
| SS | 栈段 |
| ES | 附加段 |
| FS | 线程局部存储(TLS) |
| GS | 线程局部存储(TLS) |
说明:64位模式采用平坦内存模型,大多数段基址为0,仅 FS 和 GS 仍被广泛使用。
3.3 标志寄存器(RFLAGS,64位)
-
低 32位:与32位 EFLAGS 完全一致。
-
高32位:保留未使用。
主要标志位含义与32位模式相同(CF、ZF、SF、OF、DF、IF 等)。
整体总结对比
|-----|-------|------|--------------|----------|
| 模式 | 通用寄存器 | 段寄存器 | 标志寄存器 | 主要特点 |
| 16位 | 8个 | 4个 | FLAGS (16位) | 实模式 |
| 32位 | 8个 | 6个 | EFLAGS (32位) | 保护模式 |
| 64位 | 16个 | 6个 | RFLAGS (64位) | 平坦模型,长模式 |