以下均为在 Intel 8086 处理器中的内容。
计算机的加电和复位
有两种情况处理器会执行一个硬件初始化,以及一个可选的内部自测试,然后将内部所有寄存器的内容初始到一个预置的状态。
- 处理器加电;
- 处理器众多引脚中,有一个是 RESET,用于接收复位信号。即 RESET 引脚的电平由低变高时。
处理器复位使代码段寄存器(CS)的内容变为0xFFFF
,其他所有寄存器的内容都为0x0000
,包括指令指针寄存器(IP)。所以在 8086 处理器加电或者复位后,执行的第一条指令的物理地址0xFFFF0
。
因为物理地址0xFFFF0
已经位于内存顶端,继续执行容易溢出,回到内存最低端。所以在0xFFFF0
一般都是一个转跳指令。
内存分布
-
ROM(BIOS)
占用整个内存空间顶端的 64KB,物理地址范围是
0xF0000
~0xFFFFF
,里面固化了开机时要执行的指令。这部分 ROM 包括很多内容,主要是进行硬件的诊断、检测和初始化,以及一套例程,用于和外部设备交互。这块芯片又叫做基本输入输出系统(BIOS)。
-
实际内存
占用较低端的 640KB,物理地址范围为0x0000
~0x9FFFF
。 -
中间部分
供外部设备使用
MBR
主引导记录(Master Boot Record)。硬盘的第一个扇区,即 0 号盘面,0 号磁道,0 号扇区。
-
主引导扇区
主引导记录所在硬盘扇区,一般是硬盘的第一个扇区,即 0 号盘面,0 号磁道,0 号扇区。512 个字节中,最后两个字节为
0x55
,0xAA
ROM-BIOS 将读取硬盘主引导扇区的内容,将它加载到内存地址0x0000:0x7C00
处,然后跳转到这个物理地址执行。
参考
- 《x86汇编语言:从实模式到保护模式》 —— 李忠
网友评论