微机原理与接口技术 第03章 输入输出系统.ppt

微机原理与接口技术 第03章 输入输出系统.ppt

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理与接口技术 第03章 输入输出系统

3.2.5 硬件中断服务程序设计 硬件中断程序设计 硬件中断与软件中断的比较 保护现场 中断服务程序 恢复现场 中断返回 主程序 中断服务程序 保护现场 STI 中断服务程序 CLI 恢复现场 中断返回 主程序 中断服务程序1 中断服务程序2 中断的过程 主程序 IRET 中断服务程序 断点 中断请求 中断请求可以来自处理器外部的中断源,也可以由处理器执行指令引起: * 硬件中断程序设计 主程序设计 CPU部分 设置堆栈指针(SS和SP) 设置中断向量:保存原先的中断向量;写入新的中断向量 开关中断:对IF标志位控制 中断控制器8259A部分:设置8259A的工作方式 通用外设接口部分:选择接口的工作方式和设置接口的中断开放位等 硬件中断程序设计 硬件中断服务程序设计包括5个步骤 保护现场 清除中断标志(8259A中ISR的内容) 任务处理 执行时间尽量短,应尽量避免使用“ INT 21H ”的1H~0CH号子功能。 恢复现场 中断返回 * 硬件中断程序设计举例 [设计要求]设微机系统ISA总线的B4端子外接一个单脉冲发生器,它受手动按钮控制,按动一次就产生一个正向单脉冲。要求编写中断程序:系统每收到一个单脉冲,随即在屏幕上显示一个“黑桃”(ASCII码为06H),当敲击任意键时,演示结束。 [设计思路]见教材page205,图5.23。 用户中断、主从方式、中断类型码为0AH、中断服务程序完成‘显示黑桃’字符。 [程序框图] 硬件中断服务程序设计 保护现场 屏幕上显示‘黑桃’字符 8向主259A送中断结束命令 恢复现场 中断返回 中断服务程序 关中断 置换OAH型中断向量 8259A编程 开中断 主程序 有键入? 恢复OAH型中断向量 返回DOS N Y * [程序清单]:主程序 ;Filename:Main.asm DATA DEGMENT LD0A DD ? DATA ENDS CODE SEGMENT ASSUME DS:DATA ASSUME CS:CODE BEG: MOV AX,DATA MOV DS, AX CLI ;关中断 CALL RD0A;保存老的向量 CALL WR0A;写中断向量 CALL I8259 STI ;开中断 SCAN:MOV AH, 1 INT 16H;取键盘 JZ SCAN CALL RESET;判断键盘输入 MOV AH, 4CH INT 21H;返回DOS * [中断服务子程序] SERVICE PROC PUSH AX MOV AH, 0EH ;OEH为BIOS功能调用子功能号 MOV AL, 06H INT 10H ;BIOS功能调用显示字符‘黑桃’ MOV AL, 20H OUT 0A0H, AL OUT 20H, AL ;中断结束命令 POP AX IRET SERVICE ENDP 参考:MOV AH,1和INT 16两条指令的功能简介:取键盘缓冲区状态,返回的参数有:ZF=0,AL=字符码,AH=扫描码;如果ZF=1,则缓冲区无按键,等待。 [读出并转移中断向量子程序] RD0A PROC MOV AH, 35H MOV AL, 0AH INT 21H MOV WORD PTR LD0A, BX MOV WORD PTR LD0A+2, ES RET RD0A ENDP [写入新的中断向量子程序] WR0A PROC PUSH DS MOV AX, SEG SERVICE MOV DS, AX MOV DX, OFFSET SERVICE MOV AH, 25H MOV AL, 0AH INT 21H POP DS RET WR0A ENDP * [8259A初始化子程序] I8259 PROC IN AL,21H;读屏蔽字 AND AL, 1111 1011B ;开放8259A中断-B4端 OUT 21H, AL;写回IMR IN AL,0A1H AND AL, 1111 1101B ;开放用户中断 OUT 0A1H, AL RET I8259 ENDP [恢复原现场] RESET PROC MOV DX,WORD PTR LD0A MOV DS,WORD PTR LD0A+2 ;取出原中断向量 MOV AH, 25H MOV AL, 0AH INT 21H ;将中断向量写入中断向量表中 RET RESET ENDP

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档