我的引导加载程序代码有问题。我尝试使用 INT 13h AH=42h: "Extended Read Sectors From Drive" BIOS 3.0 版 (EDD-3.0) 和 BOCHS 将我的内核代码从硬盘映像复制到实模式下 0x100000 以上的内存位置。
当我使用 INT13 AH=41h BX=55AAh 函数检查是否支持 EDD-3.0 时,我得到了肯定的结果。我正在使用 BOCHS 2.6.8。
Disk Address Packet:
db 0x1C ; size of packet (I tried 18h as well)
db 0x00 ; reserved
db 0x04 ; # blocks to transfer
db 0x00 ; reserved
dw 0xFFFF ; offset
dw 0xFFFF ; segment
dq 0x1 ; starting absolute block number (LBA)
dq 0x100000; 64-bit flat target address
我使用这个 DAP。BOCHS 所做的是将 4 个块从磁盘复制到 FFFF:FFFF mod 100000h = FFEFh。我究竟做错了什么?我使用 Ralf Brown 的中断列表 ( http://www.ctyme.com/intr/rb-0708.htm ) 作为参考。