




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中断程序设计 一 中断向量的保存 设置和恢复二 软中断程序设计三 可屏蔽硬中断程序设计四 问题讨论 一 中断向量的保存 设置和恢复 1 保存中断向量 35H功能 入口参数AL 要保存向量的中断类型号N功能号AH 35H类型号21H出口参数BX 0 N 4 ES 0 N 4 2 实现功能将类型号N的中断向量保存在ES BX中 方法一 用堆栈保存中断向量MOVAL 09H 取中断向量MOVAH 35HINT21HPUSHES 用堆栈保存PUSHBX 例1保存09H类型的中断向量 如何保存 ES BX 方法二 用变量保存中断向量save csDW 定义变量save ipDW MOVAX SEGsave csMOVDS AXMOVAL 09H 取中断向量MOVAH 35HINT21HMOVsave cs ES 用变量保存MOVsave ip BX 入口参数AL 要设置向量的中断类型号NDS DX 中断子程的入口地址 中断向量 功能号AH 25H类型号21H出口参数无实现功能将类型N的中断向量设置在向量表中 即 0 N 4 类型N中断子程入口地址的偏移值 0 N 4 2 类型N中断子程入口地址的段值 2 设置中断向量 25H功能 例2设置中断子程Sound的中断向量 类型号为60H codeSEGMENTASSUMECS codestart MOVAX SEGsoundMOVDS AXMOVDX OffsetsoundMOVAL 60HMOVAH 25HINT21H MOVAH 4CHINT21H 中断子程soundPROC IRETsoundENDPcodeENDSENDstart 二 软中断程序设计 软中断子程与子程序的编写类似 其不同点在于 1 子程用CALL指令调用 中断子程用INT指令调用2 子程用RET指令返回 中断子程用IRET指令返回3 CALL指令直接用过程名做操作数 即由过程名提供子程的入口地址INT指令由类型号N到中断向量表中固定的单元获得中断子程的入口地址 对比 软中断程序与子程序的编写其不同点在于 1 应在主程中将中断子程的入口地址 中断向量 放入中断向量表中 可用25H系统功能完成 2 主程中用INT指令调用中断子程3 中断子程应用IRET返回 例3 用子程编写和用一个60H类型的中断子程编写 功能是将BX寄存器的内容以16进制形式显示出来 listPROC 子程MOVCH 4MOVCL 4next ROLBX CLMOVDL BLANDDL 0FHADDDL 30HCMPDL 39HJLEprintADDDL 07Hprint MOVAH 2HINT21HDECCHJNZnextRET 子程返回listENDPcodeENDSENDstart codeSEGMENTASSUMECS codestart CALLlist 调用子程MOVAH 4CHINT21H 返回DOS 若用子程编写 codeSEGMENTASSUMECS codestart MOVAX SEGlist 用25H功能MOVDS AX 将中断子程listLEADX list 的入口地址MOVAL 60H 设置到MOVAH 25H 中断向量表中INT21HINT60H 调用中断子程MOVAH 4CHINT21H 返回DOS listPROC 中断子程listMOVCH 4MOVCL 4next ROLBX CLMOVDL BLANDDL 0FHADDDL 30HCMPDL 39HJLEprintADDDL 07Hprint MOVAH 2HINT21HDECCHJNZnextIRET 中断返回listENDPcodeENDSENDstart 用INT60H中断子程编写 三 可屏蔽硬中断程序设计 分三大步骤 1 了解IBMPC XT系统可屏蔽硬中断的响应过程 据连线确定外设中断申请对应的中断类型号 2 主程中做好外设发出中断申请 CPU能够响应的准备工作 3 编写可屏蔽硬中断子程 完成中断源请求的任务 1 了解IBMPC XT系统可屏蔽硬中断的响应过程 据连线确定外设中断申请对应的中断类型号 例接口的中断申请连IRQ3类型号0BH接口的中断申请连IRQ5类型号0DH IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7 CS 8259A A0 RD WR D0 D7 SP ENCA0CA1CA2GND IR0IR1IR2IR3IR4IR5IR6IR7 Vcc 5V 用于多片8259A级连情况 INTA INT 数据线 片选译码 20 3FH IOW A0 总线 IOR A5 A9 D0 D7 INTA INTR 08H09H0AH0BH0CH0DH0EH0FH 18 2Hz方波键盘 PC XT总线 在主程序中应做的工作 CPU关中断 用CLI置IF 0 保存原中断向量 用35H系统功能 设置中断向量 用25H系统功能 设置8259A的中断屏蔽字 使21H端口对应位为0 允许中断申请进入优先级裁决器 CPU开中断 用STI置IF 1 2 主程中做好外设发出中断申请 CPU能够响应的准备工作 准备工作做好后 此后若该级有中断申请 则CPU响应中断 执行相应类型的中断子程 主程在返回DOS前 应恢复原中断向量 用25H系统功能 8088 INTR 主板 IF 键盘 18 2Hz方波 8259A INT 中断屏蔽寄存器 键盘中断申请 IR1 IR2 IR7 IR0 当前中断服务寄存器 键盘接口 IRQ2 IRQ7 PC总线 外设接口 外设 08h09h0Ah 0Fh IBMPC XT微机可屏蔽中断响应过程示意图 处理中断源申请任务部分的编写与普通子程类似 在中断子程结束前 发中断结束命令清除8259A中ISR的记录 否则 响应一次中断后 同级中断和低级中断将被优先级裁决器屏蔽 用IRET中断返回指令返回主程被中断处 3 编写硬中断子程 完成中断源请求的任务 例4利用连接在8259AIR0上的时钟信号 编写具有定时功能程序 要求每隔5秒在屏蔽上显示一个字符 A 8088 INTR 主板 IF 18 2Hz方波 8259A INT 中断屏蔽寄存器 IR0 当前中断服务寄存器 08h 时钟信号连接在IR0上 申请的中断类型号为08H 时钟信号是一个频率为18 2HZ的方波信号 即每秒向8259A发出18 2次的中断申请 如果CPU响应该中断申请 则以每秒18 2次的频率执行08H类型的中断子程 分析 8088 8259A INTR IR0 18 2Hz方波信号 INT 中断申请的任务是每5秒显示一个字符 A 1秒执行18 2次 则5秒执行18 2 5 91次 只在执行到第91次时显示 A 其它不显示 在中断子程中用一个量来计数中断子程被执行的次数 即CPU响应IR0中断申请的次数 当达到91次 则显示 A 并将计数值清0 重新计数 其它情况只计数 不显示 A 中断子程的最后应发中断结束命令EOI codeSEGMENTASSUMECS codestart CLI 关中断MOVAL 08HMOVAH 35HINT21H 取系统08H类型中断向量PUSHES 用堆栈保存PUSHBXPUSHDSMOVDX OFFSETdisplay 设置08H类型中断向量MOVAX SEGdisplayMOVDS AXMOVAL 08HMOVAH 25HINT21HPOPDS 程序清单 INAL 21H 设置8259A中断屏蔽字 ANDAL 11111110B 允许IR0中断OUT21H ALMOVCX 0 置中断子程计数器初值为0STI CPU开中断MOVSI 8000H 用双重循环延时 w2 MOVDI 8000H 模拟CPU对其他任务的处理w1 DECDI DI SI的值可修改 控制主程执行时间JNZw1DECSIJNZw2POPDX 恢复系统08H类型中断向量POPDSMOVAL 08HMOVAH 25HINT21HMOVAH 4CH 返回DOSINT21H displayPROC 自编的08H类型中断子程PUSHAX 保护现场INCCX 执行中断子程一次 计数值加1CMPCX 91JNZexit 到91次了吗 未到跳转至exitMOVDL A 到 显示 A MOVAH 02INT21HMOVCX 0 清计数值为0 重新计时exit MOVAL 20H 发中断结束命令EOIOUT20H ALPOPAX 恢复现场IRET 中断返回displayENDPcodeENDSENDstart sys08PROC MOVAX 0040HMOVDS AX INT1CH MOVAL 20HOUT20H ALIRETsys08ENDP DOS系统提供的08H类型中断子程 sys1cPROCIRETsys1cENDP DOS系统提供的1CH类型中断子程 系统08H类型中断子程要点 进入子程后 修改了DS段寄存器的值 程序中调用了1CH类型中断子程 每执行一次08H中断子程 执行一次1CH中断子程 程序最后发中断结束命令EOI sys08PROC MOVAX 0040HMOVDS AX INT1CH MOVAL 20HOUT20H ALIRETsys08ENDP 1CH类型是软中断 按编写软中断子程方法编写 系统08H中断子程改变DS值 故 1CH中断子程用到定义的变量 须在子程中给DS赋值 1CH类型是软中断 不需要发中断结束命令 1CH类型是系统为用户保留的定时中断子程系统1CH中断子程只有一条中断返回语句 确保08H中断子程调用后能返回 用户可通过编写1CH中断子程实现具有定时功能的任务 sys1cPROCIRETsys1cENDP 例5编写09H类型的键盘中断子程 键盘接口 键盘 键盘中断申请 8259A IR1 INTA INT 8088 INTR INTA 60H端口 61H端口 8255A 应答信号 扫描码 辅助电路 主板 IR0 18 2Hz方波 说明 键盘接口通过8259A的IR1发中断申请 类型号09H 键盘接口对按下键和释放键都向8259A发出中断申请 即若CPU满足响应条件 对键盘上的一个按键操作 CPU将执行两次09H类型的中断子程 按下键一次 释放键一次CPU可从60H端口读取操作键的扫描码 每个键对应有一个扫描码由扫描码的D6 D0判断操作的是哪一个键 由扫描码的D7位判断是按下键 还释放键 D7 1 释放键 断码 D7 0 按下键 通码 键盘中断子程中应发中断结束命令 在IBMPC XT机上 从60H端口读取扫描码后 应向键盘接口 61H 置应答信号 使键盘接口为接收下一个按键的扫描码做好准备 不设应答信号 键盘接口不能正常工作 在286以上微机 读取扫描码后 可不置键盘应答 keyPROCINAL 60H 从60H端口读入扫描码PUSHAX 保存堆栈中INAL 61H 置键盘应答控制信号 ORAL 80H 先将61H端口的D7位置1OUT61H ALANDAL 7FH 再将61H端口的D7位置0OUT61H ALPOPAX 从堆栈中取出扫描码TESTAL 80H 检查扫描码的D7位JNZexit D7 1 表示释放键操作 转至出口 exit MOVAL 20H 发中断结束命令EOIOUT20H ALIRET 中断返回keyENDP IBMPC XT机上键盘中断子程的编写 keyPROCINAL 60H 从60H端口读入扫描码TESTAL 10000000B 检查扫描码的D7位JNZexit D7 1 表示释放键操作 转至出口 exit MOVAL 20H 发中断结束命令EOIOUT20H ALIRET 中断返回keyENDP 586机上键盘中断子程的编写 有关键盘 键盘通过键盘接口电路与计算机连接 键盘上的键有三种类型 字符键A Z 0 9等功能键F1 F12 PageUp等组合控制键Shift Ctrl Alt等 键盘上的每个键都有一个扫描码 据扫描码可确定操作的是哪个键 是按下键还是释放键 扫描码用一个字节表示 低7位是扫描码的数字编码 与键盘上的键一一对应 最高位D7位表示键的操作状态 当按下键时 D7 0 当释放键时 D7 1 键盘中断子程功能 09H类型中断子程 从键盘接口读取操作键的扫描码 将扫描码转换成字符码 大部分键的字符码为ASCII码 无ASCII码键 如组合键Shift Ctrl等 的字符码为0 将键的扫描码 字符码存放在键盘缓冲区 供其它有关键盘的中断子程应用 键盘接口对按下键和释放键均向计算机发出中断申请 如果中断响应条件满足 CPU转去执行键盘中断子程 键盘中断子程类型号为09H 例6 编写键盘中断子程 完成每操作键盘上任意键 屏幕上显示 HeLLo 主程序 键盘中断子程 CLI关中断 保存原09H中断向量 设置新09H中断向量 设置8259A的中断屏蔽字 允许IR1中断 开始 保存现场 开始 从60H端口读入扫描码 N 判断是否是按下键 Y 调09H功能显示字符串 Hello 发中断结束命令EOI 恢复现场 IRET中断返回 dataSEGMENTstringDB Hello 0ah 0dh dataENDScodeSEGMENTASSUMECS code DS datastart CLI 关中断 IF 0MOVAL 09HMOVAH 35HINT21H 取系统09H类型中断向量PUSHES 用堆栈保存PUSHBXPUSHDS 设置09H类型中断向量MOVDX OFFSETdisplayMOVAX SEGdisplayMOVDS AXMOVAL 09HMOVAH 25HINT21HPOPDS 程序清单 INAL 21H 设置8259A中断屏蔽字ANDAL 11111101B 允许IR1键盘中断OUT21H ALSTI 开中断 IF 1MOVSI 8000H 用双重循环延时w2 MOVDI 8000H 模拟CPU对其他任务的处理w1 DECDI DI SI的值可修改 控制主程执行时间JNZw1DECSIJNZw2POPDX 恢复系统09H类型中断向量POPDSMOVAL 09HMOVAH 25HINT21HMOVAH 4CH 返回DOSINT21H displayPROC 自编的09H类型中断子程PUSHAX 保存现场INAL 60H 读入字符扫描码TESTAL 80H 判断是否是按下键操作 JNZexitMOVAX data 是 显示 Hello MOVDS AXLEADX stringMOVAH 09INT21Hexit MOVAL 20H 发中断结束命令EOIOUT20H ALPOPAX 恢复现场IRET 中断返回displayENDPcodeENDSENDstart 四 问题讨论 中断嵌套问题 中断向量的保存 恢复问题 中断嵌套问题 1 嵌套的概念2 内中断引起的嵌套3 可屏蔽硬中断引起的嵌套4 可屏蔽硬中断嵌套的条件 CPU正在执行某一中断子程 又被其它中断源中断使CPU转去执行另一中断子程 这个过程叫中断嵌套 1 嵌套的概念 在中断子程中 用INT指令调用中断子程 引起了中断嵌套 这种嵌套就是内中断引起的嵌套 2 内中断引起的嵌套 CPU执行流程 中断子程序n1 中断子程序n2 INTn1 INTn2 内中断引起的嵌套不受IF和8259A的控制 嵌套的层次受限于堆栈的大小 在响应了某级可屏蔽硬中断后 又有新的可屏蔽中断申请发出 若满足响应条件 CPU转去执行另一个可屏蔽中断子程 3 可屏蔽硬中断引起的嵌套 可屏蔽硬中断引起的嵌套 受IF和8259A的控制 同时嵌套层次受堆栈容量的大小 CPU在执行中断子程过程中 有可屏蔽硬中断申请发出 即有可屏蔽硬中断源产生 中断子程开中断 即用STI指令使IF 1 因为CPU响应中断过程中 将IF标志清0 然后转去执行中断子程 故进入中断子程后 IF 0 即CPU允许响应可屏蔽中断 4 可屏蔽硬中断嵌套的条件 新的中断申请具有更高的优先权 即比8259A的当前服务寄存器ISR中记录的中断优先权高有两种可能 新的中断申请的确比当前中断的优先级高新的中断申请与当前中断的优先级同级或低级 但在当前中断子程中提前发了中断结束命令 使ISR中的相应位为0 在满足上述三个条件下 可引起可屏蔽硬中断的嵌套 例7在中断子程中未用STI来开中断 分析 CPU响应该中断后 IF标志被自动清0 由于子程中未开中断 IF仍为0 所以 不论子程在何处发EOI 均不会引起可屏蔽硬中断嵌套 例8中断子程中STI开中断 最后发EOI 分析 CPU响应IR2中断后 IF标志被自动清0子程开中断后 IF为1所以 在开中断后 CPU可响应优先权更高的中断申请引起可屏蔽中断嵌套 例9中断子程开中断 提前发EOI 结论 子程开中断后 CPU可响应优先权更高的中断申请 发EOI后 CPU可响应同级或低级的中断申请 例10中断子程中不发EOI 分析 CPU响应中断后 自动将ISR中的对应位置1 因中断子程未发EOI使ISR的相应位为0所以 即使CPU执行完该中断子程 该级或低级的中断申请将被8259A的优先级裁决器屏蔽 1 什么情况下应保存并恢复中断向量2 用变量保存和恢复中断向量 中断向量的保存 恢复问题 1 什么情况下应保存并恢复中断向量 对系统的08H类型定时中断 09H类型键盘中断 对系统保留给用户的软中断类型60 67H 对系统保留给用户用的软中断1CH 1BH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年乡村民宿运营中级面试题及应对策略
- 2025年中职文化课教师资格认证考试指南与技巧
- 生猪养殖过程质量监控方案
- 草原生态补奖的策略及实施路径
- 生猪养殖环境控制方案
- 智慧旅游综合解决方案
- 学科融合背景下数字绘本创编的教学探索
- 2025年虚拟现实在临床医学教育中的应用效果评价报告
- 2025年秋季学期政教处信息化建设工作计划
- 新能源产业2025年协同创新模式与技术突破研究报告
- 汽修厂污染防治知识培训课件
- 租房托管班合同(标准版)
- 2025-2026学年苏教版(2024)小学数学二年级上册(全册)教学设计(附目录P226)
- 2025年甘南事业单位笔试试题(含答案)
- 2025年浪浪山小妖怪开学第一课
- 2025-2026秋学生国旗下演讲稿:第1周让我们接过历史的接力棒-抗战胜利纪念日
- 2025年幼儿园食堂从业人员培训测试题(含答案)
- 企业员工职业道德培训教材及案例
- 学校2025年秋季学期1530安全教育记录(全学期带内容模板)
- 2025四川农信(农商行)社会招聘800人笔试历年典型考题及考点剖析附带答案详解
- 人教版2024-2025学年七年级数学上册教学计划(及进度表)
评论
0/150
提交评论