算了,还是吧修改后的代码给楼主贴上来吧。其实就是增加了一个删除键盘缓冲区字符的操作,否则,你只能显示第一个按键的字符,而且是重复的显示。
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,11111101B
OUT 21H,AL ;开键盘中断
STI ;允许外中断
MOV SI,16H
L1: MOV AH,02H
MOV DL,'-'
INT 21H
MOV BX,0FFFH ;延时作用
MOV CX,0FFFFH
TIME:LOOP TIME
DEC BX
JNZ TIME
MOV AH,01H
INT 16h ;读BIOS数据区中字符
CMP AL,'A'
JB PASS
;------------------------------
;增加一个删除键盘缓冲区功能的代码
;------------------------------
MOV AH,0H
INT 16H ;读取键盘缓冲区中的字符并删除该字符
;--------------------------------
MOV AH,02H ;输出BIOS数据区中字符
MOV DL, AL
INT 21H
PASS: DEC SI
JNZ L1
CLI ;屏蔽外中断
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START |