目录
一、接口芯片和端口
二、外中断信息
三、PC机键盘的处理过程
一、接口芯片和端口
外设的输出不直接送入内存和CPU,而是送入相关的接口芯片的端口中;CPU向外设的输出也不是直接送入外设,而是先送入端口,再由相关的芯片送到外设。CPU还可以向外设输出控制命令,而这些控制命令也是先送到相关芯片的端口中,然后再由相关的芯片根据命令对外设实施控制。
二、外中断信息
1.CPU提供中断机制来满足这种需要,当CPU的内部有需要处理的事情发生的时候,将产生中断信息,引发中断过程,处理外设的输入。
2.在PC系统中,外中断源一共有以下两类:
(1)可屏蔽中断:
可屏蔽中断是CPU可以不响应的外中断。CPU是否相应可屏蔽中断,要看标志寄存器的IF位的设置。当CPU检测到可屏蔽中断信息时,如果IF=1,则CPU在执行完当前指令后响应中断,引发中断过程;如果IF=0,则不响应中断。
(2)不可屏蔽中断
不可屏蔽中断是CPU必须响应的外中断。当CPU检测到不可屏蔽中断信息时,则在执行完当前指令后,立即响应,引发中断过程。
三、PC机键盘的处理过程
1、键盘输入
键盘上的每一个按键相当于一个开关,键盘中有一个芯片对键盘上的每一个键的开关状态进行扫描。
按下一个键时,开关接通,该芯片就产生一个扫描码,扫描码说明了按下的键在键盘上的位置。扫描码被送入主板上的相关芯片的寄存器中,该寄存器的端口地址为60h。
松开按下的键时,也产生一个扫描码, 扫描码说明了松开的键在键盘上的位置,松开按键时产生的扫描码也被送入60端口中。
一般我们将按下一个键时产生的扫描码称为通码,松开一个按键产生的扫描码称为断码。扫描码长度为一个字节,通码的第七位为0,断码的第七位为1,即断码 = 通码 + 80h。
2、引发9号中断
键盘的输入到达60端口时,相关的芯片就会向cpu发出中断类型码为9的可屏蔽中断信息。cpu检测到改中断信息后,如果IF = 1,则响应中断,引发中断过程,转去执行int 9中断例程。
3、执行int9中断例程
BIOS提供了int 9中断例程,用来进行基本的键盘输入处理,主要的动作如下:
(1)读出60端口中的扫描码;
(2)如果是字符键的扫描码,将该扫描码和它所对应的字符码即ASCII码送入内存中的BIOS键盘缓冲区;如果是控制键(如ctrl)
和切换键(如CapsLock)的扫描码,则将其转变为状态字节(用二进制位记录控制键和切换键状态的字节)写入内存中存储 状态字节的单元;
(3)对键盘系统进行相关的控制,比如说,向相关芯片发出应答信息。
BIOS键盘缓冲区是系统启动后,BIOS用于存放int 9号中断例程所接受的键盘输入的内存区。该内存区可以存储15个键盘输入,因为int 9中断例程除了接受扫描码外,还要产生和扫描码对应的字符码,所以在BIOS键盘缓冲区中,一个键盘输入用一个字单元存放,高位字节存放扫描码,低位字节存放字符码。
0040:17单元储存键盘状态字节,该字节记录了控制键和切换键的状态。键盘状态字节各位记录的信息如下: