在bootloader中使用INT 13H,02H BIOS中断来读硬盘,其中DL为要读的硬盘的序号,我看到网上所有的文章基本上都是80H,说明bootloader所在的硬盘为第一个硬盘,但我将bootloader所在的硬盘放在IDE2上,IDE1上为一空白的盘,将BIOS设置成IDE2启动,结果用DL=80H可以读出正确的数据,说明BIOS已经自动将bootloader所在的硬盘设置为第一个硬盘。
我问了一些网友,他们认为现在支持BBS的BIOS会自动将bootloader所在硬盘的序号设置成80H,我想知道如果是在不支持BBS的BIOS中运行,如果bootloader所在硬盘的序号不是80H的情况下,bootloader应该如何得到自己所在硬盘的序号,谢谢!
------解决方案--------------------------------------------------------
从硬盘启动, 必须是 80h 盘, 这个是个约定吧, 不可能从 81h 甚至是 82h 硬盘启动的. 一般明显的标记就是分区的可引导标记就是这个 80h 字节.
要注意的是, 80h 盘, 这个是逻辑上的首硬盘, 和实际物理连接上的第一个硬盘没用必然的对应关系. bios 的硬盘管理部分, 也是出于用户切换可引导盘方面上的需要, 提供了个物理对逻辑的映射功能, 即在 bios 设置中的可用选择是从第几硬盘启动的功能. 选定了的硬盘, 不管它是连接在那个口, 什么状态, 都会被映射为 80h 逻辑盘的. 其它的硬盘会顺延.
------解决方案--------------------------------------------------------
没错。
80、81、82等等只是BIOS标识硬盘顺序的记号,
从哪个硬盘引导,哪个就是80(你用INT 13h去读写第一个硬盘就是它)。