汇编语言程序设计董少明第6章I/O和中断传送方式课件教学.pptVIP

汇编语言程序设计董少明第6章I/O和中断传送方式课件教学.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编语言程序设计董少明第6章I/O和中断传送方式课件教学.ppt

汇编语言程序设计 第6章 I/O和中断传送方式 第6章 输入输出和中断 I/O传送方式 中断传送方式 小 结 CALL DISPCHAR MOV AL,0AH ;输出回车符 CALL DISPCHAR POP AX ;恢复现场 POP CX POP BX IRET NEWINT5 ENDP DISPCHAR PROC NEAR ;显示AL中字符子程序 PUSH BX MOV BX,0 MOV AH,0EH INT 10H POP BX RET DISPCHAR ENDP CODE ENDS END MAIN 从程序中可以看出,本程序是直接设置新中断向量来测试中断服务程序的功能,而程序退出后,由于操作系统释放本程序所占内存空间,将会造成其它程序调用50H号中断时可能产生不可确定的执行结果,这是本程序存在的缺陷。解决的方法为:可以在设置新中断向量之前保留原中断向量,本程序结束退出之前再恢复原中断向量;另一种方式为将本程序所设置的新中断服务功能驻留内存。这样才能够维持系统完整性。 例6-6 编写一个中断处理程序,要求在主程序运行过程中,每隔10秒响铃一次,同时在屏幕上显示出信息 “THE BELL IS RING!”。 在系统定时器(中断类型为8)的中断处理程序中,有一条中断指令INT 1CH,时钟中断每发生一次(约每秒中断18.2次)都要嵌套调用一次中断类型1CH的处理程序。在ROM BIOS例程中,1CH的处理程序只有一条IRET指令,实际上它并没有做任何工作,只是为用户提供了一个中断类型号。如果用户有某种定时周期性的工作需要完成,就可以利用系统定时器的中断间隔,用自己设计的处理程序来代替原有的1CH中断程序。 1CH作为用户使用的中断类型,可能已被其他功能的程序所引用,所以在编写新的中断程序时,应做下述工作: 1) 在主程序的初始化部分,先保存当前1CH的中断向量,再设置新的中断向量。 2) 在主程序的结束部分恢复保存的1CH中断向量。 DATA SEGMENT COUNT DW 1 MSG DB ‘THE BELL ISRINGING!’,0DH,0AH,‘$’ DATA ENDS STACK SEGMENT STACK DW 256 DUP ( ) STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,1CH MOV AH,35H INT 21H ;获取原1CH号中断的中断向量 PUSH ES ;保存原1CH号中断向量到堆栈 PUSH BX PUSH DS MOV DX,OFFSET RING MOV AX,SEG RING MOV DS,AX MOV AL,1CH MOV AH,25H INT 21H ;设置新1CH号中断的中断向量 POP DS CLI ;关中断,要对中断屏蔽寄存器操作 IN AL,21H ;读8259A中断屏蔽寄存器 的内容 AND AL ;开放实时时钟中断 OUT 21H,AL ;写回8259A中断屏蔽寄存器 STI ;开中断 MOV DI,20000 ;构造一个较长时间 的循环延时 DELAY: MOV SI,30000 ;以便于主程序能被 实时时钟中断 DELAY1: DEC SI JNZ DELAY1 DEC DI JNZ DELAY POP DX ;从堆栈恢复1CH号中断向量值

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档