111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:3304回复:0

经典汇编语言教程:8.3.2 键盘中断的处理过程

楼主#
更多 发布于:2013-01-26 14:37

当用户按键时,键盘接口会得到一个代表该按键的键盘扫描码,同时产生一个中断请求。键盘中断服务程序先从键盘接口取得按键的扫描码,然后根据其扫描码判断用户所按的键并作相应的处理,最后通知中断控制器本次中断结束并实现中断返回。
若用户按下双态键(如:CapsLock、NumLock和ScrollLock等),则在键盘上相应LED指示灯的状态将发生改变;
若用户按下控制键(如:Ctrl、Alt和Shift等),则在键盘标志字中设置其标志位;
若用户按下功能键(如:F1、F2、…等),再根据当前是否又按下控制键来确定其系统扫描码,并把其系统扫描码和一个值为0的字节存入键盘缓冲区;
若用户按下字符键(如:A、1、+、…等),此时,再根据当前是否又按下控制键来确定其系统扫描码,并得到该按键所对应的ASCII码,然后把其系统扫描码和ASCII码一起存入键盘缓冲区;
若用户按下功能请求键(如:PrintScreen等),则系统直接产生一个具体的动作。

有关键盘中各种单键、组合键的扫描码及其相应的ASCII码,请参阅本书的附录5。
4、DOS功能中的键盘输入
键盘输入是一种最常用的输入方式,所以,在DOS操作系统中,提供了能实现各种键盘输入的功能(Windows操作系统中仍然能用)。INT21H中的相关功能如下:
01H——带回显的键盘输入06H——控制台的输入/输出:当DL=0FFH,表示键盘输入
07H——不回显、不过滤的键盘输入08H——不回显的键盘输入
0AH——键盘输入字符串0BH——检查键盘输入状态
0CH——清除输入缓冲区的输入功能

有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之字符功能调用类。
5、Bios中的键盘输入
在BIOS系统中,提供了中断16H来实现键盘输入功能。其具体的功能如下:
00H、10H——从键盘读一个字符,输入字符不回显
01H、11H——判断键盘缓冲区内是否有字符可读
02H——读取当前键盘状态字
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之键盘服务。
6、直接操作端口的键盘输入
由表8.1可知:键盘输入端口的地址为60H,所以,我们可以用指令IN从该端口读取当前按键的扫描码。
例如:
MOV DX, 60H
IN AL, DX

喜欢0 评分0
游客

返回顶部