如何使用 BIOS 中断设置启动分区

How to set boot partition using BIOS interrupts

Windows 允许您设置一个特定的磁盘分区作为引导。设置引导分区允许我 运行 一个我在下次打开计算机时创建的自定义引导加载程序。但是,在我可以从引导加载程序将引导分区设置回 Window 的引导分区之前,我实际上无法执行此操作。什么是允许我从引导加载程序(实模式 x86 程序)设置引导分区的 BIOS 中断(或其他方法)?

没有 BIOS 中断可以做到这一点。您要做的是为应该引导的分区设置 活动分区标志 。此标志存储在每个分区 table 条目的第一个字节中。如果该字节为 80h,则分区处于活动状态,如果为 00h,则分区不处于活动状态。请注意,最多应有一个分区处于活动状态。这是您需要做的:

  • 从磁盘加载 MBR 或假设它位于 0000:0600,这是 MBR 通常重新定位自身的位置。
  • 检查偏移量 01beh、01ceh、01deh 和 01eeh 处的字节以查看哪个分区处于活动状态
  • 将所有这些字节设置为 00h,除了最多一个
  • 将 MBR 写回磁盘。由于 MBR 始终是磁盘的第一个扇区,您可以安全地使用 Int 13h/AH=03h 来简化您的代码。