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

时间:2012-06-24 01:44:22

标签: assembly x86 bootloader x86-16 bios

我在互联网上的某个地方读到,在跳到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:
顺便说一下。网络上的PC启动过程是否有详细的资源?特别是在将控件提供给引导加载程序之前BIOS的作用以及用于与之通信的标准代码(如“驱动器数”)。我希望编写自己的引导加载程序,我发现的所有内容都过于模糊,技术性不足以告知我的引导加载程序开始运行时计算机的确切状态。

1 个答案:

答案 0 :(得分:3)

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