第七章中断与中断控制习题选解Word格式.docx

上传人:b****4 文档编号:17984574 上传时间:2022-12-12 格式:DOCX 页数:8 大小:20.94KB
下载 相关 举报
第七章中断与中断控制习题选解Word格式.docx_第1页
第1页 / 共8页
第七章中断与中断控制习题选解Word格式.docx_第2页
第2页 / 共8页
第七章中断与中断控制习题选解Word格式.docx_第3页
第3页 / 共8页
第七章中断与中断控制习题选解Word格式.docx_第4页
第4页 / 共8页
第七章中断与中断控制习题选解Word格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

第七章中断与中断控制习题选解Word格式.docx

《第七章中断与中断控制习题选解Word格式.docx》由会员分享,可在线阅读,更多相关《第七章中断与中断控制习题选解Word格式.docx(8页珍藏版)》请在冰豆网上搜索。

第七章中断与中断控制习题选解Word格式.docx

7.12某80X86系统中设置三片8259A级联使用,一片为主,两片为从,从片分别接人主片的IR2和IR4。

若已知当前主8259A和从8259A的IR5上各接有一个外部中断源,其中断向量号分别为75H,85H,95H。

假设它们的中断入口地址均在同一段中,段基址为4310H,偏移地址分别为1230H,2340H,3450H;

所有中断都采用边沿触发方式、全嵌套方式、正常EOI结束方式。

(1)试画出该系统的硬件连线图;

(2)试编写全部初始化程序。

(1)此题硬件连线要考虑各8259A与CPU的连接,还要考虑三片8259A间的级联连接。

8259A与CPU连接的方法是:

①端口选择线与一般与MPU低位地址线A0直接相连,也可与其他Ai相连。

②数据线D0~D7与MPU数据线D0~D7直接相连。

③片选线CS与余下MPU高位地址线经译码后产生的片选信号相连。

WR、INTR分别与控制总线组合形成的IOR、IOW和中断响应信号INTR相④RD、

连。

⑤主片的INT与MPU的INTR直接相连。

8259A级联连接方法是:

①从片的INT与主片的某个IRi直接相连。

②主片的CAS2~CAS0与各从片的CAS2~CAS0直接相连。

③SP/EN则取决于是采用缓冲还是非缓冲方式。

本题采用非缓冲方式,主片SP/EN接+5V,从片SP/EN接地。

由此画出硬件连线图,如图7.3所示。

(2)初始化程序应包括两部分内容,即主、从片的初始化和填写相关中断向量表。

对主片编程时要注意。

在多片级联方式下,系统要工作在完全嵌套方式,主片必须设置为特殊全嵌套方式,以便同级中断能打断同级中断。

因为在多片级联方式下,从片的8个中断源是共用主片的一个中断级,而实际上从片的8个中断源也有优先级区别。

假定当前正在服务的中断级是从片的某个中断级,若当CPU正在为该中断源服务时,该从片又向主片提出中断请求,此时对主片而言是同一级中断请求,但对从片来说却是出现了一个高优先级中断请求,应该优先处理,

假定主片、从片1、从片2地址分别为:

PORT00.PORT01,PORT10,PORT1l,PORT20,PORT21,程序段如下:

:

初始化8259A主片

MOVAL,11H;

写ICW1边沿触发、多片级联、写ICW4OUTPORT00,AL

MOVAL,70H;

写ICW2,主片中断向断号为70H---78HOUTPORT01.AL

MOVAL.,000l0l00B;

写ICW3,IR2,IR4,接有从片OUTPORT01.AL

MOVAL,***-*****B;

写ICW4特殊全嵌套、非缓冲、正常EOIOUTPORT01,AL

MOVAL,OFFH;

用OCW1屏蔽所有中断请求OUTPORT01,AL;

初始化8259A从片1

MOVAL,11H;

写ICW1,边沿触发、多片级联、写ICW4

OUTPORT11,AL

MOVAL.,01.H;

写ICW2,从片1中断向量号为80H-87HOUTPORT11,AL

MOVAL,02H;

写ICW3.对应主片IRi的编码为010

OUTPORT11.,AL

MOVAL,01H;

写ICW4,一般全嵌套、非缓冲、正常EOIOUTPORT11,AL

MOVAL,0FFH;

用OCW1屏蔽所有中断请求OUTPORT11.AL;

初始化8259A从片2

MUVAL,11H;

写ICW1。

边沿触发、多片级联、写ICW4OUTPORT20,AL

MOVAL.90H;

写ICW2。

从片2中断向量号为90H~97HOUTPORT21.AL

MOVAL,04HDUTPORT21,ALMOVA.L,01HOUTPORT21,ALMOVAL.0FFH

OUTPORT21,AL;

填写T5H,85H和95H号中断向址

SUBDI、DI;

ES指向中断向量表段基址MOVES,DICLD

MOVDI,75H*4;

75H号中断向量地址MOVAX,1230H;

中断处理程序偏移地址STOSW

MOVAx,4310H;

中断处理程序段基址STOSW

MOVDI.,85H*4;

初始化85H号中断向量MOVAX.2340HSTOWS

MOVAx.4310H

STOSW

MOVDI,95H*4;

初始化95H号中断向量

MOVAX,3450HSTOWS

MOVAx.4310H

MOVAL.00H;

用OCW1开放主片所有中断请求OUTPORT01H.AL

OUTPORT11H,AL;

用OCW1开放从片所有中断请求

OUT*****,AL

7.13某8085/8088系统中,若8259A处于单片、全嵌套工作方式.且采用非特殊屏蔽和非特殊结束方式,中断请求信号是边沿触发。

IR0的中断类型码为58H。

试对8259A初始化编程。

此题无需写ICW3。

其他控制字及位取值如下:

(1)ICW1=xxx10x11,即:

中断请求为边沿触发、单片8259A,写ICW4

(2)ICW2=01011xxx,即:

此片8259A中断类型码高5位为01011(3)ICW4=00000xO1,即:

一般嵌套、非缓冲、正常EOI,8086/8088模式。

假定控制字中的x固定为0,初始化程序如下:

MOVDX,xxxxxxx0B;

指向端口0MOVAL,13H;

中断请求为边沿触发、单片8259A、写ICW4OUTDX,AL;

写ICW1INCDX;

指向端口1

MOVAL,58H;

写ICW2

MOVAL,O1H;

一般嵌套、非缓冲、正常EOI,8086模式OUTDX,AL;

7.14分别列出下列情况下应向8259A提供的操作命令字:

(1)读中断请求寄存器IRR;

(2)读中断屏蔽寄存器IMR;

(3)读中断服务寄存器ISR;

(4)向8259A发中断结束命令EOIo。

(1)应先对0端口写OCW3(读IRR命令字),再通过读0端口获得IRR值,读IRR命令字为***-*****B,指令序列为:

MOVAL,***-*****B;

读IRR命令字

OUTxxxxxxx0B,AL;

写OCW3(读IRR命令字)INAL,xxxxxxx0B;

读IRR

(2)无需发操作命令字,直接对1端口读操作:

INAL,xxxxxxx1B;

读IMR

(3)应先对0端口写OCW3(读ISR命令字),再通过读。

端口获得ISR值,读ISR命令字为***-*****B,指令序列为:

读ISR命令字

OUTxxxxxxx0B,AL;

写OCW3(读ISR命令字)INAL,xxxxxxx0B;

读ISR(4)有四种中断结束命令EOI,由写OCW:

设置。

非特殊EOI命令:

***-*****B;

特殊EOI命令:

01100L2L1L0B;

自动循环EOI命令:

特殊循环EOI命令:

*****L2L1L0B

7.16若一PC/AT应用系统中有5个故障源A,B,C,D,E,当任一个源变为低电平时,则有故障要处理。

它们的优先权顺序是从A到E依次降低,处理程序的人口地址分别为8000H,S100H,8200H,8300H和8400H。

现只有IRQ2可用,试按查询式中断识别与判优方案设计该中断系统,包括硬件设计和软件编程。

按查询式中断识别与判优方案设计的中断系统如图7.4所示。

5个故障源A,B,C,D,E通过与非门与IRQ2相连。

即任一个源变为低电平时通过IRQ2向CPU发中断请求,在中断服务程序中通过读取三态缓冲器来识别故障源,并通过读端口控制信号复位中断谓求.程序如下:

DATA*****

BASEDW8000H,0000H;

故障源A处理程序的人口地址CS:

IPDW8100H,0000H;

故障源B处理程序的入口地址CS:

IPDW8200H,0000H;

故障源C处理程序的人口地址CS:

IPDW8300H,0000H:

;

故障源D处理程序的人A地址CS:

IPDW8400H.0000H;

故障源E处理程序的人口地址CS:

IPDATAENDSCODE*****

ASSUMECS:

CODE,DS:

DATASTART:

MOVAx,DATA

MOVDS.Ax

CLI;

关中断

MOVDI,0AH*.4;

取IRQ2的中断向量地址CLD

XORAx,Ax

MOVES,Ax;

ES指向中断向量表段基址MOVAx,OFFSETINT_ROUT;

填写中断向量的偏移地址STOSW

MOVAx,SEGINT_ROUT;

填写中断向量的段基址STOSW

STI;

开中断;

其他处理MOVAH,4CH;

中断服务程序INT21H

INT_ROUTPROC:

PUSHAx;

保护现场PUSHBx

开中断

LEABx.BASE;

指向故障源A中断处理程序地址INAL,20H;

读状态寄存器

NOTAL;

取反.将低电平变为高电平ANDAL,0F8H

WAITl:

TESTAL,OFFH;

有末处理中断?

JZRETURN;

无中断返回

SHLAL.,1;

有故障JNCNEXT;

无,跳过

CALL.DWORDPRT[BX];

转相应故障源中断处理NEXT:

ADDBx,4;

指向下一故降源中断处理程序地址JMPWAIT1

RETURN:

关中断POPBX:

恢复现场POPAx

开中断IRETINT_ROUTENDP

CODEENDS

ENDSTART7.17试编写一个基于查询式中断识别与判优方案的中断程序,该程序控制8台设备,假定状态寄存器地址为044DH,其最低位优先级最高,最高位优先级最低:

某位置\表示相应的设备有服务请求。

同时假定已定义一个地址数组ADDR_TAB,数组中的第i个元素提供第i台设备的中断处理程序人口地址的偏移量

基于查询式中断识别与判优的中断程序如下:

INT_PROCPRDC

PUSHAX;

保护现场

PUSHBx

MOVBX,0;

指向第0台设备中断处理程序地址INAL,40H;

状态寄存器WAIT$:

TESTAL.0FFH;

有未处理中断?

SHLAL,1;

第i台设备有中断?

JNCNEXT;

CALLADDR_TAB[.BX];

转第i台设备中断处理

NEXT:

ADDBX,2;

指向下一台设备中断处理程序地址JMPWAIT$

RETURN:

关中断POPBX;

恢复现场POPAX

IRETINT_PROCENDP

7.18假设起始地址的标号为INT_RDUT的9型中断例程与主程序处于相同的源模块中.试为主程序编写装填中断向量表的程序段。

装填中断向量表可用DOS的25H号功能调用,亦可用MOV指令或串操作指令直接对中断向量表进行写操实现。

用DOS的25H号功能调用。

程序段如下:

PUSHDS

MOVDX.OFFSETINT_ROUT;

取中断向量的偏移地址送DXMOVAX.SEGINT_ROUT;

取中断向盘的段基址送DSMOVDS,AX

MOVAH,25H;

取DOS的功能调用号送AHMOVAL,09H;

取中断类型码送AL

INT2IH;

调25H号功能调用填写中断向量POPDS

用串操作指令填写.程序段如下:

PUSHES

MOVDI.09H*4:

取9型中断的中断向量地址

CLD

MOVES,Ax;

ES指向中断向量表段基址0000HMOVAX,OFFSETINT_ROUT;

填写中断向里的偏移地址

STOSWMTVAx,SEGINT_ROUT;

填写中断向量的段基址STOSWSTI;

开中断POPES

7.19假设某*****系统工作在实地址方式。

已知(SP)=0100H,(5)=0300H,(FLAGS)=0240H,00020DH至00023H单元的内容分别是40H.00H.00H.01H。

同时还已知INT8的偏移量00A0H在段基址为0900H的CS段内。

试指出在执行IN几指令并进人该指令相应的中断服务程序时.SP,SS,IP,CS,FLAGS和堆栈最顶端三个字的内容。

由题意可知:

INT8指令的地址为0900H:

00A0H;

IN几中断服务程序的人口地址为0100H:

0040H。

CPU执行INT8指令时。

先保存FLAGS,CS:

IP值至堆栈,并清除FLAGS中的1F和TF位,进而改变CS:

IP值转入中断服务程序。

由此可得CPU在执行INT8指令并进人该指

令相应的中断服务程序时各寄存器和存储器单元值如下:

(SP)=(SP)-6=0100H-6=00FAH,(SS)=0300H;

(CS:

IP)为中断服务程序人口地址:

(IP)=0040H.(CS)=0100H;

FLAGS中IF=TF=0,即FLAGS9=FLAGS8=0。

所以:

(FLAGS)=0040H:

堆栈最顶端三个字的内容为:

(00FEH)=0240H;

FLAGS值(00FCH)=0900H;

断点CS值

(00FA00H)=00A0H:

断点IP值

7.20讨论在80X86系统的调试应用中.INT3指令和单步自陷所产生的中断差别,指出其应用场合。

INT3指令产生的是断点中断,即程序运行遇到断点(INT3指令)时才暂停.转去执行断点处理程序,主要用于在程序连续运行方式下设置断点调试程序;

而单步自陷则使程序进人单步运行方式。

即每执行一条指令,程序运行都会暂停,转去执行单步处理程序,用于单步运行调试程序。

7.21若80X86系统正以单步方式运行某用户程序(该程序己开放外部中断,即IF=1)的过程中执行一条除法指令时,1NTR线上出现了可屏蔽中断请求,与此同时.这条除法指令也产生了除法出错中断。

试以流程图表示CPU处理这三种同时出现的中断的过程。

中断过程如图7.5所示。

CPU先响应除法出错中断.再响应INTR中断,处理完毕返回单步运行的用户程序。

7.22试编写出只有一片8259A的8088系统中8259A的初始化程序.8259A的地址为02C0H和02C1H,要求:

(1)中断请求物人采用电平触发;

(2)IR0请求的中断类型码为16(3)采用缓冲方式;

(4)采用普通的EOI命令。

初始化程序如下:

MOVDX,02C0H;

端口0

中断请求为电平触发、单片8259A、写ICW4OUTDX,AL;

写ICW1INCDX;

中断类型码高5位为:

00010OUTDX,AL;

MOVAL.,***-*****B;

一般嵌套、级冲、正常EOI,8086模式

OUTDX,AL;

写ICW47.23

IR?

6试编写一段使

I7R?

08259A

2的优先级顺序从高到低依次为

3I?

R1?

IR?

IR的程序。

假定CPU?

IRI为R8288,8259A的4偶地址为20H.奇地址为21H,且当前优先级为;

(1)IR0;

(2)IR3。

用特殊循环优先级设置命令指定最低优先级,设置方法与当前优先级无关。

所以

(1)和

(2)均用下述指令完成:

MOVAL,***-*****B:

IR5为最低优先级

OUT20H,AL;

写特殊循环优先级设置命令

7.24试编写一段将8259A中的IRR,ISR和IMR的内容传送至存储器中从REG_ARR开始的数组中去的程序,假定CPU为80X86,8259A的偶地址为50H,奇地址为51H。

程序如下:

MOVDx,50H;

指向端口0MOVAL.AL,***-*****B:

OUTDx.AL;

写OCW3(读IRR命令字)INAL.Dx;

读IRRMOVREG_ARR,AL

MOVAL,***-*****B;

OUTDx.AL;

写OCW3(读ISR命令字)INAL,DX:

读ISRMOVREG_ARR,AL.INC:

DX;

指向端口1INAL.Dx;

读IMRMOVREG_ARR,AL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1