自学计算机中断--INT 09 & INT 16

  INT 09: 这种中断,是由于keyboard上面的普通键被按而产生的。普通键被按后,kbc会侦测到,发出int 09中断。CPU会去执行09号中断对应的程序。这个程序包括:(通过60port)读取操作键的scancode(扫描码)->转换成ASCII码->将扫描码、字符码存放在一个buffer(缓冲区,在内存)中。

  INT 16: 这种中断,是在应用程序去调用它的时候产生的。它有个重要的功能是,当AH = 0时,会去buffer里面读取一个键盘的输入。这个中断的程序包括:循环检测buffer中是否有数据->若有,读取数据->将scancode送入ah,将ASCII码送入al->删除已读取的输入数据。

  由此可以看出,INT 09和INT 16是一对的。

  所谓普通键,就是除hotkey以外的键。所谓hotkey,就是用Fn+x产生的第二功能键,可以称为热键。在笔记本上面,单独Fn键被按下,是不会有反应的,它是作为判断键来使用。当Fn+F5,它是一个hotkey,用来开关wireless,这时发生的并不是INT09中断,而是EC_SCI。KBC触发了南桥的这根pin,发出SCI,OS得知后,去问Qxx的number,最后去执行代码里面定义好的hotkey的动作,即开/关无线功能。

posted @ 2011-08-05 11:04  晨風拂雪  阅读(1066)  评论(2编辑  收藏  举报