BIOS程序被固化在计算机主机板上的一块很小的ROM芯片里,一般情况下不同主机板所有的BIOS是不同的,
但就启动部分而言,各种类型的BIOS的基本原理却是大致相同的。以一个8K的BIOS为例,其所占的地址段
为0xFE000~0xFFFFF。 此时CS:IP已经指向了0xFFFF0这个位置,BIOS就可以启动了。之后BIOS会检测显卡
,内存等等硬件。
并在紧挨他的位置用256字节的内存空间构建BIOS数据区(0x00400~0x004FF),在大约56K的位置(0x0E2CE
IP的值,每个中断向量都指向一个具体的中断服务程序。
注释:
1 0x00100是256个字节,那么0x004000就是4*256个字节,即1024个字节,为1K。从0x00400开始
计算,1K的高端地址不是0x00400,是0x00400-1,即0x003FF。
但就启动部分而言,各种类型的BIOS的基本原理却是大致相同的。以一个8K的BIOS为例,其所占的地址段
为0xFE000~0xFFFFF。 此时CS:IP已经指向了0xFFFF0这个位置,BIOS就可以启动了。之后BIOS会检测显卡
,内存等等硬件。
在这段期间,有一个对启动(boot)操作系统很关键的工作,就是BIOS在内存中建立中断向量表
和中断服务程序。
并在紧挨他的位置用256字节的内存空间构建BIOS数据区(0x00400~0x004FF),在大约56K的位置(0x0E2CE
)加载了8K左右的与中断向量表相应的若干中断服务程序。
IP的值,每个中断向量都指向一个具体的中断服务程序。
注释:
1 0x00100是256个字节,那么0x004000就是4*256个字节,即1024个字节,为1K。从0x00400开始
计算,1K的高端地址不是0x00400,是0x00400-1,即0x003FF。