【发布时间】:2015-11-07 20:04:30
【问题描述】:
我正在用键盘敲击“a”和“s”编写一个小游戏,我不想在循环中等待,所以我尝试了 int 16h, ah=01h。当我按下键“a”时,它就像键被卡住了,按下键后如何清空/刷新缓冲区?
mov ah,01h
int 16h
感谢您的帮助
【问题讨论】:
我正在用键盘敲击“a”和“s”编写一个小游戏,我不想在循环中等待,所以我尝试了 int 16h, ah=01h。当我按下键“a”时,它就像键被卡住了,按下键后如何清空/刷新缓冲区?
mov ah,01h
int 16h
感谢您的帮助
【问题讨论】:
当您知道有一个按键等待使用 int16 函数 1 读取时,只需使用函数 0 获取密钥:
mov ah, 1 ; peek
int 16h
jz NoKey
mov ah, 0 ; get
int 16h
【讨论】:
如果你仍然想清除缓冲区,你可以使用这个:
proc ClearBuffKB
push ax
@@CheckBuffer:
mov ah ,1
int 16h
jz @@return
mov ah ,0
int 16h
jmp @@CheckBuffer
@@return:
pop ax
ret
endp ClearBuffKB
【讨论】: