Assembly 要使用哪种寻址模式访问磁盘?

Assembly 要使用哪种寻址模式访问磁盘?,assembly,x86,kernel,bootloader,disk-access,Assembly,X86,Kernel,Bootloader,Disk Access,我正在学习操作系统的开发,我在初级阶段。我创建了一个简单的引导加载程序。要访问磁盘上的其他文件(如HDD或USB驱动器),我应该使用哪种寻址模式?(CHS或LBA或INT 13h扩展名) 以下哪种寻址模式非常有效(也就是说,可以用于大多数驱动器) 首先,INT13h扩展是API的扩展,而不是HD寻址方法 您必须决定是使用BIOS还是直接硬件访问。 使用BIOS是不切实际的,因为它提供了16位接口。然而,它很容易使用。在这种情况下,您将使用LBA作为寻址方法 LBA与CHS的关系就像弧度与度的关

我正在学习操作系统的开发,我在初级阶段。我创建了一个简单的引导加载程序。要访问磁盘上的其他文件(如HDD或USB驱动器),我应该使用哪种寻址模式?(CHS或LBA或INT 13h扩展名)

以下哪种寻址模式非常有效(也就是说,可以用于大多数驱动器)


首先,INT13h扩展是API的扩展,而不是HD寻址方法


您必须决定是使用BIOS还是直接硬件访问。
使用BIOS是不切实际的,因为它提供了16位接口。然而,它很容易使用。在这种情况下,您将使用LBA作为寻址方法

LBA与CHS的关系就像弧度与度的关系一样。 这是一个更自然的单元,它打破了504MiB和7.9GiB的限制。 有。CHS是一种历史文物,早于HDD在公共市场上的普及

如果要使用直接硬件访问,则只能使用LBA。在撰写本文时,当前不推荐的CHS:

在ATA/ATAPI-5及更早的标准中,定义了CHS翻译。此翻译已过时,但如果 应按照ATA/ATAPI-5的规定实施

然而,通过直接硬件访问访问磁盘并非指日可待,您至少需要一个基本的PCI/PCIe或USB总线驱动程序来访问磁盘控制器,一个主机控制器驱动程序(对于PCI/PCIe设备,可以是)来向磁盘发出命令,以及实现这些命令使用的协议的驱动程序(例如,等等)


因此,我相信您将使用INT13h扩展,在这种情况下,最好的寻址方法是BIOS提供的64位LBA。

哪种寻址模式?
INT13h
BIOS功能对归档系统一无所知,只知道原始磁盘I/O。您正在编写一个必须实现归档系统的操作系统。那么,我应该使用什么?如果您是使用BIOS读取真正的软盘介质大多数控制器不支持LBA(通过扩展BIOS服务)在软盘设备上。我不会说完全没有理由。我在一个活动系统中仍然有一个非USB软盘驱动器,它不支持软盘上的LBA。从技术上讲,如果你知道你的代码将在标准软盘介质上运行,那么使用CHS可能是一个合理的选择。好的观点@MichaelPetch!谢谢,我更新了答案这是你的见解。