在 ISR 中调用 Int 13h
我已经在实模式下通过汇编编写了 int 9h 的 ISR。 在此 ISR 中,我调用 INT 13h, AH=0x02 以在硬盘上写入一些数据。但数据不会写入硬盘。另外 int 13h, ah=0x02 也不起作用(从硬盘读取数据)。 调用 int 13h 后,进位标志为 On,但 AH 和 AL 为零。 当我在 ISR 之外使用这段代码时,它起作用了! 为什么 ISR 中的 INT13h 不工作,但其他中断,例如 INT10h 工作正常?
I have written a ISR for int 9h by assembly in Real Mode.
In this ISR, I call INT 13h, AH=0x02 for writing some data on Hard Disk. But data aren't written on Hard Disk. Also int 13h, ah=0x02 doesn't work too (Read data from Hard Disk).
after call int 13h, Carry Flag is On, but AH and AL are zero.
When I use this code out of ISR, it's work!
Why INT13h in a ISR doesn't work, but other interrupt, for example INT10h work correctly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简单的答案是,如果没有硬盘驱动器硬件中断 IRQ 5 -
int 0Dh
,int 13h
将无法成功完成,直到键盘末尾确认 PIC 后才会发生该中断硬件中断 IRQ 1 -int 9h
。令人高兴的答案是,使用 int 16h ah=0 等待按键要简单得多。
The simple answer is that
int 13h
will not complete successfully without the hard drive hardware interrupt IRQ 5 -int 0Dh
which will not occur until the PIC is acknowleged at the end of keyboard hardware interrupt IRQ 1 -int 9h
.The happy answer is that it is much simpler to use
int 16h ah=0
to wait for a keypress.