【发布时间】:2012-12-20 10:42:45
【问题描述】:
我熟悉等待键盘输入的 INT 16h,但我正在开发一个游戏,我希望有一个游戏循环,它可以在屏幕上设置动画,并且每当有键盘敲击时, 8086 应该转到我的中断处理程序并告诉我按下了哪个键来相应地更新我的数据。
我怎么能这样做?
【问题讨论】:
我熟悉等待键盘输入的 INT 16h,但我正在开发一个游戏,我希望有一个游戏循环,它可以在屏幕上设置动画,并且每当有键盘敲击时, 8086 应该转到我的中断处理程序并告诉我按下了哪个键来相应地更新我的数据。
我怎么能这样做?
【问题讨论】:
在调用 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).
【讨论】:
在 MS-DOS 中,您可以编写自己的自定义键盘中断处理程序,并在自定义键盘中断处理程序代码中,例如:
设置一个标志来通知主循环/绘图循环有一个按键被按下,连同按键的扫描码,或者...
根据按键的扫描码修改你自定义中断处理程序中主循环/绘制循环的代码。
有关编写自定义 [keyboard] 中断处理程序的更多信息,请参阅例如:
【讨论】: