emu8086汇编Int 16啊= 01h,如何清空缓冲区? [重复]

问题描述 投票:1回答:2

我用键盘敲击'a'和's'编码一个小游戏,我不想在我的循环中等待,所以我尝试了16h,啊= 01h。当我按下'a'键时,它就像键被卡住一样,按下键后如何清空/冲洗缓冲区?

mov ah,01h
int 16h

感谢帮助

assembly dos emu8086
2个回答
4
投票

当你知道有一个按键等待用int16函数1读取时,只需使用函数0获取密钥:

mov ah, 1   ; peek
int 16h
jz  NoKey
mov ah, 0   ; get
int 16h    

1
投票

如果您仍想清除缓冲区,可以使用:

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
© www.soinside.com 2019 - 2024. All rights reserved.