灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2576回复:0

键盘中断的处理过程

楼主#
更多 发布于:2012-09-10 18:56

当用户按键时,键盘接口会得到一个代表该按键的键盘扫描码,同时产生一个中断请求。键盘中断服务程序先从键盘接口取得按键的扫描码,然后根据其扫描码判断用户所按的键并作相应的处理,最后通知中断控制器本次中断结束并实现中断返回。

若用户按下双态键(如:Caps Lock、Num Lock和Scroll Lock等),则在键盘上相应LED指示灯的状态将发生改变;

若用户按下控制键(如:Ctrl、Alt和Shift等),则在键盘标志字中设置其标志位;

若用户按下功能键(如:F1、F2、…等),再根据当前是否又按下控制键来确定其系统扫描码,并把其系统扫描码和一个值为0的字节存入键盘缓冲区;

若用户按下字符键(如:A、1、+、…等),此时,再根据当前是否又按下控制键来确定其系统扫描码,并得到该按键所对应的ASCII码,然后把其系统扫描码和ASCII码一起存入键盘缓冲区;

若用户按下功能请求键(如:Print Screen等),则系统直接产生一个具体的动作。

有关键盘中各种单键、组合键的扫描码及其相应的ASCII码,请参阅本书的附录5。

4、DOS功能中的键盘输入

键盘输入是一种最常用的输入方式,所以,在DOS操作系统中,提供了能实现各种键盘输入的功能(Windows操作系统中仍然能用)。INT 21H中的相关功能如下:

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
游客

返回顶部