【问题标题】:Call Int 13h in a ISR在 ISR 中调用 Int 13h
【发布时间】:2011-11-17 21:24:38
【问题描述】:

我已经在实模式下通过汇编为 int 9h 编写了 ISR。 在这个 ISR 中,我调用 INT 13h, AH=0x02 来在硬盘上写入一些数据。但是数据不会写入硬盘。同样 int 13h, ah=0x02 也不起作用(从硬盘读取数据)。 调用 int 13h 后,进位标志为 On,但 AH 和 AL 为零。 当我在 ISR 之外使用此代码时,它就起作用了! 为什么 ISR 中的 INT13h 不工作,而其他中断,例如 INT10h 工作正常?

【问题讨论】:

  • 我正在编写一个引导加载程序。我的代码在任何操作系统之前运行。
  • 请发布您的 ISR 代码,以便我们查看您的尝试。
  • Int 9 是一个硬件中断,你必须小心你做什么。我不希望 int13 可重入。否则这是猜测,没有什么可看的。

标签: assembly keyboard-hook interrupt-handling real-mode isr


【解决方案1】:

简单的答案是,如果没有硬盘驱动器硬件中断 IRQ 5 -int 0Dhint 13h 将无法成功完成,直到在键盘硬件中断 IRQ 1 -int 9h 结束时确认 PIC 才会发生。

令人高兴的答案是使用int 16h ah=0 等待按键要简单得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-18
    • 2013-02-01
    • 2013-11-02
    • 2020-01-04
    • 1970-01-01
    • 2013-01-29
    • 2012-09-15
    • 1970-01-01
    相关资源
    最近更新 更多