gpt4 book ai didi

assembly - Hook Int 09h 中断

转载 作者:行者123 更新时间:2023-12-02 04:02:31 25 4
gpt4 key购买 nike

我在 Hook int 09h 时遇到问题我已经将指针更改为我的新 Isr,如果我在 Windows 上调试,每次按下键都会触发中断。但在 VMWare 中似乎只触发一次,不再触发。我已经在 DOS 6.22 中进行了测试,结果完全一样。

我的代码如下所示:

MyIsr:
pusha
pushf
;tell PIC that interrupt has finished
mov al,0x20
out 0x20,al
popf
popa
iret

如果我使用 USB 键盘,我可以发送与 Ps/2 相同的命令吗?

最佳答案

这里可能存在许多问题,因为您尚未发布您正在编写的代码的完整 View 。您能否准确解释一下您要完成的工作?

如果 ISR 被调用但未处理,您将无法执行任何操作,因此请记住这一点。您的问题可能与您在中断向量表中安装 ISR 的方式有关。

  • 在实模式下,您可以使用 INT 21h, AH=25h
  • 在保护模式下,在 DJGPP 下,您需要使用 DPMI 函数(使用 INT 21H 函数或使用 C 函数。见 DPMI documentation
  • 在 PM 中运行时,也需要为 ISR 锁定内存,因为内存可能会被“分页”(ISR 需要这个,因为我们并不真正“知道”它何时会运行)。

  • 无论如何,您的 ISR 应该看起来更像以下内容:
    newInt9:

    enter 0,0
    push eax

    in al, 60h
    mov [raw_key], al

    mov al, 20h
    out 20h, al

    pop eax
    leave
    iret

    ;endproc

    关于assembly - Hook Int 09h 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566821/

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