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

时间:2017-08-26 01:08:12

标签: assembly x86 nasm bios real-mode

有没有办法在实模式下列出BIOS驱动器索引(例如0x80,0x81 ......)?

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

1 个答案:

答案 0 :(得分:5)

我不知道有什么办法列出'可用的BIOS在实模式下驱动。

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

  • 硬盘数量存储在BIOS Data Area40:75。虽然我不知道'驱动器号码按顺序分配,我希望它们是。如果是这样,硬盘驱动器列表将从0x80运行到0x80 +(40:75-1)(尽管可能有0个硬盘驱动器,因此0x80可能也无效)。
  • 还有int 21h function 0E (select default drive),它会返回"最高的驱动器。"如果不进行检查,我猜这与LastDrive有关,但它可能有用。
  • 最后有int 13h function 08 (read drive parameters)并递增驱动器号,直到出现错误。我非常确定DOS最多可以驱动26个驱动器(包括硬盘,CD,软盘等),所以这个循环不会运行很长时间。

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

当USB驱动器出现时,我已经停止使用DOS,因此我不确定它们是否显示为硬盘驱动器或软盘。由于它们是可移动的,我不希望它们被列为硬盘驱动器,但它可能取决于您使用的驱动程序。