gpt4 book ai didi

c - AH=2的BIOS INT 13H每次只能读取72个扇区。为什么?

转载 作者:太空狗 更新时间:2023-10-29 17:10:54 27 4
gpt4 key购买 nike

我正在使用 Bochs 2.4.5 编写引导扇区代码。我使用 INT 13H 从软盘读取扇区。但我发现如果要读取的扇区计数 > 72,则 INT13 将失败。返回码为 AH=1。下面是代码,这里是 INT13 .返回码为 AH=1。

为什么 INT 13H 不能读取超过 72 个扇区?

   xorb %ah, %ah
xorb %dl, %dl
int $0x13 # reset the floppy

movw $0x8000, %ax
movw %ax,%es
movw $0, %bx # ES:BX is the buffer
movb $0x02, %ah
movb $73, %al # how many sectors to read. 72 is ok, but >=73 is wrong.
movb $0, %ch
movb $1, %cl
movb $0, %dh
movb $0, %dl

int $0x13

感谢您的帮助。

更新

正在关注 Matthew Slattery 的指令,找到了对应的代码。我把它列在这里是为了和我一样困惑的人。完整代码位于 here .

7220       if ((drive > 1) || (head > 1) || (sector == 0) ||
7221 (num_sectors == 0) || (num_sectors > 72)) {
7222 BX_INFO("int13_diskette: read/write/verify: parameter out of range\n");
7223 SET_AH(1);
7224 set_diskette_ret_status(1);
7225 SET_AL(0); // no sectors read
7226 SET_CF(); // error occurred
7227 return;
7228 }

最佳答案

您正在使用 Bochs,因此可以在 Bochs BIOS source 中找到答案: BIOS 正在对扇区数执行显式范围检查,如果大于 72(或等于 0)则拒绝检查。

关于c - AH=2的BIOS INT 13H每次只能读取72个扇区。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com