我正在为自己编写一个引导程序和内核,引导程序和内核都将刻录在 CD-R 上,并将用作 CD-live。它不是 linux CD-Live 或其他东西,完全是我自己的引导程序和内核。我不想使用其他的加载程序(即 GRUB),所以请不要建议我使用它们。
这是我的问题:在我的引导加载程序 ASM 代码中,我想将我的内核和内核条目从 CD-ROM(而不是从硬盘或软盘)加载到 RAM 中,并假设我们知道内核的确切位置在CD-ROM(扇区号)。据我所知,我必须使用 int 0x13, AH = 02h 将扇区从驱动器读取到 RAM 中。为了使用这个中断服务,我必须设置几个寄存器,我将在下面列出: 参数:AH 02h AL Sectors To Read Count CX Track + Sector / See remark DH Head DL Drive ES:BX Buffer Address Pointer
我的问题是关于 DL 和 DH。为了指向要读取的第一个硬盘驱动器,我们可以将其设置为 80h,或者对于软盘,我们可以将其设置为 00h。但是我想从 CD-ROM 中读取,但我不知道我必须为 DH 和 DL 使用什么值。
为了从 CD-ROM 读取几个扇区到 RAM,它是一个正确的中断(int 0x13)吗?如果是,我应该为 DH 和 DL 赋予什么价值。
问候, 波利亚。