Я использую 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
Спасибо за любую помощь.
Обновление
Следуя инструкции Мэтью Слэттери , я нашел соответствующий код.Я перечислил это здесь для других, столь же смущенных как я.Полный код находится здесь .
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 }