文档详情

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

新**
实名认证
店铺
PDF
419.84KB
约10页
文档ID:567501452
中断技术和中断控制器8259A练习题及答案_第1页
1/10

第 - 1 - 页 共 10 页中断技术和中断控制器 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 为允许  (3) ISR (中断服务寄存器): 记录 CPU 正在为哪些中断源服务  (4) IVR (中断向量寄存器): 保存中断向量号16、初使化时设置为非自动结束方式,那么在中断服务程序将结束时必须设置什么操作命令?如果不设置这种命令会发生什么现象?答案:当中断服务程序将结束时,必须发 0CW2=20H 为中断结束命令,执行此命令即撤消正在服务的中断请求和服务标 第 - 2 - 页 共 10 页志;否则,即使返回主程序但未退出此中断,造成中断响应的混乱。

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 有什么差别?答案:因 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 的特殊屏蔽方式和普通屏蔽方式相比,有什么不同之处?特殊屏蔽方式一般用在什么场合?答案:不同之处在于:当普通屏蔽方式中断服务程序正在执行时,同级或较低级和被屏蔽的中断请求不被响应,只有当前 第 - 3 - 页 共 10 页中断结束后方可响应同级或低级中断,特殊屏蔽方式除用 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 40HM82591 EQU 41H…MOV AL,11HMOV DX,M82590OUT DX,AL ;(1)MOV AL,08HINC DXOUT DX,AL ;(2)MOV AL,04HOUT DX,AL ;(3)MOV AL,01HOUT DX,AL ;(4)从片初始化程序:S82590 EQU 90HS82591 EQU 91H…MOV DX,S82590MOV AL,11HOUT DX,AL ;(5)MOV AL,70HINC DXOUT DX,AL ;(6)MOV AL,02HOUT DX,AL ;(7)MOV AL,01HOUT 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 第 - 4 - 页 共 10 页31、IR4 为正在运行的中断,希望在特殊的程序段上允许较低的 IR7 响应中断.试编写程序片段.答案:根据题意程序片段为IR4 的程序CLI ;关中断,以便设置命令MOV AL,68H ;设置特殊屏蔽方式( OCW3)OUT 20H,ALIN AL,21H ;读 IMR 状态OR AL 10HOUT 21H,AL ;屏蔽 IR4STI ;开中断,允许响应其他中断请求信号... ;继续处理 IR4,如果 IR7 有请求,可以响应,处理完后要回到 IR4 处 ...CLI ;关中断,以便设置命令IN AL,21H ;读屏蔽字AND AL,0EFH ;开放 IR4OUT 20H,AL ;恢复原来的屏蔽字MOV AL,48H ;复位特殊屏蔽方式(OCW3)OUT 20H,AL STI ;CPU 开中断... ;继续对 IR4 进行中断处理MOV AL,20H ;发中断结束命令(OCW2)OUT 20H,ALIRET ;返回主程序 32、若 8086 系统中采用级联方式,主 8259A 的中断类型码从 30H 开始,端口地址为 20H,21H.从 8259A 的 INT 接主片的 IR7,从片的中断类型码从 40H 开始,端口地址为 22H,23H.均不要 ICW4.试对其进行初始化编程答案:主:M82590 EQU 20HM82591 EQU 21H…MOV AL,00010000BMOV DX,M82590OUT DX,ALMOV AL,30HINC DXOUT DX,ALMOV AL,80HOUT DX,AL从 S82590 EQU 22HS82591 EQU 23H…MOV AL,00010000BMOV DX,S82590OUT DX,ALMOV AL,40HINC DXOUT DX,ALMOV AL,07HOUT DX,AL 第 - 5 - 页 共 10 页33、单片 8259A 与 PC 机的连接见图 1。

要求单机工作,边缘触发,自动结束中断屏蔽 IR6、IR7 两中断源,IR0 的中断类型号为 10H,编程对 8259A 的初始化图 1答案:确定端口地址:由图知,若 CS=0,必须 IOR、IOW 任一为低电平,AEN=0,A4=A5=A6=A7=A8=A9=1,A3A2A1=010,若 A0=0,端口地址为 03F4H;若 A0=1,为 03F5H2.初始化程序:MOV DX,03F4HMOV AL,13HOUT DX,ALMOV DX,03F5HMOV AL,10HOUT DX,ALMOV AL,03HOUT DX,AL34、若中断服务程序的入口地址为 0320:0000H,中断类型码为 60H,试编写程序段,把中断服务程序的入口地址放于矢量表中答案:MOV AX,0000HMOV ES,AXMOV BX,60H*4MOV ES:WORD PTR[BX],AXMOV AX,0320HMOV ES:WORD PTR[BX+2],AX35、在 IBMPC/XT 机中,需通过读取 ISR 的值,判断是否为硬件中断,若是,清除正在服务的优先级,并发一般的 EOI 结束命令编写该程序的有关片段。

答案:程序有关的片段为MOV AL,0BH ; 设 OCW3 操作命令字,置读 ISR 状态OUT 20H,ALNOPIN AL,20H ;读 ISR 第 - 6 - 页 共 10 页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 40HM82591 EQU 41H........MOV AL,11HMOV DX,M82590OUT DX,AL ;设 ICW1,中断请求信号为上升沿,级连方式,需设 ICW4MOV AL,08H INC DXOUT DX,AL ;设 ICW2,中断类型码基址为 08HMOV AL,04HOUT DX,AL ;设 ICW3,IR2 与从片的 INT 相连MOV AL,01HOUT DX,AL ;设 ICW4,正常的完全嵌套,非缓冲方式,正常中断结束,8086/80088 方式从片初始化程序:M82590 EQU 90HM82591 EQU 91H........MOV DX,82590MOV AL,11HOUT DX,AL ;同主片 ICW1MOV AL,70HINC DXOUT DX,AL ;设 ICW3,从片 INT 与主片的 IR2 相连MOV AL,02HOUT DX,ALMOV AL,01HOUT DX,AL ;同主片 ICW437、某微机系统使用主、从两片 8259A 管理中断,从片中断请求 INT 与主片的 IR2 连接。

设主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型号为 40H,端口地址为 20H 和 21H从片工作于完全嵌套、非缓冲和非自动结束方式,中断类型号为 70H,端口地址为 80H 和 81H试编写主片和从片的初始化程序答案:根据题意,写出 ICW1, ICW2, ICW3 和 ICW4 的格式编写初始化程序如下:主片 8259A 的初始化程序如下: 第 - 7 - 页 共 10 页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            ; 写 ICW438、设计一个中断处理程序。

要求中断请求信号以跳变方式由 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  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         ; 8259A 初始化  OUT    20H, AL         ; 单片, 边沿触发  MOV    AL, 40H         ; 中断类型号 40H  OUT    21H, AL  MOV    AL, 01H         ; 非自动结束 第 - 8 - 页 共 10 页  OUT    21H, AL  MOV    AX, SEG INT-P  ; 设置中断向量  MOV    DS, AX   ; 中断服务子程序入口段基址送 DS  MOV    DX, OFFSET INT-P   ; 中断服务子程序入口偏移地址送 DX  MOV    AL, 42H         ; IR2 的中断类型号 42H 送 AL  MOV    AH, 25H         ; 25H 功能调用  INT    21H  IN    AL, 21H         ; 读 IMR  AND    AL, 0FBH        ; 允许 IR2 请求中断  OUT    21H, AL         ; 写中断屏蔽字 OCW1  WAIT1:  STI           ; 开中断  CMP    COUNT,0         ; 判断 10 次中断是否结束  JNZ    WAIT1          ; 未结束, 等待  MOV    AX, 4C00H        ; 结束, 返回 DOS  INT    21H  INT-P   PROC         ; 中断服务子程序  PUSH    DS         ; 保护现场  PUSH    AX  PUSH    DX  STI                ; 开中断  MOV    DS, AX  MOV    DX, OFFSET MESS  MOV    AH, 09H  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参参考考练练习习题题::8 82 25 59 9A A 应应用用举举例例8255A 作中断方式工作的字符打印机的接口,如图 5.24 所示。

本例中8255A 向8259A 请求中断,8259A 向 CPU 请求中断,CPU 响应中断后执行中断服务程序,向8255A 的 A 端口输出数据,然后数据传到打印机打印8255A 的 A 端口作为数据通道,工作在方式1 输出方式此时,自动作为信号输出端,则自动作为信号输入端,而自动作为INTR 信号输出端打印机接口需要一个数据选通信号,故由CPU 控制PCO 来产生选通脉冲在此没有用, 第 - 9 - 页 共 10 页将它悬空就行了端连接打印机端图 5.24 8255A 作中断方式打印机接口连到8259A 的中断请求信号输入端 8259A 工作在单片、全嵌套方式、上升沿请求中断、一般中断结束方式、非缓冲、中断类型码08H设 8255A 的端口地址为:A 端口 ―――00COHB 端口 ―――00C2HC 端口 ―――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,即让初始状态为低电平OUT   0C6H, AL ; C 端口置1/置 0 控制字MOV   AL, 0DH ;使INTE( C 口位)为l,允许8255A 请求中断OUT   0C6H, AL ; C 端口置1/置 0 控制字;以下8259A 初始化程序MOV   AL, 00010011B ;:上升沿请求中断、单片OUT   50H,AL ;写入偶端口MOV   AL,08H ;中断类型码08HOUT   52H,AL ;写入奇端口 第 - 10 - 页 共 10 页MOV   AL, ;非特殊全嵌套、非自动中断结束方式、非缓冲OUT   52H,AL ;写入奇端口MOV   AL,11110111B ;清除中断屏蔽OUT   52H,AL ;写入奇端口;以下中断服务初始化XOR AX, AXMOV DS, AX ; DS 指到0 段,中断向量表在0 段LEA AX,INTPR ;取中断服务程序偏移地址MOV WORD PTR[0BH*4], AX ;中断类型号为0BH,写入的地址为0BH×4MOV AX, SEG INTPR ;取中断服务程序段地址MOV WORD PTR [0BH*4+2], AX ;写向量高字STI ;使IF 为 1,开放中断;以下主程序MAIN:JMP   MAIN;以下中断服务程序INTPR: MOV AL, [DI]; DI 为打印字符缓冲区指针,取字符数据INC DIOUT 0COH, AL ;字符送A 端口MOV AL,0 ;使为 0,产生选通信号负脉冲OUT 0C6H, AL ; C 端口置1/置 0 控制字INC AL ;使为 1,撤消选通信号OUT 0C6H, AL ; C 端口置1/置 0 控制字MOV AL, 20H ; EOI 命令OUT 50H , AL ;命令写入偶端口IRET ;中断返回 。

下载提示
相似文档
正为您匹配相似的精品文档