概述
在真正的操作系统引导过程中,由于BIOS的限制,只能从启动磁盘读取512byte的内容到内存中。
这就要求咱们不得不在这512byte中实现加载操作系统内核到内存的代码。
INT 13 是BIOS提供给咱们的读写磁盘的中断服务号。
首先看BIOS在内存中的位置排列:
最初的1M内存,是BIOS使用的。
0x00000 -- 0x003ff: 中断向量表
0x00400 -- 0x004ff: BIOS数据区
0x00500 -- 0x07bff: 自由内存区
0x07c00 -- 0x07dff: 引导程序加载区
0x07e00 -- 0x9ffff: 自由内存区
0xA0000 -- 0xBFFFF: 显示内存区
0xc0000 -- 0xfffff: BIOS中断处理代码
由此可见,有几个选择:在加载引导程序后,可通过引导程序将系统代码加载到:
0x00500 -- 0x07bff or
0x07e00 -- 0x9ffff。 后者的空间更大些。
下面来具体看一下BIOS的磁盘读写中断服务: INT 13,其参数寄存器内容为
AH: function ID, 2--READ
DL: driver ID
CH: 磁头号
CL: sector ID
AL: How many sector will be read
By the way, the aim position is ES:BX. So we need set the value before we start the interrupt.
最后
以上就是拉长睫毛为你收集整理的BIOS的磁盘读取的全部内容,希望文章能够帮你解决BIOS的磁盘读取所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复