INT 13h,获取最后一个操作的状态

INT 13h, get status of last op

我正在为 16 位实模式的 BIOS 编写引导加载程序,使用 qemu 作为我的模拟器。

我有一些代码无法从我的 HD 中读取。没关系,但真正困扰我的是当我尝试使用 "Get Status of Last Drive Operation".

从该操作获取状态代码时

根据this wikipedia resource,我可以简单地将AH设置为1,并将DL设置为我想要的驱动器(我已验证为0x80)。然后,当我调用 int 13h 时,AL 中应该有状态代码。

但是,当我这样做时,进位标志被设置,表明我尝试读取状态本身失败了。

其他指定错误的驱动器,我不明白它怎么可能会失败。

所以我的问题是,这个命令(INT 13h,AH 01h)可能会以何种方式失败

这是我的代码:

get_status:
    mov ah, 0x01    ; status fxn
    mov dl, 0x80    ; 0x80 is our drive
    int 0x13        ; call fxn

    jc print_status_failure
    jmp $

print_status_failure:
    mov ax, FAIL_MSG
    call print_string
    jmp $

Then, when I invoke int 13h, AL should have the status code in it.

BIOS 函数 01h 仅用于 INT 13h returns AH 寄存器中的结果。进位标志未定义,因此您不应在调用此函数后测试任何失败