当前位置:首页 > 微机原理答案7
第 8 章 中断系统 习题参考答案
8-1.8086 系统中,用 IRET 指令结束中断服务程序后,标志 IF 的值是____A____。
8-2.执行 8086 的 IRET 中断返回指令后,将从堆栈中弹出__C__字节数据,存入相应的寄存器。 8-3.8086 的中断向量表中存放的是_B_。
8-4.8086 中断向量表的范围是 RAM 地址的__A__。 8-5 采用中断方式为外部设备服务的优点包括__C_。
8-6 为了可以实现中断嵌套,在8086系统的中断服务程序中,需要写一条__D_。
8-7.在具有 2 片 8259A 级联的中断系统中,两片 8259A 都设置为非自动结束中断,以下说法中 正确的是____C____。
8-8.以下和中断有关的操作中,必须由 CPU 自动完成的是____A____。 8-9.中断系统可以实现中断嵌套,其最主要的原因是____C___。
8-10.在 8086 系统中,一个中断类型号为 0DBH 的中断服务子程序位于从 8100H:1234H开始的内存中,在中断向量表中相应的中断向量所在的起始物理地址为____A___。
8-11.在 8086 系统中,一个中断类型号为 0DBH 的中断服务子程序入口地址是 8100H:1234H,这个地址在中断向量表中连续 4 个存储单元存放的内容依次为_____C____。
8-12.4 片 8259A 构成的级联中断控制系统中,最多可以直接连接的外部中断源的数目是__D__。 8-13.8086 的以下各种中断中,需要硬件提供中断类型号的只有____D__。 8-14.对于 8086 的软件中断,以下说法中正确的是_____D____。
8-15.什么是中断向量?什么是中断向量表?8086的中断向量表存放在存储器的哪个区域?为什么 8086 中断向量表的大小是 1024 个字节?
答:中断向量就是中断服务程序的入口地址。中断向量表存放中断服务程序的入口地址,或者存放跳转到中断服务程序入口的转移指令。8086 的中断向量表位于 RAM 区的 00000H~003FFH。因为 8086 支持 256 个中断,每个中断服务程序的入口地址是 4 个字节,共需要 1024字节。
8-16.现在有 10 个外中断源要申请中断,都用软件查询来进行优先级排队,此时需要为这些中断源准备几个中断服务程序?为什么?
答:只需要一个中断服务程序。10 个中断源通过一个或门向 CPU 申请中断。当有几个中断源同时申请时,在中断服务程序中进行排队查询。再转移到各自的服务程序段。并不需要为每个中断源准备一个服务程序。
8-17.如果8259A设置为非自动结束中断方式。但是,用户在编写中断服务程序时,没有向 8259A 发送中断结束命令 EOI。这样的做法会产生什么不好的后果?
答:其结果是 8259 内部的中断服务寄存器中的相应的登记不会撤销。也就不会允许后续的同级中断的申请。而实际上 CPU 的服务已经结束,应该可以允许中断的申请。 8-18.执行以下指令后的结果有什么不同:
MOV AX,1234H MOV AX,1234H MOV BX,5678H MOV BX,5678H PUSH BX PUSH BX PUSH AX PUSH AX RET IRET
再进一步叙述 IRET 指令和 RET 指令有什么不同。
答:执行左边一组指令后,IP=1234H。执行右边一组指令后,CS=5678H,IP=1234H。RET 指令一般是近调用返回,只将堆栈顶部内容弹出到 IP。IRET 指令一定是远调用的返回,要将栈顶 4 个字节弹出到 CS 和 IP。还会将自动压入的标志寄存器的内容出栈到标志寄存器。
8-19 向 8259A 的 A0=1 的端口发送一个命令字,如何可以确定这个命令字是初始化命令字 ICW2 而不是操作命令字 OCW1?
答:要看前一个命令字是不是 ICW1。如果是 ICW1,则这个命令字是ICW2,否则就是OCW1。 8-20.8259A 的初始化有几种不同的情况,分别使用在什么条件下? 答:1)只使用 ICW1 和 ICW2:单片 8259,而且不使用 ICW4。
2)使用 ICW1、ICW2 和 ICW3:多片 8259,但不使用 ICW4。 3) 使用 ICW1、ICW2 和 ICW4:单片 8259,但使用 ICW4。 4) 使用 ICW1、ICW2、ICW3 和 ICW4:多片 8259,也使用 ICW4。
8-21.8259A 设置为非自动结束中断,级联使用 8259A 时,主 8259A 的服务程序和从8259A 的服务程序,在发送中断结束命令方面有什么不同?
答:主 8259 的服务程序要结束主 8259A 的 ISR 寄存器中的登记。从 8259 的服务程序要结束主 8259A 和从 8259 的 ISR 寄存器中的登记。 8-22.分析以下中断向量表写入程序:
MOV MOV MOV MOV MOV MOV
AX, 0 ES, AX BX, 01C8H ES: [BX], AX AX, SEG INTSUB ES: [BX+2],AX
LEA AX, INTSUB
相应中断源的中断类型号是什么?请再用另外一种方式,完成这个中断向量表的写入程序。 答:中断类型号是 72H。用 DOS 功能调用 25H 来写入:
PUSH DS MOV MOV MOV MOV
AX, SEG INTSUB DS, AX
DX, OFFSET INTSUB AL, 72H
MOV AH, 25H
INT POP
21H DS
8-23.以下的子程序 1 是中断初始化程序,子程序 2 是响应中断的中断服务程序。0A0H和 20H 都是 8259A 的端口地址。分析这些程序段,并回答问题: 子程序 1:
INT-P2 PROC FAR PUSH DS PUSH AX PUSH DX
MOV DX, OFFSET INT-P1 MOV AX, SEG INT-P1 MOV DS, AX MOV AL, 78H MOV AH, 25H INT 21H POP DX POP AX POP DS RET
INT-P2 ENDP
子程序 2:
INT-P1 PROC FAR PUSH AX INC
[SI]
MOV AL, 20H OUT 0A0H, AL OUT 20H,AL POP AX IRET
INT-P1 ENDP
请问: (1)分配给这个中断的中断类型号是什么?
(2)CPU 到中断向量表的哪四个地址单元取得入口地址?
(3)中断源连接到 8259A 的哪个中断输入,是主 8259A 还是从 8259A? (4) 在该中断处理时能否实现中断嵌套?为什么?
答: (1)中断类型号是 78H。
(2)占用中断向量表的地址是:001E0H, 001E1H, 001E2H, 001E3H。 (3)连接到 8259A 的 IR0 输入,是从 8259A。
(4)不能中断嵌套。因为再服务程序中,没有 STI 指令。
8-24.修改例 8-6 的中断服务子程序,使得它能够应用于 16 位除数的除法溢出中断。入口参数是 BX 作为除数,被除数是指令隐含的。出口参数应该包括 32 位的商和 16 位的余数。请自己指定具体的出口参数,并完成中断服务程序的编程。
共分享92篇相关文档