我们知道cpu在计算机系统中除了能够执行指令,进行运算以外,还应该能对外部设备进行控制,接收它们的输入,向它们进行输出,也就是说cpu除了具有运算能力外,还要有I/O(Input/Output,输入输出)能力。通过以前的学习我们知道,PC系统的接口卡和主板上装有各种接口芯片。这些外设接口芯片的内部有若干寄存器,cpu将这些寄存器当作端口来访问。
外设的输入不直接送入内存和cpu,而是送入相关的接口芯片的端口中,cpu向外设的输出也不是直接送入外设,而是先送入端口中,再由相关的芯片送到外设。cpu还可以向外设输出控制命令,而这些控制命令也是先送到相关芯片的端口中,然后再由相关的芯片根据命令对外设实施控制。可见cpu通过端口和外部设备进行联系。
至此,我们知道了外设的输入被存放在端口中,可是外设的输入随时都有可能到达,cpu如何及时的知道并进行处理呢?这就用到了我们今天的主角-中断机制。cpu提供中断机制来满足这种需要,当cpu的内部有需要处理的事情发生时,将产生中断信息,引发中断过程,这种中断信息来自cpu内部,还有一种中断信息,来自于cpu外部,当cpu外部有需要处理的事情发生的时候,比如说,外设的输入到达,相关芯片将向cpu发出相应的中断信息。cpu在执行完当前指令后,可以检测到发送过来的中断信息,引发中断过程,处理外设的输入。
PC机处理键盘输入的过程如下:
1、键盘输入
键盘上的每一个按键相当于一个开关,键盘中有一个芯片对键盘上的每一个键的开关状态进行扫描,按下一个键时,开关接通,
该芯片就产生一个扫描码,扫描码说明了按下的键在键盘上的位置。扫描码被送入主板上的相关芯片的寄存器中,该寄存器的
端口地址为60h。松开按下的键时,也产生一个扫描码, 扫描码说明了松开的键在键盘上的位置,松开按键时产生的扫描码也
被送入60端口中。一般我们将按下一个键时产生的扫描码称为通码,松开一个按键产生的扫描码称为断码。扫描码长度为一个
字节,通码的第七位为0,断码的第七位为1,即断码 = 通码 + 80h。
2、引发9号中断
键盘的输入到达60端口时,相关