本文主要是介绍8086的启动过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1 8086的启动过程
- 1.1 8086启动时的寄存器情况
- 1.2 BIOS
- 1.3 8086启动的整体流程
1 8086的启动过程
1.1 8086启动时的寄存器情况
8086处理器在启动或者重启的时候,会对寄存器执行一个初始化的操作。初始化后的寄存器信息如下:
CS:FF FF,其它的寄存器:00 00
。
1.2 BIOS
我们知道8086处理器一共有20根地址线,那么其访问空间就是1MB,如下:
最顶端的ROM(Read-Only Memory,只读存储器)中固化有我们的BIOS(Basic Input Output System,基本输入输出系统)。
上电后CPU就会执行地址为0xFFFF0处的代码,但是我们可以这里距离顶端只有16个字节,所以可执行的代码是非常有限的。所以,这个地址处存放的是一条跳转指令,跳转指令的内容如下:
jmp F000:005C
注意,上面的代码执行完毕会将CS的值设置为F000,IP的值设置为005C。也就是说处理器会去F005C的地方去执行指令。
1.3 8086启动的整体流程
-
启动重启计算机,寄存器被初始化
CS:FFFF IP:0000 -
FFFF0—> jmp F000:005C
CS:F000 IP:005C -
F005C—>依次执行BIOS中的指令
-
BIOS所做的最后一件事:将主引导扇区中(0面0道1扇区,最后两个字节为硬盘主引导扇区的有效标志,必须为0x55,0xaa)的内容加载到7C00的位置处。
-
BIOS的最后一条指令:JMP 0000:7C00
CS:0000 IP:7C00 -
07C00—>执行主引导扇区中的指令
1)加载操作系统自举代码到内存中
2)通过一条跳转指令,使处理器去执行操作系统的自举代码
参考资料:
- 深度学习:C/C++、计算机体系
这篇关于8086的启动过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!