分享

在了解BIOS是如何将操作系统程序加载到内存中之前,先来了解一下BIOS程序自身是如何启动的。

 新用户0935snDB 2022-07-01 发布于河南
 
使用计算机的经验得知:要想执行一个程序,必须在窗口中鼠标双击它,或者在命令行中输入命令。从计算机底层机制上讲,我们使用的windows其实已经是一个运行起来的程序了。

[呆无辜]
在开机加电的一瞬间,内存中什么程序也没有,没有任何程序在运行,不可能有操作系统,更不可能有操作系统的用户界面。无法人为地执行BIOS程序,那么BIOS程序又是由谁来执行的呢?
[呆无辜]
从体系的角度看:既然用软件方法不可能执行BIOS,就只能靠硬件方法完成了。

从硬件角度看,Intel为了兼容,也为了解决最开始的启动问题,Intel将所有80x86系列的CPU的硬件都设计为加电即进入16位实模式状态运行。

同时将CPU硬件逻辑设计为加电瞬间强行将CS的值置为0xF000、IP的值置为0xFFF0,这样CS:IP就指向0xFFFF0这个地址位置,0xFFFF0指向了BIOS的地址范围。

这是一个纯硬件完成的动作!如果此时这个位置没有可执行代码,那么计算机就此死机。反之,如果这个位置有可执行代码,计算机将从这里的代码开始,沿着后续程序一直执行下去。
[呆无辜]
BIOS程序的入口地址恰恰就是0xFFFF0 !

[呆无辜][呆无辜][呆无辜]
IP/EIP(Instruction Pointer):指令指针寄存器,存在于CPU中,记录将要执行的指令在代码段内的偏移地址,和CS组合即为将要执行的指令的内存地址。实模式为绝对地址,指令指针为16位,即IP;保护模式下为线性地址,指令指针为32位,即EIP。


CS(Code Segment Register):代码段寄存器,存在于CPU中,指向CPU当前执行代码在内存中的区域(定义了存放代码的存储器的起始地址)。
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多