1. 8086/8088实模式内存布局全景图
当一台基于8086/8088处理器的计算机启动时,处理器会进入实模式(Real Mode)运行状态。这个模式下,CPU只能访问1MB(0x00000到0xFFFFF)的物理内存空间。这1MB的内存被严格划分为多个功能区域,每个区域都有其特定的用途。理解这个内存布局对于开发底层软件、编写引导程序或进行系统级调试至关重要。
实模式下的内存布局可以形象地比作一栋20层的大楼(每层代表64KB内存空间),每层楼都有固定的功能分区。比如1楼是保安室(中断向量表),2楼是物业办公室(BIOS数据区),而顶层则是大楼的管理中心(BIOS程序)。这种固定划分源于早期计算机硬件设计的限制和兼容性考虑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 关键内存区域详解
2.1 低端内存区(0x00000-0x004FF)
这个区域包含两个最重要的数据结构:
-
中断向量表(IVT):位于0x00000-0x003FF的1KB空间,存储256个中断服务程序的入口地址。每个中断向量占4字节(2字节段地址+2字节偏移地址),按照中断号顺序排列。当发生中断时,CPU会自动查找这个表来定位处理程序。
-
BIOS数据区:0x00400-0x004FF的256字节空间,包含系统硬件状态信息。例如:
- 0x00410-0x00411:设备标志字
- 0x00417:键盘状态标志
- 0x00440:串口端口地址
- 0x00472:冷启动/热启动标志
注意:直接修改这些区域可能导致系统不稳定,操作前最好保存原始值。
2.2 用户可用内存区(0x00500-0x9FFFF)
这是DOS程序主要使用的内存区域,具体可分为:
-
常规内存(0x00500-0x9FC00):
- 0x00500-0x07BFF:早期DOS暂存区
- 0x07C00-0x07DFF:引导扇区加载位置
- 0x07E00-0x9FBFF:主要程序运行空间
-
特殊用途区域:
- 0x07C00:BIOS将引导扇区加载到此处
- 0x90000-0x9FBFF:某些BIOS会使用这部分内存
2.3 硬件映射区(0xA0000-0xFFFFF)
这个区域被硬件设备占
