我是靠谱客的博主 拉长睫毛,最近开发中收集的这篇文章主要介绍BIOS的磁盘读取,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在真正的操作系统引导过程中,由于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的磁盘读取所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部