启动过程
加电的一瞬间,, cs:ip被强制初始化为 0xF000:0xFFF0 , 此处为BIOS入口
BIOS开始运行此处的指令为
- jmp far f000:e05b
运行后进入到BIOS的主体
3.BIOS的主要任务是检测、初始化硬件
进入BIOS后就立马开始检测内存、显卡等外设信息, 当检测通过,并初始化硬件完后,开始在内存0x000~0x3FF处建立数据结构, 中断向量表IVT并填写中断例程
- 初始化硬件:硬件自己提供一些初始化的功能调用, BIOS直接调用即可
- 建立终端向量表: 这样就可以通过 int 中断号 实现对硬件的调用
4.BIOS的最后一项工作就是检测启动盘0盘0道1扇区是否符合条件
如果扇区末尾的两个是0x55, 0xa,就将其加载到物理地址0x7c00, 然后跳转到此地址
此时,BIOS的任务完成cs:ip 为 0x7c00
attention: 此处即为 硬件 和 软件的分界, 前面是组成的东西,后面才是操作系统该管的地方
在硬件上运行代码
此时没有操作系统,操作系统的工作就是管理软硬件,我先试试在没有操作管的情况下如何使用硬件,在硬件上直接运行程序
- 我们的任务是将我们的程序放到硬盘主引导扇区中,指定将程序加载到内存的0x7c00处, 然后执行我们的程序
很多东西都是依靠伪指令, 而伪指令是靠汇编器实现的, 所有编写和C语言类似