在实模式下列出 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,所以我不确定它们是硬盘驱动器还是软盘。由于它们是可移动的,我不希望它们被列为硬盘驱动器,但这可能取决于您使用的驱动程序。
有什么方法可以在实模式下列出 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,所以我不确定它们是硬盘驱动器还是软盘。由于它们是可移动的,我不希望它们被列为硬盘驱动器,但这可能取决于您使用的驱动程序。