emu8086 assembly Int 16 ah=01h,如何清空缓冲区?
emu8086 assembly Int 16 ah=01h, how to empty buffer?
我正在用键盘敲击 'a' 和 's' 编写一个小游戏,我不想在我的循环中等待,所以我尝试了 int 16h,ah=01h。当我按下 'a' 键时,它就像键被卡住一样,按下键后如何 empty/flush 缓冲?
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
我正在用键盘敲击 'a' 和 's' 编写一个小游戏,我不想在我的循环中等待,所以我尝试了 int 16h,ah=01h。当我按下 'a' 键时,它就像键被卡住一样,按下键后如何 empty/flush 缓冲?
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