微机原理习题答案8章 下载本文

(1) 设备3和4同时发出中断请求;

中断处理次序为:D3→D4,示意图如图8.3(a)所示。

D3,D4同时请求主程序D3服务程序STID4服务程序STI3置ISR1ISR3清零ISR4置1IRETIRETISR4清零

图8.3(a)设备3和4同时发出中断请求的中断处理程序的次序示意图

(2) 设备3和4同时发出中断请求,并在设备3的中断处理程序完成之前,设备2发出

中断请求;

中断处理次序为: D3→D2→D3→D4,示意图如图8.3(b)所示。

D3,D4同时请求D2请求D3服务程序STID2服务程序STI主程序I置13RS12置RSIISR3清零ISR4置1ISR2清零IRETIRETD4服务程序STIISR4清零IRET

图8.3(b)中断处理程序的次序示意图

(3) 设备1、3、5同时发出中断请求,在设备3的中断处理程序完成之前,设备2发出

- 77 -

中断请求。

中断处理次序为:D1→D3→D2→D3→D5,示意图如图8.3(c)所示。

D1,D3,D5同时请求D2请求D1服务程序STID3服务程序STID2服务程序STI主程序置11RISISR1清零IRETIRETISR3置1ISR3清零ISR2清零IRETISR5置1D5服务程序STIISR5清零IRET 图8.3(c)中断处理程序的次序示意图

12. 8259A是怎样进行中断优先权管理的?

答:8259A 利用优先权处理器来识别和管理中断请求信号的优先级别。当几个中断请求信号同时出现时,优先权处理器根据控制逻辑规定的优先权级别和IMR的内容来判断这些请求信号的最高优先级。微处理器响应中断请求时,把优先权最高的IRR中的“1”送入ISR.。当8259A正在为某一级中断服务时,若又出现新的中断请求,则由优先权处理器判断新出现的中断请求的级别是否高于正在处理的那一级。若是,则进入多重中断处理。

13. 特殊全嵌套方式有什么特点?它的使用场合是什么? 答:多片8259级联时,主片必须工作在特殊全嵌套方式下。

假设从片工作在全嵌套方式下,先后收到了两次中断请求,而且第二次中断请求有较高的优先级,那么该从片就会两次通过INT引脚向上一级申请中断。如果主片采用全嵌套方式,则它不会响应来自同一引脚的第二次中断请求。而采用特殊全嵌套方式后,就会响应该请求。

14. 向8259A发送“中断结束”命令有什么作用?8259A有哪几种中断结束方式?分析各自

- 78 -

的利弊。

答:向8259A发送“中断结束”命令,使相应的中断级在ISR中的相应位清“0”,表示该中断处理已经结束。

8259A有自动中断结束方式(AEOI)和非自动中断结束方式(EOI)。 (1) 自动中断结束方式(AEOI)。

在这种方式下,系统一旦进入中断响应,8259A就在第二个中断响应周期INTA信号的后沿,自动将ISR中被响应中断级的对应位清“0”。这是一种最简单的中断结束处理方式,可以通过初始化命令来设定,但这种方式只能用在系统中只有一个8259A,且多个中断不会嵌套的情况。

(2) 非自动中断结束方式(EOI)。

在这种工作方式下,从中断服务程序返回前,必须在程序里向8259A输出一个中断结束命令(EOI),把ISR对应位清“0”。具体做法有一般的中断结束方式和特殊的中断结束EOI命令。这种方式可用于系统中有多个8259A或多个中断中有嵌套的情况,但这种方式要比自动中断结束方式复杂。而且在这种方式下,如果在程序里忘记了将ISR对应位清零,那么,8259A在一般情况下将不再响应这个中断以及比它级别低的中断请求。

15. 初始化8259A时设置为非自动结束方式,则在中断服务程序即将结束时必须设置什么操 作命令?不设置这种命令会发生什么现象?如果初始化时设置为自动结束方式时,还需要设置这种操作吗?

答:必须发送中断结束命令,即向操作控制字OCW2的EOI位写1。如果不设置这种命令,则该中断服务程序结束后,CPU将无法响应优先级比它低的中断请求以及它自身的下一次中断请求。若初始化为自动结束方式,则不需设置这种操作。

16. 在哪些情况下需用CLI指令关中断?在哪些情况下需用STI指令开中断? 答:

① 关于有前缀的指令,前缀包括段寄存器前缀(例如指令MOV AX , CS:VAR)、重复前缀

(例如指令 REP MOVSB)、和LOCK 前缀。应明确的是,指令前缀并不是一个独立的指令,只是指令的一部分,所以不允许在前缀码和指令码之间响应中断,所以应在这条指令前置CLI(关中断)指令,在这条指令后置STI(开中断)指令。

② 对于目的地址是段寄存器的MOV 和POP 指令(除CS外),本条指令后不允许响应中

- 79 -

断,而是还要执行一条指令结束后才能响应中断,这时可以在指令前加CLI,指令后加STI。

③ 需要进行中断嵌套时,由于微处理器在响应中断时已将IF清零,所以一定要在中断处

理程序中加开中断指令,才有可能进行中断嵌套。

17. 某系统中有两片8259A,从片的请求信号连主片的IR2引脚,设备A中断请求信号连从

片IR5引脚。说明设备A在一次I/O操作完成后通过两片8259A向8086申请中断,8086微处理器通过两片8259A响应中断,进入设备A的中断服务程序,发送中断结束命令,返回断点的全过程。

答:设备A在一次I/O操作完成后在8259A从片中断请求输入端IR5上产生中断请求,中断请求被锁存在8259A从片IRR中,并经IMR“屏蔽”,其结果送给优先权电路判优。控制逻辑接收中断请求,向8259A主片IR2引脚输出INT信号,中断请求被锁存在8259A主片IRR中,并经IMR“屏蔽”,其结果送给优先权电路判优。控制逻辑接收中断请求,向CPU输出INT信号。CPU从INTR引脚接受8259A主片的INT信号,进入连续两个INTA 周期。优先权电路设置ISR中的对应位,在收到第一个INTA 信号后, 8259A主片把当前申请中断的8259A从片的ID代码010,通过CAS0~CAS2送到相应的8259A从片。相应地8259A从片在收到第二个INTA 信号时,将中断类型号N送到数据线上。

8086CPU获得中断类型号N后,在N×4和N×4+2对应的中断向量表单元获取中断向量分别置入IP和CS,从此进入设备A的中断服务程序。

在中断服务程序结束前(即执行IRET指令前),应分别向从片8259和主片8259发送EOI中断结束命令,然后执行IRET指令,返回断点。

18. 某8086系统用3片8259A级联构成中断系统,主片中断类型号从10H开始。从片的中 断申请连主片的IR4和IR6引脚,它们的中断类型号分别从20H、30H开始。主、从片均采用上升沿触发,非自动中断结束方式。且主片采用特殊全嵌套方式,从片采用完全嵌套方式。请编写他们的初始化程序。

答:设8258A主片的端口地址为20H(A0=0)和 21H(A1=1),第一个8259A从片的端口地址为50H(A0=0)和 51H(A1=1),第二个8259A从片的端口地址为0A0H(A0=0)和 0A1H(A1=1),初始化程序如下:

- 80 -