在实模式下列出 BIOS 驱动器号的任何方法

Any way to list the BIOS drive numbers in real mode

有什么方法可以在实模式下列出 BIOS 驱动器索引(例如 0x80、0x81 ...)?

我没有找到任何负责列出驱动器号的中断!!

我不知道有什么方法可以 'list' 实模式下可用的 bios 驱动器。

但是,有些事情可能会有所帮助:

  • 硬盘数量存储在BIOS Data Area中的40:75处。虽然我不 'know' 驱动器编号是按顺序分配的,但我希望它们是。如果是这样,硬盘驱动器列表将从 0x80 到 0x80 + (40:75 - 1) 运行(尽管可以想象可能有 0 个硬盘驱动器,因此 0x80 也可能无效)。
  • 还有int 21h function 0E(select default drive), which returns "the highest drive present." Without checking, I'm guessing this is related to LastDrive,不过可能有用。
  • 最后是 int 13h function 08 (read drive parameters) 并递增驱动器编号,直到出现错误。我很确定 DOS 最多可以有 26 个驱动器(包括硬盘、CD、软盘等),所以这个循环不会 运行 很长。

请注意,对于 bios 功能,硬盘通常设置最高有效位。所以硬盘驱动器 #0 被称为 0x80,#1 是 0x81,等等。软盘驱动器没有设置此位,因此从 0 开始计数。

USB 驱动器出现时,我已经停止使用 DOS,所以我不确定它们是硬盘驱动器还是软盘。由于它们是可移动的,我不希望它们被列为硬盘驱动器,但这可能取决于您使用的驱动程序。