以独立于OS的汇编语言打开文件

时间:2012-06-13 23:38:16

标签: assembly file-io operating-system x86 osdev

我一直在试图弄清楚如何在程序集中从硬盘驱动器中打开文件。我想这样做而不使用DOS中断或任何需要操作系统的东西,因为我正在尝试构建一个简单的操作系统。当然,我对BIOS中断很好。

2 个答案:

答案 0 :(得分:2)

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

  • 设备驱动程序,可以读取和写入原始数据(在您的情况下,与磁盘之间的连接)
  • 一个能够理解文件结构和抽象的工具库 如何阅读部分;这会调用驱动程序来执行实际的I / O.

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

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

如果你坚持这样做,你最好阅读你打算访问的任何文件系统(Linux?Windows?)的文件系统结构。准备好发现那些文件不完整且与实际操作系统有关。

答案 1 :(得分:1)

Here's如何仅使用BIOS访问FAT12 / 16/32。 _boot\BOOT12.ASM_boot\BOOT16.ASM分别是FAT12和FAT16引导程序,可以从引导磁盘的根目录加载和运行名为STARTUP.BIN的标准.COM或.EXE程序。这些bootsector是为NASM编写的。 stdio\FAT.c中还有FAT12 / 16/32文件I / O的C参考代码。