中断源及外部可屏蔽中断的控制逻辑
图5.22所示是Pc/AT机中断源总的示意图。从中断源来自CPU外部还是内部,可分成外部中断和内部中断两大类。外部中断从两根请求线引入CPU,通过NMI引入的是非屏蔽中断请求,从INTR引入的是可屏蔽中断请求。在PC/AT机中,可屏蔽中断源都是一些“设备”,它们的中断请求由两片8259A级联系统来控制,如图5.23所示。
在Pc/AT机中,主8259A占用端口地址20H和21H,从8259A占用端口地址AOH和 AlH。
在与Pc/AT兼容的高档微机中,采用了图5.23所示的逻辑(集成到多功能接口芯片或控制芯片组中芯片),在中断控制中仍使用上面4个端口地址。
1.外部中断源
(1)非屏蔽中断
在Pc/AT机中,存储器奇偶校验错等致命错误是非屏蔽中断源。电源掉电并未列入其中,因为电源掉电的处理需要借助于不间断电源(uPS)功能块,以保证中断服务期间的供电。在响应非屏蔽中断请求时,CPU自动形成中断类型号2。
(2)可屏蔽中断
在PC/AT机中,可屏蔽中断从主板或系统总线(ISA总线)插槽引人,其中断源的设置见表5.2。其中一些中断源并未列出,是为用户所保留的。一般机器只配一台打印机,使用并行口l,所以并行口2一般不用,IRQ 5可由用户使用。IRQ9标注有“改向”,这是为了保持与PC/XT机的兼容。在PC/xT机中仅用了一片8259A,PC/AT机中的主8259A就是与它对应的。在Pc/AT机中主片的IRQ2用于级联,原来在PC/xT机中接到IRQ2上的设备,在机器更新时,可接到PC/AT机的IRQ9。如该设备产生中断请求,中断类型号为7lH的中断服务程序(对应IRQ9)将自动转移到中断类型号为0AH的中断服务程序(对应IRQ2)。这样,原先在PC/XT机上使用IRQ2的程序不必修改,在PC/AT机上照样可以运行。对于外部可屏蔽
中断,在中断响应时,要经过两个中断响应周期,由8259A产生相应的中断类型号。
2.内部中断源
在CPU执行程序时,遇到一些特定的情况也会引起中断,这些情况(或叫事件)统称为内部中断源。内部中断源有以下四种:
1)除法错中断
当进行除法运算时,发现除数为O或商超过了寄存器所能表示的范围,CPU自动产生中断类型号为0的中断。
2)溢出中断
在运算的过程中,如果运算的结果超出了相应数据的表示范围,就会产生溢出。在出现溢出时,并不立即引起中断,而是置位标志寄存器的溢出标志OF。当CPU执行溢出中断指令INTO时,发现OF被置位,才产生中断类型号为4的中断。因此,如果觉得本次运算有可能溢出,应在它的后面安排一条INTO指令。在执行INTO指令时,如果OF没有被置位,则不进行任何操作。