1.外中断分两种:可屏蔽中断和不可屏蔽中断

可屏蔽中断:CPU可以不响应的中断,当IF=1时,CPU执行完指令响应中断。IF为0则CPU不响应可屏蔽中断

特别地:若在中断处理程序中需要处理可屏蔽中断,可用指令设置IF位为1,sti指令设置IF为1,cli设置IF为0

不可屏蔽中断:CPU必须响应的中断,当CPU检测到不可屏蔽中断信息时,执行完当前指令,立刻响应引发中断过程

(ps:几乎所有外设引发的都是可屏蔽中断)

2.键盘输入处理过程:

(1)键盘上每个键都对应一个开关,键盘中有一个芯片对键盘上每一个键的开关状态进行扫描
(2)按下一个键和松开一个键,都会生成一个扫描码,这个码最后被送入主板上相关接口芯片的寄存器中
(3)按下一个键产生的扫描码称为通码,松开一个键产生的扫描码称为断码,扫描码长度为一字节,通码的第7位为0,断码第7位为1。即:断码=通码+80H

4.来自BIOS提供的int 9 中断例程来处理键盘输入处理,主要工作:

(1)读取60h端口中的扫描码
(2)若是字符键的扫描码,将该扫描码和它对应的字符码(ascii码)送入内存中BIOS键盘缓冲区,若为控制或切换键的扫描码,则将其转为状态字节(用二进制位记录控制键和切换键状态的字节)写入内存中存储状态字节的单元
(3)对键盘系统进行相关控制,如:向相关芯片发送应答信息
0040:17单元存储键盘状态字节,该字节记录控制键和切换键的状态:
0:右shift,置1表示按下右shift
1:左shift状态,置1表示按下左shift
2:ctrl状态,置1为按下
3:alt状态,置1为按下
4:scrollLock状态,置1表示scroll指示灯亮
5:numlock状态,置1表示小键盘输入的是数字
6:capslock状态,置1为输入大写字母
7:insert状态,置1,处于删除状态

6.CPU对外设的通常处理方法:

(1)外设的输入送入端口
(2)向CPU发送外中断(可屏蔽中断)的信息
(3)CPU检测到可屏蔽中断信息,若IF为1,则CPU在执行完当前指令后响应中断
(4)可在中断例程中实现对外设输入的处理