gpt4 book ai didi

assembly - 同时获得两把 key - 组装 8086

转载 作者:行者123 更新时间:2023-12-03 06:39:26 26 4
gpt4 key购买 nike

我正在组装一款由两名玩家参与的游戏。因此,我使用以下代码来获取当前按下的键:

mov ah, 01h
int 16h

此代码为我提供了扫描代码和按键的 Ascii 代码问题是两个玩家可能同时按下 2 个不同的键。如何同时接收两个 key ?

我尝试了几种方法来实现这一目标。我尝试使用 in al,060h 直接获取输入。我也尝试了 int 9h 但仍然不起作用。

最佳答案

如果没记错的话,通过谷歌搜索来刷新我对数字的了解......

BIOS 不提供您想要的东西。它管理文本字符的输入流。这与捕获按键按下事件密切相关,但不允许您判断现在按下了哪些键,只能判断哪些键在某个时刻没有按下,然后在过去按下了。

您需要使用int 21h、函数25h来为int 9h安装您自己的处理程序。这样您就可以直接从硬件获取按键按下和按键按下事件。

在处理程序中,读取端口 60h 以确定发生中断的原因。低七位是关键代码。如果顶部位已清除,则该键已转换为按下状态。如果设置了最高位,则该键已转换为未按下状态。

然后您需要将 20h 输出到端口 20h 以确认中断。

因此,您可以保留一个 128 字节的表,初始化为全部 80h。在您的处理程序中,只需将 value 存储到 value&7h

在您的实际游戏代码中,如果您想知道当时是否按下了 n 键,请从表中读取第 n 个值并按符号分支。正值 = 按下,负值 = 未按下。

(附录:您还应该在启动时获取现有向量并在退出之前恢复它,否则您只是不小心编写了 TSR 的 Hook 部分,可能没有执行 SR 部分)

关于assembly - 同时获得两把 key - 组装 8086,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36655058/

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