资源描述:
《微机原理第7章习题答案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、习题及解答1.列举中断的具体应用。要点:符合如下四种的均可(1)响应外部突发事件。(2)实时多任务调度。(3)实现外设与CPU的并行处理(4)分时多任务操作系统的基础。2.中断的分类方式及其关系。要点:可屏蔽屮断和不可屏蔽屮断内部中断和外部中断软件中断和硬件中断软件中断内部中断不可屏蔽中断硬件中断外部中断/内部中断可屏蔽3.中断向量表的功能时什么,8086/8088CPU如何对中断源识别并跳转到正确的中断服务程序入口?要点:中断向量表是存放中断服务程序入口地址的一个特定的内存区域,屮断号都与一个中断服务程序的入口地址相对应,实现中断处理程序
2、的直接跳转8086/8088cpu通过中断号标识中断源,外部中断的中断号山中断控制器(如8259a)提供,内部中断中断号和不可屏蔽中断号系统固定分配发生中断时:1)将标志寄存器、CS、TP内容压入堆栈。2)获取中断类型号n,生成中断向量表地址4杓。3)从中断向量表地址为4*n的存储单元中収出中断向量送入CS和1P,继而转去执行中断服务子程序。4.中断的一般处理流程包括那些步骤,分别完成什么功能?要点:中断处理的一般过程山中断请求、中断优先级判别、中断响应、现场保护、中断服务、现场恢复和中断返回构成。中断请求:发起中断信号中断判优:优先级判断
3、确定响应那个中断中断响应:通过中断屏蔽确定是否响应中断,回复中断响应信号现场保护:保存状态寄存器、地址寄存器和相关重要寄存器中断服务:中断处理程序现场恢复:恢复状态寄存器、地址寄存器和其他重要寄存器中断返回:跳转到断点5.8259A如何进行优先级管理?要点:全嵌套方式、特殊全嵌套方式和优先级自动循环方式,分别针对单片,级联和特殊情况下的应用6.设8259A的端口地址为80H和81H,用程序清除中断服务寄存器的ISR6。要点:MOVAL,66HOUT80H,AL;EOI二1;SL二1;R=0;L2L1L0二6;设置0CW21.2片8259A组
4、成的级联系统,设备A接在从片的IR0上,从片接在主片的IR4±,说明A设备发生中断到CPU响应的全过程。要点:1,A设备产生中断请求2,从片8259A进行优先级判断,如果IR0上的中断优先级高于当前从片的其它优先级,从片8259A响应屮断,向主片的IR4脚发起屮断请求3,主片8259A进行优先级判断,如果IR4上的中断请求优先级高于当前主片的其它优先级,则主片通过INT管脚向CPU发起屮断请求4,CPU接收到中断请求后,若允许中断,则向主片8259A发送两个INTA响应。在笫一个INTA周期,主8259A通过这CS0-3级联线,发出优先权最
5、高的从8259A设备标志代码IDO第二个INTA周期,与ID相一致的从8259A把中断向量号代码送上数据总线。5,进入中断服务程序处理6,屮断结束,CPU要发两次EOI命令,分别使主8259A和正在服务的从8259A结束执行中断操作。因为在中断响应周期,与主、从8259A相应的1SR都被置位。2.下列程序分别是8259A初始化程序和中断服务程序,分析程序并为每行程序加上注释。[注1:程序中标红色的地方有误,应该将OFFSET改为SEG:][注2:TNT21调用书上没有具体讲,该程序用到TNT21调用的25号功能][注3:中断服务程序中的OA
6、OH和20H分别为2片8259A的地址]INTIPROCFARPUSHDS;保存DSPUSHAX;保存AXPUSIDX;保存DXMOVDX,OFFSET1NT2;MOVAX,SEGINI'2;MOVDS,AX9MOVAL,78H9MOVAH,25H91NT2111fPOPDX9POPAX9POPDS9RET9获取屮断服务程序INT2的偏移量获取中断服务程序INT2的段地址AX=ds中断号dos调用功能号调用21号中断,设置中断向量中断向量地址为DS:DX恢复DX恢复AX恢复DS程序结朿INTIEDNP1NT2PROCFARPUSHAX;保存
7、AX;SI地址的内容加1;INC[SI]MOVAL,20H;AL二20HOUTOAOH,AL;AOH地址的8259A的ocw2寄存器结束中断OUT20H,AL;20H地址的8259A的ocw2W存器结束中断POPAX;恢复AXIRET;屮断返冋1NT2ENDP1.假定按键Key连接到单片8259A的IR3引脚,编程实现如下功能:1)按键高电平时产生中断请求,并在显示器上打印“IRQ-H”字符串和中断的次数。2)按键上升沿触发中断请求,在显示器上打印TRQ-L-H”和中断的次数。假设8259A地址为20H和21H,中断号为43HDATASEG
8、MENTSTRINGDB'IRQ-H',ODH,OAH,'$';上升沿STRINGDB,IRQ-L-H',ODH,OAH,'$'DATAENDSSTACKSEGMENTSTACK