1

我一直在试图弄清楚如何在汇编中从硬盘驱动器中打开文件。我想在不使用 DOS 中断或任何需要操作系统的情况下执行此操作,因为我正在尝试构建一个简单的操作系统。当然,我对 BIOS 中断很好。

4

2 回答 2

2

操作系统提供了两组您必须模拟才能访问文件的功能:

  • 一个设备驱动程序,可以读取和写入原始数据(在你的情况下,到/从磁盘)
  • 理解文件结构和抽象如何读取部分的设施库;这会调用驱动程序来执行实际的 I/O。

您也许可以调用 BIOS 调用来模拟坏的设备驱动程序;通常真正的驱动程序很复杂,以确保效率和良好的错误恢复,而 BIOS 例程根本不这样做。

但是你会发现自己很难做的是模拟“文件访问”库。现代文件系统以相当复杂的方式将文件存储在磁盘上,以最大限度地减少访问时间,同时允许文件分布在大部分磁盘上。

如果您坚持这样做,您最好阅读您打算访问的任何文件系统(Linux?Windows?)的文件系统结构。准备好发现这些文档相对于真实操作系统是不完整的和过时的。

于 2012-06-14T02:43:03.880 回答
1

以下是仅使用 BIOS 访问 FAT12/16/32 的方法。_boot\BOOT12.ASM并且_boot\BOOT16.ASM分别是 FAT12 和 FAT16 引导扇区,可以从引导磁盘的根目录加载和运行名为 .COM 或 .EXE 的标准程序STARTUP.BIN。这些引导扇区是为 NASM 编写的。在stdio\FAT.c.

于 2012-06-14T05:56:16.287 回答