您的位置:首页 > 移动开发 > IOS开发

BIOS的磁盘读取

2010-07-10 11:00 218 查看
在真正的操作系统引导过程中,由于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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: