微机原理与接口技术第六章 8259A练习题及答案

更新时间:2023-11-02 07:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中断技术和中断控制器8259A练习题及答案

一、填空题

1.8088微处理器最多能处理256种不同类型的中断。

2.8088系统的中断向量表位于从内存地址 00000H 开始,占1K字节存储单元。

3.8088CPU响应INTR中断时,将PSW(或标志寄存器内容)和断点(或CS:IP)进堆栈保存。 4.8259A可管理 8 级优先级中断源,通过级联,最多可管理 64 级优先级中断源。 5.若8259A的IRR(中断请求寄存器)的内容为10H,说明IR4请求中断。

二、选择题

6.8088CPU的标志寄存器中IF=1时,表示允许CPU响应______中断。C A.内部中断 B.外部中断 C.可屏蔽中断 D.不可屏蔽中断 7.CPU在响应中断时,保存断点是指______。D A.将用户设置的程序指令地址入栈保存 B.将中断服务程序的入口地址入栈保存 C.将程序状态字PSW入栈保存

D.将返回地址即程序计数器PC(CS:IP)的内容入栈保存 8.8088的中断向量表用于存放______。B A.中断类型号 B.中断服务程序的入口地址 C.中断服务程序的返回地址 D.断点地址

三、判断题

9.8086的可屏蔽中断的优先级高于不可屏蔽中断。 [ ] ×

10.通常8259A芯片中的IR0优先级最低,IR7的优先级最高。 [ ] × 11.在8088系统中,所谓中断向量就是中断服务程序入口地址。 [ ] √

四、简答题

12.CPU响应INTR中断的条件是什么? 答:(1)INTR信号为有效电平 (2)当前指令执行完毕 (3)CPU开中断(IF=1)

(4)没有更高级的请求(RESET , HOLD ,NMI) 13.一般CPU响应中断时自动做哪些工作? 8088CPU呢?

答:一般CPU在响应中断时,关中断,保存断点,识别中断源,找到中断服务程序入口地址,转入中断服务程序。 8080CPU在响应中断时,首先把PSW(或标志寄存器内容)入栈保存,其余同一般CPU. 14.8088CPU在执行中断返回指令IRET时,执行什么操作? 答:(1)弹出断点送CS:IP (2)弹出PSW送标志寄存器

15.中断控制器8259A中下列寄存器的作用是什么? (1) IRR (中断请求寄存器) :保存中断源的中断请求

(2) IMR (中断屏蔽寄存器) :屏蔽/允许中断源请求中断,由程序写入,1为屏蔽,0为允许

第 - 1 - 页 共 12 页

(3) ISR (中断服务寄存器): 记录CPU正在为哪些中断源服务 (4) IVR (中断向量寄存器): 保存中断向量号

16、初使化时设置为非自动结束方式,那么在中断服务程序将结束时必须设置什么操作命令?如果不设置这种命令会发生什么现象? 答案:

当中断服务程序将结束时,必须发0CW2=20H为中断结束命令,执行此命令即撤消正在服务的中断请求和服务标志;否则,即使返回主程序但未退出此中断,造成中断响应的混乱。

17、中断服务程序结束时,用RET指令代替IRET指令能否返回主程序?这样做存在什么问题? 答案:

RET应该可以使中断服务程序返回主程序,但因为RET是子程序返回指令,它只从堆栈中恢复CS和IP,而不能使状态字PSW得以恢复,所以不能使断点完全恢复,对原程序的继续执行造成不良影响. 18、在哪些情况下须用CLI指令关中断呢?在哪些情况下须用STI指令开中断? 答案:

在程序初使化阶段,连续传送数据不希望被中断打断,用查询方式等情况下须用CLI关中断.在程序初始化结束之后,退出中断服务程序前,中断过程中须响应更高级中断等情况下须用STI开中断.

19、8259A的初始化命令字和操作命令字有什么差别?它们分别对应于编程结构中哪些内部寄存器? 答案:

初始化命令字通常在系统初始化阶段设置,从ICW1开始,按照固定次序的设置,一经设置完成,则在以后的操作中基本保持不变,操作命令字是在程序执行阶段向8259A发出的命令字,实现以8259A的状态,中断方式和过程的控制.操作命令字可以一个程序中多次设置,从而改变中断的方式.初始化命令字有4个,分别为ICW1,ICW2,ICW3,ICW4,操作命令字有#个,分别为OCW1,OCW2,OCW3.

20、8259A的优先级自动循环方式和优先级特殊循环方式有什么差别? 答案:

优先级自动循环方式规定刚被服务过的中断其优先级为最高,相邻序号的中断级为最高优先级,依次循环.而优先级特殊循环方式是指定某个中断其优先级为最低,相邻高序号的中断其优先级则为最高.

21、8259A的中断屏蔽寄存器IMR和8086/8088的中断允许标志IF有什么差别?在中断响应过程中,它们怎样配合起来工作? 答案:

IMR的8位对应8个中断级,其中置为1的位所对应的中断级的输入线IR处于被屏蔽方式,被屏蔽的中断级请求不能使8259A的INT输出端产生有效的请求信号.所以即使当中断允许IF=1时也无法响应.IF是CPU的中断允许标志,当IF=0时所有可屏蔽中断被禁止.在中断响应过程中,通过设置IF,IMR可灵活控制中断的优先次序. 22、如果利用中断方式传送数据,则娄据是如何传输的?中断机构起什么作用? 答案:

利用中断方式传送数据,一般是首先向CPU发出中断请求,CPU响应中断后在中断处理程序中进行数据传输,传输完毕返回.中断机构起控制作用,实时性较强.

23、在8086/8088的中断系统中,响应中断过程是如何进入中断服务程务程序的? 答案:

中断源提供中断类型码,从中断向量表中相应位置取出中断服务程序首址置入IP和CS中,程序转至中断服务程序. 24、8259A的ICW2设置了中断类型码的哪几位?说明对8259A分别设置ICW2为30H,38H,36H有什么差别?

第 - 2 - 页 共 12 页

答案:

因ICW2设置了中断类型码的高5位,所以中断类型码基值必须是能被8整除的值.若ICW2设置为30H,则8级中断的类型码依次为30H~37H.若设置为38H,则8级中断的类型码依次为38H~3FH.若设置为36H<中断类型码为30H~37H,因其高5位仍为00110B.

25、8259A通过ICW4可以给出哪些重要信息?在什么情况下不需要用ICW3? 答案:

ICW4中给出的重要信息是:特列全嵌套方式/正常全嵌套方式,非缓冲方式/缓冲方式,从片/主片,中断自动结束/中断正常结束,8086/8088方式还是8080/8085方式.当ICW1中的IC4=0时,表示不设置ICW4.当ICW1中的SNGL=0时,表示为级联方式,需要设置ICW3.

26、8259A的特殊屏蔽方式和普通屏蔽方式相比,有什么不同之处?特殊屏蔽方式一般用在什么场合? 答案:

不同之处在于:当普通屏蔽方式中断服务程序正在执行时,同级或较低级和被屏蔽的中断请求不被响应,只有当前中断结束后方可响应同级或低级中断,特殊屏蔽方式除用OCW1屏蔽方式,屏蔽掉的和正在服务的中断级外,其他任何级的中断请求都将可能中断正在服务的中断(CPU处于开中断状态).相当于赋于OCW1中未屏蔽的中断级有更高的优先权.用这种方法可在程序的不同阶段任意改变中断级的优先次序. 27、8259A可编程中断控制器的主要功能有哪些? 答案:

主要功能有四个:(1)单片8259A可管理8级优先权中断源,通过级联,最多可管理64级优先权中断源. (2)对任何一级中断源都可单独进行屏蔽,使该中断请求暂时被挂起,直到取消屏蔽时. (3)能向CPU提供中断类型码.

(4)具有多种中断优先级管理方式,这些管理方式可能过程序动态地进行变化. 28、外设向CPU申请中断,但CPU不给以响应,其原因有哪些? 答案:

其原因有四个:(1)CPU处于关中断状态,IF=0 (2)该中断请求已被屏蔽;

(3)该中断请求的时间太短,未能保持到指令周期结束;

(4)CPU已释放总线(即已响应了DMA请求),而未收回总线控制权. 29、写出8086CPU各内部中断名称及产生的条件. 答案:

(1)指令中断 INT n.n由用户定义.(2)断点中断INT 3.断点由用户设置.(3)单步中断.TF=1.(4)溢出中断INTO.当OF=1时,执行一条INT4指令.(5)除法出错中断.执行DIV或IDIV指令后,或商大于表示范围则执行一条INT0指令.

五、应用题 30、下面对一个主从式8259A系统进行初始化的程序段.请对以下程序段详细注释,并具本说明各初始化命令字的含义.

主片初始程序: M82590 EQU 40H M82591 EQU 41H ?

MOV AL,11H MOV DX,M82590

第 - 3 - 页 共 12 页

OUT DX,AL ;(1) MOV AL,08H INC DX

OUT DX,AL ;(2) MOV AL,04H OUT DX,AL ;(3) MOV AL,01H OUT DX,AL ;(4) 从片初始化程序: S82590 EQU 90H S82591 EQU 91H ?

MOV DX,S82590 MOV AL,11H OUT DX,AL ;(5) MOV AL,70H INC DX

OUT DX,AL ;(6) MOV AL,02H OUT DX,AL ;(7) MOV AL,01H OUT DX,AL ;(8) 答案:

(1)设ICW1,中断请求信号为上升沿,级联方式,须设ICW4 (2)设ICW2,中断类型码基值为08H (3)设ICW3,IR2与从片的INT相连

(4)设ICW4,正常的完全嵌套,非缓冲方式,正常中断结束,8086/8088方式 (5)同主片ICW1

(6)设ICW2,中断类型码基值为70H (7)设ICW3,从片INT与主片的IR2相连 (8)同主片ICW4

31、IR4为正在运行的中断,希望在特殊的程序段上允许较低的IR7响应中断.试编写程序片段. 答案:

根据题意程序片段为 IR4的程序

CLI ;关中断,以便设置命令 MOV AL,68H ;设置特殊屏蔽方式( OCW3) OUT 20H,AL

IN AL,21H ;读IMR状态

第 - 4 - 页 共 12 页

OR AL 10H

OUT 21H,AL ;屏蔽IR4

STI ;开中断,允许响应其他中断请求信号

... ;继续处理IR4,如果IR7有请求,可以响应,处理完后要回到IR4处 ...

CLI ;关中断,以便设置命令 IN AL,21H ;读屏蔽字 AND AL,0EFH ;开放IR4

OUT 20H,AL ;恢复原来的屏蔽字 MOV AL,48H ;复位特殊屏蔽方式(OCW3) OUT 20H,AL

STI ;CPU开中断

... ;继续对IR4进行中断处理 MOV AL,20H ;发中断结束命令(OCW2) OUT 20H,AL

IRET ;返回主程序

32、若8086系统中采用级联方式,主8259A的中断类型码从30H开始,端口地址为20H,21H.从8259A的INT接主片的

IR7,从片的中断类型码从40H开始,端口地址为22H,23H.均不要ICW4.试对其进行初始化编程 答案:

主:M82590 EQU 20H M82591 EQU 21H ?

MOV AL,00010000B MOV DX,M82590 OUT DX,AL MOV AL,30H INC DX OUT DX,AL MOV AL,80H OUT DX,AL

中断类型号为10H,编程对8259A的初始化。

从S82590 EQU 22H S82591 EQU 23H ?

MOV AL,00010000B MOV DX,S82590 OUT DX,AL MOV AL,40H INC DX OUT DX,AL MOV AL,07H OUT DX,AL

33、单片8259A与PC机的连接见图1。要求单机工作,边缘触发,自动结束中断。屏蔽IR6、IR7两中断源,IR0的

第 - 5 - 页 共 12 页

图1

答案:

确定端口地址:由图知,若CS=0,必须IOR、IOW任一为低电平,AEN=0,A4=A5=A6=A7=A8=A9=1,A3A2A1=010,若A0=0,端口地址为03F4H;若A0=1,为03F5H 2.初始化程序: MOV DX,03F4H MOV AL,13H OUT DX,AL MOV DX,03F5H MOV AL,10H OUT DX,AL MOV AL,03H OUT DX,AL

34、若中断服务程序的入口地址为0320:0000H,中断类型码为60H,试编写程序段,把中断服务程序的入口地址放于矢量表中。

答案:MOV AX,0000H MOV ES,AX MOV BX,60H*4

MOV ES:WORD PTR[BX],AX MOV AX,0320H

MOV ES:WORD PTR[BX+2],AX

35、在IBMPC/XT机中,需通过读取ISR的值,判断是否为硬件中断,若是,清除正在服务的优先级,并发一般的EOI结束命令。编写该程序的有关片段。

第 - 6 - 页 共 12 页

答案:程序有关的片段为

MOV AL,0BH ; 设OCW3操作命令字,置读ISR状态 OUT 20H,AL NOP

IN AL,20H ;读ISR

MOV AH,AL ;保存正在服务的优先级

JNZ HW-INT ;部位0,硬件中断转换为0,非硬件中断 ...

HW-INT:IN AL,21H ;读ISR

OR AL,AH ;屏蔽当前服务的优先级 OUT 20,AL

MOV AL,20H ;设OCW2操作命令字,发一般的结束命令 OUT 20H,AL

36、下面对一个主从式8259A系统进行初始化的程序段。请对以下程序段详细注释,并具体说明各初始化命令的含义。 主片初始程序: M82590 EQU 40H M82591 EQU 41H ........ MOV AL,11H MOV DX,M82590

OUT DX,AL ;设ICW1,中断请求信号为上升沿,级连方式,需设ICW4 MOV AL,08H INC DX

OUT DX,AL ;设ICW2,中断类型码基址为08H MOV AL,04H

OUT DX,AL ;设ICW3,IR2与从片的INT相连 MOV AL,01H

OUT DX,AL ;设ICW4,正常的完全嵌套,非缓冲方式,正常中断结束,8086/80088方式 从片初始化程序: M82590 EQU 90H M82591 EQU 91H ........ MOV DX,82590 MOV AL,11H

OUT DX,AL ;同主片ICW1 MOV AL,70H

第 - 7 - 页 共 12 页

INC DX

OUT DX,AL ;设ICW3,从片INT与主片的IR2相连 MOV AL,02H OUT DX,AL MOV AL,01H

OUT DX,AL ;同主片ICW4

37、某微机系统使用主、从两片8259A管理中断,从片中断请求INT与主片的IR2连接。设主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型号为40H,端口地址为20H和21H。从片工作于完全嵌套、非缓冲和非自动结束方式,中断类型号为70H,端口地址为80H和81H。试编写主片和从片的初始化程序。 答案:

根据题意,写出ICW1, ICW2, ICW3和ICW4的格式。编写初始化程序如下: 主片8259A的初始化程序如下:

MOV AL, 00010001B ; 级联, 边沿触发, 需要写ICW4 OUT 20H, AL ; 写ICW1 MOV AL, 01000000B ; 中断类型号40H OUT 21H, AL ; 写ICW2

MOV AL, 00000100B ; 主片的IR2引脚接从片 OUT 21H, AL ; 写ICW3

MOV AL, 00010001B ; 特殊完全嵌套、非缓冲、自动结束 OUT 21H, AL ; 写ICW4 从片8259A初始化程序如下:

MOV AL, 00010001B ; 级联, 边沿触发, 需要写ICW4 OUT 80H, AL ; 写ICW1 MOV AL, 01110000B ; 中断类型号70H OUT 81H, AL ; 写ICW2

MOV AL, 00000010B ; 接主片的IR2引脚 OUT 81H, AL ; 写ICW3

MOV AL, 00000001B ; 完全嵌套、非缓冲、非自动结束 OUT 81H, AL ; 写ICW4

38、设计一个中断处理程序。要求中断请求信号以跳变方式由IR2引入(可为任一定时脉冲信号),当CPU响应IR2请求时,输出字符串“8259A INTERRUPT!”,中断10次,程序退出(设8259A的端口地址为20H和21H,中断类型号为40H)。 答案:

中断处理程序如下: DATA SEGMENT

MESS DB'8259A? INTERRUPT!', 0AH, 0DH, '$' COUNT DB 10 ; 计数值为10 DATA ENDS

STACK SEGMENT STACK

第 - 8 - 页 共 12 页

STA DB 100H DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK MAIN: CLI MOV AX,DATA NOV DS, AX MOV AX, STACK MOV SS, AX MOV SP, TOP

MOV AL, 13H OUT 20H, AL MOV AL, 40H OUT 21H, AL

MOV AL, 01H OUT 21H, AL

MOV AX, SEG INT-P MOV DS, AX MOV DX, OFFSET INT-P MOV AL, 42H MOV AH, 25H INT 21H

IN AL, 21H AND AL, 0FBH OUT 21H, AL WAIT1: STI CMP COUNT,0 JNZ WAIT1 MOV AX, 4C00H INT 21H

INT-P PROC PUSH DS ; PUSH AX PUSH DX

STI MOV DS, AX

MOV DX, OFFSET MESS MOV AH, 09H

初始化 单片, 边沿触发 中断类型号40H 非自动结束 设置中断向量

中断服务子程序入口段基址送DS 中断服务子程序入口偏移地址送DX 的中断类型号42H送AL 功能调用 读IMR

允许IR2请求中断 写中断屏蔽字OCW1 开中断

判断10次中断是否结束 未结束, 等待 结束, 返回DOS 中断服务子程序 保护现场 开中断 第 - 9 - 页 共 12 页

; 8259A ; ; ; ; ; ; ; IR2 ; 25H ; ; ; ; ; ; ; ; ; INT 21H

DEC COUNT ; 控制10次循环 JNZ NEXT

IN AL, 21H ; 读IMR OR AL, 04H ; 屏蔽IR2请求 OUT 21H, AL

NEXT: CLI ; 关中断

MOV AL, 20H ; 写OCW2, 送中断结束命令EOI OUT 20H, AL

POP DX ; 恢复现场 POP AX POP DS

IRET ; 中断返回 INT-P ENDP CODE ENDS END MAIN

参考练习题:8259A应用举例

8255A作中断方式工作的字符打印机的接口,如图5.24所示。本例中8255A向8259A请求中断,8259A向CPU请求中断,CPU响应中断后执行中断服务程序,向8255A的A端口输出数据,然后数据传到打印机打印。

8255A的A端口作为数据通道,工作在方式1输出方式。此时,号输出端,

则自动作为

信号输入端,而端连接打印机

接口需要一个数据选通信号用,将它悬空就行了。

,故由CPU控制PCO来产生选通脉冲

端。

自动作为。

自动作为INTR信号输出端。打印机

在此没有

图5.24 8255A作中断方式打印机接口

连到8259A的中断请求信号输入端

设8255A的端口地址为:

第 - 10 - 页 共 12 页

。8259A工作在单片、全嵌套方式、上升

中断类型码08H。

沿请求中断、一般中断结束方式、非缓冲、

A端口―――00COH B端口―――00C2H C端口―――00C4H 控制口―――00C6H 设8259A的端口地址为: 奇端口―――005OH 偶端口―――0052H

程序由初始化程序、主程序、中断服务程序三大部分组成。

◆ 初始化程序由8259A初始化、8255A初始化、中断服务初始化几部分组成。 ◆ 主程序没有别的任务,但是不能不写主程序,至少要有一条转移指令,原地跳转,等待中断,而中断服务程序执行完毕以后仍然返回这条跳转指令。

◆ 中断服务程序从数据缓冲区取1个字节数据,输出到8255A的A端口;用对C端口的置1/置0命令使PC0输出负脉冲结束命令;最后中断返回。

请求中断和响应的过程是:每当8255A端口A数据输出寄存器空,需要CPU送下一个数据的时候,

自动变为高电平,向8259AIR3请求中断;8259A通过INT引腿向

CPU请求中断;CPU响应中断,根据8259A提供的中断类型号,到中断向量表中取得中断向量;然后转移到中断服务程序执行。中断的详细过程见第二章“中断操作和中断系统”中可屏蔽中断响应过程部分。

假定待打印的数据存放在内存PRNBUF缓冲区,下面是具体程序段: INIT;MOV AL,0AOH ;8255A 初始化程序

OUT 0C6H,AL ;设置8255A的方式选择控制字 MOV AL,01 ;使

为1,即让

初始状态为低电平

位)为l,允许8255A请求中断

OUT 0C6H,AL ;C端口置1/置0控制字 MOV AL,0DH ;使INTE(C口;以下8259A初始化程序 MOV AL, 00010011B ; OUT 50H,AL ; MOV AL,08H ; OUT 52H,AL ; OUT 52H,AL ; MOV AL,11110111B ;清除 OUT 52H,AL ;;以下中断服务初始化 XOR AX,AX

MOV DS,AX ;DS指到0段,中断向量表在0段 LEA AX,INTPR ;取中断服务程序偏移地址

第 - 11 - 页 共 12 页

:上升沿请求中断、单片 写入偶端口 中断类型码08H 写入奇端口 写入奇端口

中断屏蔽 写入奇端口

OUT 0C6H,AL ;C端口置1/置0控制字

,从而将数据送入打印机;然后发一条中断

MOV AL, ;非特殊全嵌套、非自动中断结束方式、非缓冲

MOV WORD PTR[0BH*4],AX ;中断类型号为0BH,写入的地址为0BH×4 MOV AX,SEG INTPR ;取中断服务程序段地址

MOV WORD PTR [0BH*4+2],AX ;写向量高字 STI ;使IF为1,开放中断 ;以下主程序 MAIN:

JMP MAIN

;以下中断服务程序

INTPR:MOV AL,[DI];DI为打印字符缓冲区指针,取字符数据

INC DI

OUT 0COH,AL ;字符送A端口 MOV AL,0 ;使INC AL ;使

为0,产生选通信号为1,撤消

选通信号

负脉冲

OUT 0C6H,AL ;C端口置1/置0控制字 OUT 0C6H,AL ;C端口置1/置0控制字

MOV AL,20H ;EOI命令

OUT 50H ,AL ;

命令写入偶端口

IRET ;中断返回

第 - 12 - 页 共 12 页

本文来源:https://www.bwwdw.com/article/uet2.html

Top