任何组装大师都知道表示第一个 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 驱动器,这样我就可以从那里启动。