表9.4
BIOS键盘中断(INT 16H)
AH
功 能 |
返回参数
|
0 从键盘读一字符 |
AL=字符码
AH=扫描码
|
1 读键盘缓冲区的字符 |
如ZF=0
AL=字符码
AH=扫描码
如ZF=1,缓冲区空
|
2 取键盘状态字节 |
AL=键盘状态字节
|
MOV AH,0 ; 读字符功能
INT 16H ; 键盘BIOS调用
MOV BX,AX ; 扫描码和字符码送BX
CALL BINIHEX ; 打印扫描码和字符码
图9.2 键盘状态字节
前面我们已经提到Shift、Ctrl 、Alt、Num Lock、Scroll、Ins 和Caps Lock这些键不具有ASCII码,但按动了它们能改变其它键所产生的代码,那么如何能判断这些键按动与否呢?在键盘状态字节中高4位指出各种键盘方式(Ins、Caps
Lock、Num Lock、Scroll)是ON(1)还是OFF(0);低4位表示Alt、Ctrl、Shift键是否按动。这8个键有时又被称为变换键。使用INT
16H的AH=2的功能即可得到这些键状态的信息。
例9.1
读取键盘状态字节,并以十六进制显示出各位的状态。
AGAIN:
MOV AH,02H ; 取键盘状态功能
INT 16H ; 键盘BIOS调用
MOV BX,AX ; 状态信息存入BX
CALL BINIHEX ; 显示状态信息
MOV DL,0DH ; 显示回车符
MOV AH,02H
INT 21H
JMP AGAIN ; 重复