任何组装大师都知道表示第一个 USB 驱动器的参数(寄存器dl )吗?
我正在学习一些 NASM 教程,并希望获得物理启动(我可以使用 qemu 获得一个干净的启动)。
这是从磁盘加载“内核”数据的代码部分:
loadkernel:
mov si, LMSG ;; 'Loading kernel',13,10,0
call prints ;; ex puts()
mov dl, 0x00 ;; The disk to load from
mov ah, 0x02 ;; Read operation
mov al, 0x01 ;; Sectors to read
mov ch, 0x00 ;; Track
mov cl, 0x02 ;; Sector
mov dh, 0x00 ;; Head
mov bx, 0x2000 ;; Buffer end
mov es, bx
mov bx, 0x0000 ;; Buffer start
int 0x13
jc loadkernel
mov ax, 0x2000
mov ds, ax
jmp 0x2000:0x00
如果有任何区别,我正在运行库存的戴尔 Inspiron 15 BIOS。
显然,对我来说正确的值是 0x80。
BIOS 加载硬盘驱动器并根据此答案从 0x80 开始标记它们。
出于某种原因,我的特定 BIOS 决定首先加载 USB 驱动器,这样我就可以从那里启动。