中断服务程序的编写.ppt

上传人:za****8 文档编号:3180001 上传时间:2019-12-06 格式:PPT 页数:48 大小:602.51KB
返回 下载 相关 举报
中断服务程序的编写.ppt_第1页
第1页 / 共48页
中断服务程序的编写.ppt_第2页
第2页 / 共48页
中断服务程序的编写.ppt_第3页
第3页 / 共48页
点击查看更多>>
资源描述
7.2内部中断服务程序,编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量利用INTn指令调用中断服务程序,例7.1内部中断服务程序,编写80H号中断服务程序功能:显示以“0”结尾字符串的功能利用显示器功能调用INT10H字符串缓冲区首地址为入口参数DS:DX(段地址:偏移地址)传递参数,数据段,intoffdw?intsegdw?intmsgdbAInstructionInterrupt!db0dh,0ah,0,例7.1,以“0”结尾,回车、换行,保存中断向量,movax,3580hint21hmovintoff,bx;保存偏移地址movintseg,es;保存段基地址,例7.1,获取中断向量(DOS功能调用INT21H)功能号:AH35H入口参数:AL中断向量号出口参数:ES:BX中断向量(段地址:偏移地址),设置中断向量,pushdsmovdx,offsetnew80hmovax,segnew80hmovds,axmovax,2580hint21hpopds,例7.1,设置中断向量(DOS功能调用INT21H)功能号:AH25H入口参数:AL中断向量号DS:DX中断向量(段地址:偏移地址),调用中断服务程序,;设置入口参数:DS段地址(已设置)DX偏移地址movdx,offsetintmsgint80h;调用80H中断服务程序,例7.1,AInstructionInterrupt!,;80H号内部中断服务程序:;显示字符串(以“0”结尾);入口参数:DS:DX缓冲器首地址new80hprocsti;开中断pushax;保护寄存器pushbxpushsi,例7.1,进入中断服务程序,AInstructionInterrupt!,显示字符串,movsi,dxnew1:moval,sicmpal,0jznew2movbx,0movah,0ehint10hincsijmpnew1,例7.1,AInstructionInterrupt!,退出中断服务程序,new2:popsi;恢复寄存器popbxpopaxiret;中断返回new80hendp,例7.1,AInstructionInterrupt!,主程序结束,movdx,intoffmovax,intsegmovds,axmovax,2580hint21hmovax,4c00hint21h,例7.1,AInstructionInterrupt!,7.38259A中断控制器,Intel8259A是可编程中断控制器PIC可用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中断8259A的基本功能一片8259A可以管理8级中断,可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的中断向量号8259A设计有多种工作方式,可通过编程选择,初始化主片8259A,moval,11h;写入ICW1out20h,aljmpintr1intr1:moval,08h;写入ICW2out21h,aljmpintr2intr2:moval,04h;写入ICW3out21h,aljmpintr3intr3:moval,1h;写入ICW4out21h,al,中断控制器的初始化程序段,初始化从片8259A,moval,11h;写入ICW1out0a0h,aljmpintr5intr5:moval,70h;写入ICW2out0a1h,aljmpintr6intr6:moval,02h;写入ICW3out0a1h,aljmpintr7intr7:moval,01h;写入ICW4out0a1h,al,中断控制器的初始化程序段,2.操作命令字OCW,8259A工作期间,可以随时接受操作命令字OCWOCW共有3个:OCW1OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCW,OCW1,屏蔽命令字内容写入中断屏蔽寄存器IMRDiMi对应IRi,为1禁止IRi中断;为0允许IRi中断。各位互相独立。,OCW2,R、SL和EOI配合使用产生中断结束EOI命令和改变优先权顺序,L2L0的3位编码指定IR引脚,7.5外部中断服务程序,编写外部可屏蔽中断服务程序,需注意:发送中断结束命令一般只能采用存储单元传递参数不要使用DOS系统功能调用中断服务程序尽量短小,7.5外部中断服务程序(续),编写主程序,需注意:修改中断向量控制CPU的中断允许标志设置8259A的中断屏蔽寄存器,例题7.2可屏蔽中断服务程序,8259A的IRQ0(向量号为08H)中断请求来自定时器8253,每隔55ms产生一次本程序的08H号中断服务程序,每次中断显示一串信息,显示10次用内存单元(共享变量)在主程序与外部中断服务程序之间传递参数:中断次数显示信息也安排在共同的数据段中,数据段,intmsgdbA8259AInterrupt!db0dh,0ah,0counterdb0,例7.2,保存中断向量,movax,3508hint21hpushbx;保存偏移地址pushes;保存段基地址,例7.2,设置中断向量,clipushdsmovdx,offsetnew08hmovax,segnew08hmovds,axmovax,2508hint21hpopds,例7.2,设置中断寄存器,inal,21hpushaxandal,0feh;允许IRQ0out21h,almovcounter,0;设置中断次数初值sti;开中断,例7.2,循环等待中断,start1:cmpcounter,10jbstart1;中断10次退出,例7.2,中断就在主程序循环当中,new08hprocsti;开中断pushax;保护寄存器pushbxpushdsmovax,datamovds,ax;设置数据段DS,例7.2,进入中断服务程序,中断处理,inccountermovsi,offsetintmsg;显示信息calldpstri,例7.2,显示字符串,dpstriproc;显示字符串子程序pushaxpushbxdps1:lodsbcmpal,0jzdps2,例7.2,显示字符串(续),movbx,0movah,0ehint10hjmpdps1dps2:popbxpopaxretdpstriendp,例7.2,退出中断服务程序,moval,20hout20h,alpopds;恢复寄存器popbxpopaxiret;中断返回new08hendp,例7.2,主程序结束,clipopaxout21h,alpopdxpopdsmovax,2508hint21hstimovax,4c00hint21h,例7.2,A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!A8259AInterrupt!,7.6驻留中断服务程序,驻留TSR(TerminateandStayResident)程序用户程序运行后仍然保存在主存中,可以让其他程序使用利用DOS功能调用31H代替4CH终止程序小型驻留程序常编写成COM程序驻留程序也可以编写成EXE程序需要驻留内存的程序段要写在前面,例题7.3报时中断驻留服务程序,系统08H号中断服务程序调用1CH中断每隔55ms调用这个报时中断,中断65543次就是时间过了一个小时本例编写一个驻留内存的1CH内部中断服务程序实现每过一小时就显示信息执行此程序后,报时中断服务程序将驻留内存,new1chprocsti;开中断pushsi;保护寄存器pushdsmovsi,csmovds,si;设置数据段DSaddcountl,1adccounth,0,例7.3,进入中断服务程序,中断处理,cmpcountl,hourljnzn1ch1cmpcounth,hourhjnzn1ch1movcountl,0movcounth,0movsi,offsetintmsgcalldpstri,例7.3,退出中断服务程序,n1ch1:popds;恢复寄存器popsiiret;中断返回countldw0counthdw0intmsgdbOneHourHasPassed!db0dh,0ah,0new1chendp,例7.3,OneHourHasPassed!,显示字符串,dpstriproc;显示字符串子程序pushaxpushbxdps1:lodsbcmpal,0jzdps2,例7.3,显示字符串(续),movbx,0movah,0ehint10hjmpdps1dps2:popbxpopaxretdpstriendp,例7.3,主程序开始,start:movax,csmovds,axmovdx,offsetnew1chclimovax,251chint21hstimovdx,offsettsrmsgmovah,09hint21h,例7.3,主程序结束,movdx,offsetstartadddx,15movcl,4shrdx,cladddx,10hmovax,3100h;程序驻留int21htsrmsgdbINT1CHProgramInstalled!db0dh,0ah,$endstart,例7.3,INT1CHProgramInstalled!,第7章教学要求,1.熟悉8088的中断类型、中断响应过程、中断向量表2.掌握内部中断服务程序的编写3.理解8259A的内部结构、寄存器作用、中断过程4.掌握8259A的普通全嵌套优先权、普通中断结束、边沿触发方式,第7章教学要求(续),5.了解的8259A的ICW和OCW,注意命令字和状态字的区别方法6.了解8259A在IBMPC系列机上的应用情况7.掌握外部中断服务程序的编写习题7(第189页)7.47.69.99.119.13,实验2中断实验,不用实验台,实现例题程序例7.1内部中断服务程序例7.2可屏蔽中断服务程序例7.3驻留中断服务程序然后,按照实验要求进行,提示,返回,8088的中断向量表,返回,8259级联工作示意图,返回,8259工作示意图,返回,8259A芯片的初始化流程,返回,8087中断请求RAM奇偶错I/O通道检查错,NMI屏蔽寄存器屏蔽位,8253定时器键盘未用异步通信卡(辅)异步通信卡(主)硬盘软盘并行打印机,NMI,INTR,01234567,优先级,8088CPU,8259A,I/O通道,返回,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!