第06章中断.pptVIP

  • 2
  • 0
  • 约 84页
  • 2016-08-12 发布于重庆
  • 举报
第06章中断

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * OCW3用途: 设置/清除特殊屏蔽命令 发出读寄存器命令: 设置RR=1,RIS=0后,用IN指令读偶端口,可以将 IRR读入CPU。 设置RR=1,RIS=1后,用IN指令读偶端口,可以将 ISR读入CPU。 操作控制字OCW3应用 * 发出查询命令; 设置P=1后,用IN指令读偶端口,可以将中断查询字 读入CPU: I X X X X W2 Wl W0 I=1表示有中断请求,W2 Wl W0表示请求服务的最高 优先级编码。 注意: 设置了P=1的查询命令后,8259A不再通过INT引脚向 CPU发送中断请求。 要取消查询方式,可以再次发出OCW3,并使P=0。 操作控制字OCW3应用 * 例:BIOS中读取ISR寄存器的程序段: MOV AL ; OCW3命令字(读ISR) OUT 20H,AL ; 写入OCW3端口 NOP ;延时 IN AL,20H ;将ISR内容送入AL MOV AH,AL ;将ISR内容转存入AH OR AL,AH ;是全0否? JNZ AW-INT ;否,转硬件中断程序 …… 操作控制字OCW3应用 * 6.4 中断方式输入输出 6.4.1 中断方式IO接口 中断方式输入过程: 外部设备输入数据; 中断请求触发器置位; 接口向CPU申请中断; CPU响应中断,中断请求触发器被复位; CPU在中断服务程序中读取数据。 * 图6-17 中断方式输入接口 * 中断屏蔽触发器的作用: 控制外设接口的中断请求信号能否发送给CPU。 中断屏蔽触发器可以看作该接口控制寄存器的一位 图6-17是不完整的: 没有给出中断屏蔽触发器的写入电路; 解决中断优先权的电路; 向CPU发送中断类型号的电路。 * 图6-18 * 中断方式下,完整的输入输出程序应由二个程序模块配合完成: 主程序: 完成输入输出所需要的“初始化”工作和结束工作; 中断服务程序: 完成数据传输和输入输出控制工作。 6.4.2 中断方式输入输出程序设计 * 1. 主程序设计 (1) CPU初始化:设置堆栈,设置中断向量,开放中断。 (2)中断控制器8259A的初始化: 选择工作方式,设置优先级、清除屏蔽位等。 (3)接口的初始化:设置接口工作方式,设置中断开放位等。 (4)中断服务程序的初始化: 设置中断服务程序使用的缓冲区指针,计数器,状态位等。 注意: 中断服务程序的指针、计数器、状态位等只能存放在 内存单元。 对于输出过程,应在主程序中启动第一次输出。 输入输出完成之后,主程序要根据需要做好结束工作。 如:处理输入的数据,关闭中断等。 * 2. 中断服务程序设计 保护现场: 把所有中断服务程序里使用、会改变值的寄存器压入 堆栈。 开放中断: 允许CPU响应优先级更高、更紧急的中断。 输入输出处理: 关闭中断: 关闭中断可以避免不必要的中断嵌套,发EOI命令。 恢复现场: 按照“先进后出”的原则,恢复各寄存器的内容。 中断返回: 用IRET指令返回被中断的程序。 * 中断服务程序应注意的几个问题: 中断服务程序要短小精悍,运行时间短,执行一次中断服务程序的时间要大大少于二次中断的时间间隔。对于耗费时间多的数据处理工作,应交由主程序完成。 一般的情况下,应避免在中断服务程序内进行DOS功能调用。那样做,可能产生这些程序的“重入”。DOS功能调用程序不具备重入功能,会产生难以预料的结果。需要进行控制台IO操作可以使用BIOS调用。 在输入输出处理完成后,一定要向8259A发送中断结束命令(EOI)。如果是级联的8259A的从片上的中断,则需要向主片和从片分别发送中断结束命令。否则,该设备的下一次中断就不能被响应,比它级别低的中断从此也不能被响应。 * 一个完整的中断方式输入程序 设: 数据端口地址为240H 使用8259A的IR3引脚申请中断,中断类型0BH 8259A端口地址为20H,21H 输入以“回车”字符表示结束。 6.4.3 中断方式应用 * DATA

文档评论(0)

1亿VIP精品文档

相关文档