Позвоните Int 13h в ISR - PullRequest
       27

Позвоните Int 13h в ISR

2 голосов
/ 15 сентября 2011

Я написал ISR для int 9h при сборке в реальном режиме.В этом ISR я вызываю INT 13h, AH = 0x02 для записи некоторых данных на жесткий диск.Но данные не записываются на жесткий диск.Также int 13h, ах = 0x02 тоже не работает (чтение данных с жесткого диска).после вызова int 13h флаг переноса включен, но AH и AL равны нулю.Когда я использую этот код из ISR, это работает!Почему INT13h в ISR не работает, а другие прерывания, например INT10h, работают правильно?

1 Ответ

2 голосов
/ 24 сентября 2011

Простой ответ заключается в том, что int 13h не будет успешно завершено без аппаратного прерывания аппаратного прерывания IRQ 5 - int 0Dh, которое не произойдет, пока PIC не будет подтвержден в конце аппаратного прерывания аппаратного прерывания IRQ 1 - int 9h.

Счастливый ответ заключается в том, что гораздо проще использовать int 16h ah=0 для ожидания нажатия клавиши.

...