有什么方法可以在实模式下列出BIOS驱动器索引(例如0x80、0x81 ...)?
我没有找到负责列出驱动器号的任何中断!!
我不知道以任何方式“列出”实模式下可用的BIOS驱动器。
但是,有些事情可能会有所帮助:
40:75
在的BIOS数据区。虽然我不“知道”驱动器号是按顺序分配的,但我希望它们是按顺序分配的。如果是这样,硬盘驱动器的列表将在0x80到0x80 +(40:75-1)之间运行(尽管可以想象有0个硬盘驱动器,所以0x80也可能无效)。int 21h function 0E
(选择默认驱动器),它返回“存在的最高驱动器”。如果不进行检查,我猜测这与LastDrive有关,但它可能很有用。int 13h function 08
(读取驱动器参数)并递增驱动器号,直到出现错误。我很确定DOS最多可以使用26个驱动器(包括硬盘,CD,软盘等),因此此循环不会运行很长时间。请注意,对于BIOS功能,硬盘驱动器通常具有最高有效位设置。因此,硬盘#0称为0x80,#1称为0x81,依此类推。软盘驱动器未设置此位,因此从0开始计数。
当USB驱动器问世时,我已经停止使用DOS,因此我不确定它们是作为硬盘驱动器还是软盘出现。由于它们是可移动的,因此我不希望它们被列为硬盘驱动器,但这可能取决于你使用的驱动程序。
如果从USB引导,那么几乎可以肯定是通过BIOS的软盘仿真模式来完成的。如果从其他驱动器启动并在DOS下运行,那么它将完全取决于驱动程序。
DOS功能0Eh处理逻辑驱动器,其中许多驱动器可能位于同一物理驱动器上。BIOS驱动器号均表示物理驱动器。
在我真正的DOS计算机上,DOS和BIOS都将USB驱动器视为硬盘。