アセンブリでハード ドライブからファイルを開く方法を理解しようとしています。シンプルなOSを構築しようとしているので、DOS割り込みやオペレーティングシステムを必要とするものを使用せずにこれを行いたいです。もちろん、BIOS 割り込みには問題ありません。
2 に答える
OS は、ファイルにアクセスするためにエミュレートする必要がある 2 つの機能セットを提供します。
- 生データを読み書きできるデバイスドライバー(あなたの場合、ディスクとの間で)
- ファイルの構造を理解し、部分の読み方を抽象的に理解する機能のライブラリ。これにより、実際の I/O を実行するためにドライバーが呼び出されます。
BIOS 呼び出しを呼び出して、不良デバイス ドライバーをシミュレートできる場合があります。通常、実際のドライバーは、効率と優れたエラー回復を確保するために複雑ですが、BIOS ルーチンはこれを行いません。
しかし、自分で行うのが難しいのは、「ファイル アクセス」ライブラリをエミュレートすることです。最新のファイル システムは、かなり複雑な方法でファイルをディスクに格納し、アクセス時間を最小限に抑えながら、ファイルがほとんどのディスクに分散されるようにします。
これを行うことを主張する場合は、アクセスしようとしているファイルシステム (Linux? Windows?) のファイルシステム構造をよく読んでください。これらのドキュメントは不完全であり、実際の OS に関しては古くなっていることに注意してください。
BIOS のみを使用して FAT12/16/32 にアクセスする方法を次に示します。_boot\BOOT12.ASM
および_boot\BOOT16.ASM
は、それぞれ FAT12 および FAT16 ブートセクタであり、ブート ディスクのルートから .COM または .EXE という名前の標準プログラムをロードして実行できますSTARTUP.BIN
。これらのブートセクタは NASM 用に書かれています。FAT12/16/32 ファイル I/O の C 参照コードもstdio\FAT.c
.