- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 第5章 中断技术 (3) 如果要实现中断嵌套, 应该在中断服务程序入口处立即开中断 (使用STI指令)。 (4) 中断程序结束前必须发EOI命令和IRET指令。 如果是从片,则 服务程序结束前必须向主片和从片分别发EOI命令。 以下是运行在PC上的一个完整的中断处理程序。程序功能是,对输入 到IRQ7引脚的中断请求次数进行统计并显示, 计满9次后返回DOS操 作系统。 STACK SEGMENT STACK “STACK” DB 100 DUP(?) STACK ENDS DATA SEGMENT INT_SEG DW ? ;定义变量,以保存中断向量段址 INT_OFF DW ? ;定义变量,以保存中断向量偏移量 CNT DB ? ;保存中断次数 DATA ENDS * 第5章 中断技术 CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA ;以下为主程序 START: MOV AX,DATA MOV DS,AX MOV AL,0FH ;0FH为中断类型号(IR7对应的中断类型号) MOV AH,35H ;获取中断向量功能号 INT 21H ;调用后,中断向量段址在ES中,偏移量在BX中 MOV INT_SEG, ES ;保存原中断向量段址 MOV INT_OFF, BX ;保存原中断向量偏移量 CLI ;关中断 MOV AL,0FH ;中断类型号 MOV AH,25H ;设置中断向量功能号 MOV DX,SEG INT_PRO ; MOV DS, DX ;DS指向新中断向量段址 MOV DX,OFFSET INT_PRO ;DX指向新中断向量偏移量 INT 21H MOV AX,DATA ;恢复数据段寻址 * 第5章 中断技术 MOV DS,AX IN AL,21H ;解除IR7的屏蔽位 AND AL,7FH OUT 21H,AL MOV BL,0 ;计数器初值 MOV CNT,0 ;计数单元初值为0 L1: STI CMP CNT,BL ;比较判断,相同CPU循环等待 JZ L1 ;每产生一次中断,BL增1 MOV DL,BL ;准备调用显示功能 ADD DL,30H ;转换成ASCII码 MOV AH,2 INT 21H ;屏幕显示 MOV CNT,BL ;保存 CMP BL,9 JZ L2 ;计满9 次转移 JMP L1 L2: CLI ;恢复中断向量前关中断 * 第5章 中断技术
文档评论(0)