8086的启动过程

1 8086的启动过程

1.1 8086启动时的寄存器情况

8086处理器在启动或者重启的时候,会对寄存器执行一个初始化的操作。初始化后的寄存器信息如下:
CS:FF FF,其它的寄存器:00 00

1.2 BIOS

我们知道8086处理器一共有20根地址线,那么其访问空间就是1MB,如下:
8086的启动过程
最顶端的ROM(Read-Only Memory,只读存储器)中固化有我们的BIOS(Basic Input Output System,基本输入输出系统)。

上电后CPU就会执行地址为0xFFFF0处的代码,但是我们可以这里距离顶端只有16个字节,所以可执行的代码是非常有限的。所以,这个地址处存放的是一条跳转指令,跳转指令的内容如下:

jmp F000:005C

注意,上面的代码执行完毕会将CS的值设置为F000,IP的值设置为005C。也就是说处理器会去F005C的地方去执行指令。

1.3 8086启动的整体流程

  1. 启动重启计算机,寄存器被初始化
    CS:FFFF IP:0000

  2. FFFF0—> jmp F000:005C
    CS:F000 IP:005C

  3. F005C—>依次执行BIOS中的指令

  4. BIOS所做的最后一件事:将主引导扇区中(0面0道1扇区)的内容加载到7C00的位置处

  5. BIOS的最后一条指令:JMP 0000:7C00
    CS:0000 IP:7C00

  6. 07C00—>执行主引导扇区中的指令
    1)加载操作系统自举代码到内存中
    2)通过一条跳转指令,使处理器去执行操作系统的自举代码


参考资料:

  1. 深度学习:C/C++、计算机体系