注册 登录
编程论坛 汇编论坛

如何清空键盘缓冲区?

aoyueshizhan 发布于 2011-06-25 16:52, 1232 次点击
网上说用ah,0ch
        int 21h
        于是我是这样写的。
           ........
           ........
           mov ah,0ch
           int 21h      
           mov ax,cs
           mov ds,ax
           mov si,timechar-myfloppy
           mov di,0
           ........
           ........

     但是发现后来根本没用,请问到底如何清除?
  
4 回复
#2
ansic2011-06-25 17:19
参考使用bios的int 16h 10H/11H
#3
xtdhwl2011-07-12 15:07
MOV AX,0040H
MOV DS,AX
MOV SI,001A
MOV AX,0
MOV CL,15
S:MOV DS:[SI],AX
  LOOP S
不知道行不行
#4
shweei2011-08-08 14:46
首先要判断键盘缓冲区是否存在字符
如果存在就取走一个,再继续判断

如果不存在字符就为空

判断缓冲区是否存在字符的指令是 INT 16H 中断的 AH=1功能号

取缓冲区字符是 INT 16H 中断的AH=0功能号


楼上的方法太麻烦 只要直接修改缓冲区头指针就可以了

[ 本帖最后由 shweei 于 2011-8-8 15:43 编辑 ]
#5
huangqingfu2012-11-15 18:51
试试下面的代码:
...
again: mov    ah, 01h   
       int    16h          ;The key buffer is empty?
       jz     next         ;Yes, jump to next
       mov    ah, 0        
       int    16h          ;No, get out a char from key buffer
       jmp    short again  ;Continue
next:
...
1