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

时间:2015-11-07 20:04:31

标签: assembly dos emu8086

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

mov ah,01h
int 16h

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分: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