2

我熟悉等待键盘输入的 INT 16h,但我正在开发一个游戏,我希望有一个游戏循环,可以在屏幕上设置动画,并且只要有键盘敲击,8086 就应该去到我的中断处理程序并告诉我按下了哪个键来相应地更新我的数据。

我怎么能这样做?

4

2 回答 2

4

在调用 INT 16 时,您还可以在 AH 中使用 1 而不是 0 轮询输入。

INT 16h / AH = 01h - check for keystroke in the keyboard buffer.

    return:

        ZF = 1 if keystroke is not available.
        ZF = 0 if keystroke available.
        AH = BIOS scan code.
        AL = ASCII character.
        (if a keystroke is present, it is not removed from the keyboard buffer). 

(资源。)

于 2012-12-20T10:46:09.597 回答
2

在 MS-DOS 中,您可以编写自己的自定义键盘中断处理程序,在自定义键盘中断处理程序代码中,您可以,例如:

  1. 设置一个标志以通知主循环/绘图循环已按下某个键,以及该键的扫描码,或者...

  2. 根据按键的扫描码修改你自定义的中断处理程序中的主循环/绘制循环的代码。

有关编写自定义 [keyboard] 中断处理程序的更多信息,请参见例如:

于 2012-12-20T12:39:50.423 回答