接口芯片和端口

 

外设的输入不直接送入内存和CPU,而是送入相关的接口芯片的端口中;CPU向外设的输出也不是直接送入外设,而是先送入端口中,再由相关的芯片送到外设.CPU还可以向外设输出控制命令,而这些控制命令也是先送到相关芯片的端口中,然后再由相关的芯片根据命令对外设实现控制.

 

外中断信息

 

1.    可屏蔽中断

可屏蔽中断是CPU可以不响应的外中断.CPU是否响应可屏蔽中断,要看标志寄存器的IF位的设置,如果IF=1,则CPU在执行完当前指令后响应中断,引发中断过程;如果IF=0,则不响应可屏蔽中断.

 

8086CPU提供的设置IF的指令如下:

     sti, 设置IF=1;

     cli, 设置IF=0.

 

 

 

2.    不可屏蔽中断

不可屏蔽中断是CPU必须响应的外中断.

对于8086CPU,不可屏蔽中断的中断类型码固定为2。所以在中断过程中,不需要取中断类型码.则不可屏蔽中断的中断过程为:

 

1)     标志寄存器入栈,IF=0,TF=0

2)     CSIP入栈

3)     (IP)=8, (CS) = 0AH

 

几乎所有由外设引发的外中断都是可屏蔽中断.

不可屏蔽中断是在系统中有必须处理的紧急情况发生时用来通知CPU的中断信息,如电源掉电等.

 

 

 

 

 

 

 

 

 

 

PC机键盘的处理过程

 

按下一个键,该芯片产生一个字节的扫描码,送入端口60H。按下产生的扫描码称为通码。

松开按下的键时,也产生一个字节的扫描码,也会送入端口60H,放开时产生的扫描码称为断码。

通码的第7位为0,断码的第7位为1,即:断码=通码+80H

键盘的输入到达60H端口时,芯片向CPU发出中断类型码为9的可屏蔽中断信息。CPU检测到该中断信息后,若IF=1,则响应引发中断,执行int9中断例程。

 

执行int9中断例程

 

中断例程的主要处理如下:

1)     读出60H端口中的扫描码

2)     若是字符码的扫描码,将该扫描码和对应的字符码送入内存中的BIOS键盘缓冲区;若是控制键和切换键的扫描码,将其转变为状态字节写入内存中存储状态字节的单元。

3)     对键盘系统进行相关的控制。

 

 

 

BIOS键盘缓冲区

 

系统启动后,BIOS用于存放int9中断例程所接收的键盘输入的内存区。该内存区可以存储15个键盘输入,每个键盘输入用一个字单元存放,高位字节存放扫描码,低位字节存放字符码。

0040:0017单元存储键盘状态字节,改字节记录了控制键和切换键的状态。

 

安装新的int 9中断例程

 

 
CPU
对外设输入的通常处理方法:

1)     外设的输入送入端口;

2)     CPU发出外中断(可屏蔽中断信息)

3)     CPU检测到可屏蔽中断信息,如果IF=1CPU在执行完当前指令后响应中断,执行相应的中断例程;

4)     可在中断例程中实现对外设输入的处理.

 

  端口和中断机制,CPU进行I/O的基础.

打赏