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 寄存器中的结果。进位标志未定义,因此您不应在调用此函数后测试任何失败!
我正在为 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 寄存器中的结果。进位标志未定义,因此您不应在调用此函数后测试任何失败!