使用汇编代码访问硬盘驱动器文件?

问题描述:

所以即时尝试制作一个小启动能够汇编程序,让用户删除和添加文件到指定的驱动器。唯一的问题是,我不知道如何访问与装配驱动器。请问有人能指出我在哪里可以找到这些信息的方向?这些信息也可能用于c编程语言。使用汇编代码访问硬盘驱动器文件?

我会试图从某些可启动汇编代码类型访问默认的Windows 7 hardrive。这是NTFS。

+0

什么文件系统?每个文件系统都有不同的存储文件信息的方式。 – 2012-02-19 05:05:37

+0

除了文件系统外,我们还需要知道您正在编写的操作系统。 – 2012-02-19 05:22:50

+0

Windows 7和ext3的默认文件系统我认为是 – 2012-02-19 20:31:12

要访问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系统上有些不同。有GPT而不是MBR,您使用EFI工具访问磁盘而不是BIOS int 13h。

P.P.S.我已经完成了你想要的C和一些程序集,但用FAT1x/32而不是NTFS。这是可行的。 NTFS更难。对一个人来说可能是不可能的,特别是如果他们没有足够的知识和技能。

+0

好的答案!另外请注意,在某些情况下(例如,使用“PC BIOS”从硬盘启动,您需要访问存储在CD或USB闪存中的文件),您可能必须实现自己的低级驱动程序。 – Brendan 2012-02-21 06:44:04

+0

@Brendan:您可以,但是当您启动CD/USB时,您可以使用相同的BIOS功能访问它们,BIOS使它们看起来像FDD/HDD。 – 2012-02-21 07:45:00