【问题标题】:emu8086 assembly Int 16 ah=01h, how to empty buffer? [duplicate]emu8086 汇编 Int 16 ah=01h,如何清空缓冲区? [复制]
【发布时间】:2015-11-07 20:04:30
【问题描述】:

我正在用键盘敲击“a”和“s”编写一个小游戏,我不想在循环中等待,所以我尝试了 int 16h, ah=01h。当我按下键“a”时,它就像键被卡住了,按下键后如何清空/刷新缓冲区?

mov ah,01h
int 16h

感谢您的帮助

【问题讨论】:

    标签: assembly dos emu8086


    【解决方案1】:

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

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

    【讨论】:

    • 太棒了,效果很好,我花了半天时间,非常感谢
    【解决方案2】:

    如果你仍然想清除缓冲区,你可以使用这个:

    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
    

    【讨论】:

      猜你喜欢
      • 2022-06-17
      • 2012-09-17
      • 1970-01-01
      • 2011-03-19
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 2011-04-15
      相关资源
      最近更新 更多