![eef70a5a9229d4f4c679bae212e186ac.png](https://i-blog.csdnimg.cn/blog_migrate/483a7bc9c8dd55c287537299ade77ad8.jpeg)
BIOS程序被固化在计算机主板上的一块很小的ROM芯片里。通常不同的主机板所用的BIOS也有所不同。就启动部分而言,各种类型的BIOS的基本大致相似。
![7832ba4f089bce77bde8dc256485752b.png](https://i-blog.csdnimg.cn/blog_migrate/58f3b6c6f5d408e4c797cd24bb7fe890.jpeg)
启动时BIOS在内存的状态及初始执行位置
假定,我们选中的BIOS程序只有8KB,所占地址段为0xFE000 ~ 0xFFFFF,如上图所示。
现在CS:IP已经指向0XFFFF0这个位置了,这就意味着BIOS开始启动了。随着BIOS程序的执行,屏幕上会显示显卡的信息、内存的信息......说明BIOS程序在检测显卡、内存......这期间,有一项对启动(boot)操作系统至关重要的工作,那就是BIOS在内存中建立中断向量表和中断服务程序。
ROM(Read Only Memory),只读存储器。现在通常用闪存芯片做ROM。虽然闪存芯片在特定的条件下是可写的,但在主机板上的存储BIOS的闪存芯片时,业内人士把它看做ROM。ROM有一个特性,就是在断电之后仍能保存信息,这一点和硬盘类似。
BIOS程序在内存最开始的位置(0x00000)用1KB的内存空间(0x00000 ~ 0x003FF)构建中断向量表,在紧挨着它的位置用256字节的内存空间构建BIOS数据区(0x00400 ~ 0x004FF),并在大约57KB以后的位置(0x0E05B)加载了8KB左右的与中断向量表相应的若干中断服务程序。
![a4d3e4782f886d1d12f2d53673b63c56.png](https://i-blog.csdnimg.cn/blog_migrate/6069031371438c9d1dc455614c156a6a.jpeg)
BIOS在内存中加载中断向量表和中断服务程序
中断向量表有256个中断向量,每个中断向量占4个字节,其中两个字节是CS的值,两个字节是IP的值。每个中断向量都指向一个具体的中断服务程序。
INT(INTerrupt):中断,顾名思义,中途打断一件正在运行中的事。其最初的意思是:外在的事件打断正在执行的程序,转而执行处理这个事情的特定程序,处理结束后,回到被打断的程序继续执行。现在,可以将中断理解为一种技术手段。