PC启动:dl注册和驱动器号

Kev*_*RGT 7 x86 assembly bios bootloader x86-16

我在互联网的某个地方读到,在跳到0x7c00之前,BIOS加载到启动设备的"驱动器号"%dl.但这个"驱动器号码"是什么?连接到计算机的每台设备都由BIOS分配了一个号码?如果是这样,我怎么知道分配给哪个设备的号码?

读取我在%dl设置了位0x80和0x70时发现的GRUB源代码,它用0x80覆盖整个寄存器.这是为什么?这是代码:

jmp 3f      /* grub-setup may overwrite this jump */
testb $0x80, %dl
jz 2f
3:
/* Ignore %dl different from 0-0x0f and 0x80-0x8f.  */
testb $0x70, %dl
jz 1f
2:     
movb $0x80, %dl
1:
Run Code Online (Sandbox Code Playgroud)

顺便说说.网络上的PC启动过程是否有详细的资源?特别是在将控件提供给引导加载程序之前BIOS的作用以及用于与之通信的标准代码(如"驱动器数").我希望编写自己的引导加载程序,我发现的所有内容都过于模糊,技术性不足以告知我的引导加载程序开始运行时计算机的确切状态.

Ale*_*nze 4

BIOS int 13h 函数接受驱动器号。它应该是DLBIOS 能够理解的那种驱动器号,因为它本身使用 int 13h 来加载引导扇区。

  • 如果从那里启动,它应该是 0x80。 (3认同)