中断服务程序的编写.ppt

上传人:牧羊曲112 文档编号:6219832 上传时间:2023-10-06 格式:PPT 页数:48 大小:516.50KB
返回 下载 相关 举报
中断服务程序的编写.ppt_第1页
第1页 / 共48页
中断服务程序的编写.ppt_第2页
第2页 / 共48页
中断服务程序的编写.ppt_第3页
第3页 / 共48页
中断服务程序的编写.ppt_第4页
第4页 / 共48页
中断服务程序的编写.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《中断服务程序的编写.ppt》由会员分享,可在线阅读,更多相关《中断服务程序的编写.ppt(48页珍藏版)》请在三一办公上搜索。

1、7.2 内部中断服务程序,编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量利用INT n指令调用中断服务程序,例7.1 内部中断服务程序,编写80H号中断服务程序功能:显示以“0”结尾字符串的功能利用显示器功能调用INT 10H字符串缓冲区首地址为入口参数DS:DX(段地址:偏移地址)传递参数,数据段,intoffdw?intsegdw?intmsgdb A Instruction Interrupt!db 0dh,0ah,0,例7.1,以“

2、0”结尾,回车、换行,保存中断向量,mov ax,3580hint 21hmov intoff,bx;保存偏移地址mov intseg,es;保存段基地址,例7.1,获取中断向量(DOS功能调用INT 21H)功能号:AH35H入口参数:AL中断向量号出口参数:ES:BX中断向量(段地址:偏移地址),设置中断向量,push dsmov dx,offset new80hmov ax,seg new80hmov ds,axmov ax,2580hint 21hpop ds,例7.1,设置中断向量(DOS功能调用INT 21H)功能号:AH25H入口参数:AL中断向量号DS:DX中断向量(段地址:偏

3、移地址),调用中断服务程序,;设置入口参数:DS段地址(已设置)DX偏移地址mov dx,offset intmsgint 80h;调用80H中断服务程序,例7.1,A Instruction Interrupt!,;80H号内部中断服务程序:;显示字符串(以“0”结尾);入口参数:DS:DX缓冲器首地址new80hprocsti;开中断push ax;保护寄存器push bxpush si,例7.1,进入中断服务程序,A Instruction Interrupt!,显示字符串,mov si,dxnew1:mov al,sicmp al,0jz new2mov bx,0mov ah,0ehi

4、nt 10hinc sijmp new1,例7.1,A Instruction Interrupt!,退出中断服务程序,new2:pop si;恢复寄存器pop bxpop axiret;中断返回new80hendp,例7.1,A Instruction Interrupt!,主程序结束,mov dx,intoffmov ax,intsegmov ds,axmov ax,2580hint 21hmov ax,4c00hint 21h,例7.1,A Instruction Interrupt!,7.3 8259A中断控制器,Intel 8259A是可编程中断控制器PIC可用于管理Intel 80

5、80/8085、8086/8088、80286/80386的可屏蔽中断8259A的基本功能一片8259A可以管理8级中断,可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的中断向量号8259A设计有多种工作方式,可通过编程选择,初始化主片8259A,mov al,11h;写入ICW1out 20h,aljmp intr1intr1:mov al,08h;写入ICW2out 21h,aljmp intr2intr2:mov al,04h;写入ICW3out 21h,aljmp intr3intr3:mov al,1h;写入ICW4out 21h,al,中断控制器的初始化程序

6、段,初始化从片8259A,mov al,11h;写入ICW1out 0a0h,aljmp intr5intr5:mov al,70h;写入ICW2out 0a1h,aljmp intr6intr6:mov al,02h;写入ICW3out 0a1h,aljmp intr7intr7:mov al,01h;写入ICW4out 0a1h,al,中断控制器的初始化程序段,2.操作命令字OCW,8259A工作期间,可以随时接受操作命令字OCWOCW共有3个:OCW1OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCW,OCW1,屏蔽命令字内容写入中断屏蔽寄存器IMRDiMi对应IRi,为1禁止I

7、Ri中断;为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号中断服务程序,每次中断显示一串信息,显示

8、10次用内存单元(共享变量)在主程序与外部中断服务程序之间传递参数:中断次数显示信息也安排在共同的数据段中,数据段,intmsgdb A 8259A Interrupt!db 0dh,0ah,0counterdb 0,例7.2,保存中断向量,mov ax,3508hint 21hpush bx;保存偏移地址push es;保存段基地址,例7.2,设置中断向量,clipush dsmov dx,offset new08hmov ax,seg new08hmov ds,axmov ax,2508hint 21hpop ds,例7.2,设置中断寄存器,in al,21hpush axand al,0

9、feh;允许IRQ0out 21h,almov counter,0;设置中断次数初值sti;开中断,例7.2,循环等待中断,start1:cmp counter,10jb start1;中断10次退出,例7.2,中断就在主程序循环当中,new08hprocsti;开中断push ax;保护寄存器push bxpush dsmov ax,datamov ds,ax;设置数据段DS,例7.2,进入中断服务程序,中断处理,inc countermov si,offset intmsg;显示信息call dpstri,例7.2,显示字符串,dpstriproc;显示字符串子程序push axpush

10、bxdps1:lodsbcmp al,0jz dps2,例7.2,显示字符串(续),mov bx,0mov ah,0ehint 10hjmp dps1dps2:pop bxpop axretdpstriendp,例7.2,退出中断服务程序,mov al,20hout 20h,alpop ds;恢复寄存器pop bxpop axiret;中断返回new08hendp,例7.2,主程序结束,clipop axout 21h,alpop dxpop dsmov ax,2508hint 21hstimov ax,4c00hint 21h,例7.2,A 8259A Interrupt!A 8259A I

11、nterrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!,7.6 驻留中断服务程序,驻留TSR(Terminate and Stay Resident)程序用户程序运行后仍然保存在主存中,可以让其他程序使用利用DOS功能调用31H代替4CH终止程序小型驻留程序常编写成COM程序驻留程序也可以编写成EXE程序需要驻留内存的程序段要写在前面,例题7.3

12、 报时中断驻留服务程序,系统08H号中断服务程序调用1CH中断每隔55ms调用这个报时中断,中断65543次就是时间过了一个小时本例编写一个驻留内存的1CH内部中断服务程序实现每过一小时就显示信息执行此程序后,报时中断服务程序将驻留内存,new1chprocsti;开中断push si;保护寄存器push dsmov si,csmov ds,si;设置数据段DSadd countl,1adc counth,0,例7.3,进入中断服务程序,中断处理,cmp countl,hourljnz n1ch1cmp counth,hourhjnz n1ch1mov countl,0mov counth,0

13、mov si,offset intmsgcall dpstri,例7.3,退出中断服务程序,n1ch1:pop ds;恢复寄存器pop siiret;中断返回countldw 0counthdw 0intmsgdb One Hour Has Passed!db 0dh,0ah,0new1chendp,例7.3,One Hour Has Passed!,显示字符串,dpstriproc;显示字符串子程序push axpush bxdps1:lodsbcmp al,0jz dps2,例7.3,显示字符串(续),mov bx,0mov ah,0ehint 10hjmp dps1dps2:pop bx

14、pop axretdpstriendp,例7.3,主程序开始,start:mov ax,csmov ds,axmov dx,offset new1chclimov ax,251chint 21hstimov dx,offset tsrmsgmov ah,09hint 21h,例7.3,主程序结束,mov dx,offset startadd dx,15mov cl,4shr dx,cladd dx,10hmov ax,3100h;程序驻留int 21htsrmsgdb INT 1CH Program Installed!db 0dh,0ah,$end start,例7.3,INT 1CH Pr

15、ogram Installed!,第7章教学要求,1.熟悉8088的中断类型、中断响应过程、中断向量表2.掌握内部中断服务程序的编写3.理解8259A的内部结构、寄存器作用、中断过程4.掌握8259A的普通全嵌套优先权、普通中断结束、边沿触发方式,第7章教学要求(续),5.了解的8259A的ICW和OCW,注意命令字和状态字的区别方法6.了解8259A在IBM PC系列机上的应用情况7.掌握外部中断服务程序的编写习题7(第189页)7.4 7.6 9.9 9.11 9.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通道,返回,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号