在BIOS系统中,提供了中断16H来实现键盘输入功能。其具体的功能如下:
00H、10H——从键盘读一个字符,输入字符不回显
01H、11H——判断键盘缓冲区内是否有字符可读
02H——读取当前键盘状态字
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之键盘服务。
由表8.1可知:键盘输入端口的地址为60H,所以,我们可以用指令IN从该端口读取当前按键的扫描码。
例如:
MOV DX, 60H IN AL, DX
例8.1 用键盘最多输入10个字符,并存入内存变量Buff中,若按“Enter”键,则表示输入结束。
解:
.MODEL SMALL CR EQU 0DH ;定义“回车”键的符号名 .DATA Buff DB 10 DUP(?) .CODE .STARTUP MOV CX, 0AH LEA BX, Buff .REPEAT MOV AH, 0H INT 16H? ;用BIOS中的中断功能 .BREAK .IF AL==CR MOV [BX], AL INC BX .UNTILCXZ .EXIT?0 END
.MODEL SMALL .DATA Buff DB 10, ?, 10 DUP(?) ;注意缓冲区的定义方式 .CODE .STARTUP LEA DX, Buff MOV AH, 0AH INT 21H ;用DOS中的功能调用 .EXIT 0 END