到目前为止,我使用的是 IDE 硬盘,并且能够使用 BIOS 调用甚至 LBA 28 直接硬件访问使用 PIO 模式进行访问,而无需任何操作系统调用。现在我购买了新的 SATA 500 GB 硬盘,它是我唯一连接到 SATA 1 端口的硬盘。我的 BIOS 将其显示为 3rd Master Hard Disk 并且主要和次要主机不存在。现在我已经在第一个运行正常的分区上安装了 MS DOS 5.0。但是现在我只能使用 DOS INT 25h 来读取从逻辑扇区 0 开始的硬盘扇区。这意味着我无法读取任何隐藏扇区,包括主引导记录。当我使用 BIOS int 13H 调用使用驱动器 80H 读取硬盘时,它不会返回任何错误,但什么也不读取。如果我使用驱动器 83H,它会给出驱动器不存在错误。如果我使用 DOS 功能,我可以将我的硬盘作为驱动器 c(驱动器 2)访问,但不能用于读取 MBR。如果我要为 int 13H 使用 MS 扩展,我必须知道 BIOS 驱动器号。谁能告诉我如何找到驱动器号。第三主硬盘?或者我必须使用哪个端口在兼容模式下使用 LBA 40(01f0 不起作用)访问硬盘?
问问题
716 次
1 回答
0
Ralf Brown 的中断列表建议挂钩 INT 13h 并调用 INT 25h 以查看 MS-DOS 使用的 BIOS 驱动器号:
检测逻辑驱动器号实际分配给物理 BIOS 驱动器单元的方法(例如检测引导驱动器)是临时挂载一个 INT 13h 处理程序,记录用于任何 INT 13/AH=02h 读取操作的 DL 驱动器单元并放弃任何访问实际软盘驱动器的尝试。然后为所有适当的 DOS 驱动器调用 INT 25h 并观察 INT 13h 拦截器记录的结果。
于 2014-09-12T21:58:51.307 回答