2012-02-19 8 views
-3

これで、ユーザーが指定したドライブにファイルを削除して追加できるようにする、少し起動可能なアセンブリプログラムを作ろうとしています。唯一の問題は、アセンブリでドライブにアクセスする方法がわからないことです。誰かがこの情報をどこで見つけることができる方向に私を指摘できますか?情報は、Cプログラミング言語用の情報でもあります。ハードコードファイルにアセンブリコードでアクセスしますか?

私は、いくつかの起動可能なアセンブリコードタイプからデフォルトのWindows 7 hardriveにアクセスしようとしています。これはNTFSです。

+0

どのファイルシステムですか?各ファイルシステムには、ファイル情報を格納する方法が異なります。 –

+0

ファイルシステムに加えて、私たちはあなたが書いているOSもよく知っておく必要があります。 –

+0

Windows 7とext3だと思うデフォルトのファイルシステム –

答えて

8

x86 PCでブート可能なコードでディスクにアクセスするには、最も簡単で最も簡単なのはBIOS int 13h functionsです。これにより、個々のディスクセクタを読み書きできるようになります。

ハードドライブは通常パーティションに分割され、各パーティションの場所、サイズ、タイプを示すMaster Boot RecordMBR)もあります。 MBRは、HDDの最初のセクタです。

各パーティションには、いくつかのファイルシステムがあります。 NTFSでファイルを読み書きできるようにするには、NTFSドライバを実装する必要があります。

AFAIK、NTFSは開いていませんが、リバースエンジニアリングベースのNTFSドライバ(Linuxなど)があります。 NTFSドライバはアセンブリではなくC(++)で記述されるのが一般的です。なぜならNTFSは大きく複雑であり、Cはアセンブリよりも開発、メンテナンス、移植性の点で実用的です。私はアセンブリでFSコードを書くことをお勧めしません。

P.S. EFIシステム上のものは多少異なります。 MBRではなくGPTがあり、BIOS int 13hの代わりにEFI機能を使用してディスクにアクセスします。

P.P.S.私はあなたがCと少し組み立てたいが、NTFSの代わりにFAT1x/32を使いたい。それは実行可能です。 NTFSはより困難です。特に、十分な知識とスキルを持っていない場合は、単一の人にとっては不可能かもしれません。

+0

いい答えです。また、CDやUSBフラッシュに保存されているファイルにアクセスしたい場合は、「PC BIOS」を使用してハードディスクから起動するなどのいくつかの状況があり、独自の低レベルドライバを実装する必要があるかもしれません。 – Brendan

+0

@Brendan:あなたはそうかもしれませんが、CD/USBを起動して同じBIOS機能を使ってアクセスすると、FDD/HDDのように見えます。 –

関連する問題