1. 实模式寻址机制解析
在8086处理器架构中,CPU启动后会进入实模式(Real Mode),这是x86系列处理器最基础的工作模式。实模式下最显著的特点就是其特殊的内存寻址方式。
1.1 寄存器与地址线的矛盾
8086处理器设计时面临一个关键矛盾:
- 寄存器宽度:16位(最大寻址能力64KB)
- 地址线宽度:20位(最大寻址能力1MB)
这种设计差异导致16位寄存器无法直接表示20位物理地址。为解决这个问题,Intel工程师设计了段式寻址机制:
code复制物理地址 = 段地址 × 16 + 偏移地址
提示:乘以16相当于左移4位二进制,这使16位段地址能覆盖20位地址空间的高16位。
1.2 启动时的固定入口
CPU加电后硬件会强制设置:
- CS(代码段寄存器) = 0xF000
- IP(指令指针寄存器) = 0xFFF0
通过段式寻址计算得到的第一条指令地址:
code复制0xF000 × 16 + 0xFFF0 = 0xFFFF0
这个位置存放着一条跳转指令(通常是JMP),引导CPU跳转到BIOS的初始化代码。有趣的是,这个地址距离1MB内存顶端只有16字节,这种设计确保了即使内存较小也能正常启动。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. MBR主引导记录详解
2.1 MBR的加载机制
BIOS完成硬件检测后,会按照以下流程加载MBR:
- 读取磁盘0柱面0磁头1扇区(CHS 0/0/1)
- 检查最后两个字节是否为0x55和0xAA(有效签名)
- 将512字节内容加载到内存0x7C00处
- 跳转到0x7C00执行
注意:0x7C00这个地址是历史遗留标准,源于早期计算机的内存布局考虑(保证有足够空间存放MBR和后续加载的操作系统)。
2.2 MBR的内存布局
一个标准MBR的结构如下表所示:
| 偏移量 | 长度 | 内容 |
|---|---|---|
| 0x000 | 446 | 引导代码 |
| 0x1BE | 16 | 分区表项1 |
| 0x1CE | 16 | 分区表项2 |
| 0x1DE | 16 | 分区表项3 |
| 0x1EE | 16 | 分区表项4 |
| 0x1FE | 2 | 签名(0 |
