06输入输出与中断研究.ppt

  1. 1、本文档共102页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二. 同时发生多个中断的处理过程 -选讲 当多个中断请求同时产生时,8086 CPU将根据各中断源优先权的高低来处理。 假定8086 CPU处于开中断(IF=1)及单步工作(TF=1)方式, 在执行除法指令的过程中采样到有一个INTR中断请求产生。 说明 由于除法出错中断是在执行除法指令时才可能产生的,并且除法出错中断被看作是除法指令的一部分,故INTR引脚上的中断请求要待除法指令后的一条指令执行完时才能得到响应。因此,如果有除法出错,则CPU首先响应除法出错中断,于是进行现场保护,并且关中断进入除法出错处理程序。若在除法出错处理程序中没有用指令STI使CPU开中断,那么在整个除法出错中断处理过程中CPU 都不会响应INTR引脚上的中断请求。 如前所述,CPU在响应中断、执行保护现场与查中断向量表、得到中断服务程序入口地址后和执行中断服务程序之前,还要测试NMI引脚上有无中断请求。此时若无NMI中断请求,就测试其是否处于单步工作方式。如果TF=1,即在执行除法出错中断服务程序的第1条指令之前CPU接受了单步中断,则CPU就根据单步中断服务程序的具体安排,既可使除法出错中断服务程序在单步方式下工作,也可以使之在正常情况下工作。待除法出错处理程序执行后,恢复现场,开中断,返回原来被中断的程序。若INTR引脚上的中断请求依然存在,则CPU在将IF置1并且又执行完一条指令以后,才响应INTR引脚上的中断请求。同样,首先进行现场保护,重复执行上述过程。中断处理完了后,恢复现场,返回到原来被中断的程序。这样就描述了在单步方式下对同时产生除法出错中断和INTR中断进行处理的全过程。 6.4.4 可屏蔽中断的过程 ⑤清除IF与TF标志 一. INTR中断的全过程 1. 外设发中断请求:中断请求信号INTR由外部设备产生并送至8086的INTR引脚上。 2. CPU响应中断:CPU是否响应取决于CPU内部的IF标志,如果IF标志为0,则在IF变成1以前CPU不会识别中断;当IF=1并出现INTR请求信号时,CPU在完成正在执行的指令后,便开始响应中断。响应中断的步骤如下: (1) CPU读取中断类型号n。CPU将通过其INTA引脚向中断接口电路发响应信号,并启动中断过程。这个响应信号将使发出中断请求的接口把其1个字节的中断类型号通过数据总线送给CPU; (2) 按先后顺序把PSW、CS和IP的当前内容压入堆栈; (3) 清除IF和TF标志; (4) 取中断服务程序入口地址,即把4×n+2的字存储单元中的内容读入CS中,把 4×n的字存储单元中内容读入IP中。 3. 处理中断:CPU从新的CS:IP值开始执行中断服务程序。若允许中断嵌套,则一般在中断服务程序保存各寄存器内容之后安排一条STI开放中断指令,这是因为CPU响应中断后便自动清除了IF与TF位,当执行了STI指令后,IF=1,以便优先权较高的中断源获准中断响应。 4. 中断返回:中断服务程序中安排一条 IRET中断返回指令,就能控制CPU返回到发生中断处去。 NMI或内部中断请求的响应 至于CPU响应NMI或内部中断请求时的操作顺序基本上与上述过程相同,只是不需要第1项的操作,因为它们的中断类型码是直接从指令中获得或由CPU内部自动产生。一旦CPU接到NMI引脚上的中断请求或内部中断请求时,CPU就会自动地转向它们各自的中断服务程序。 二. 中断类型号的获得 1. 除法错误,单步中断,非屏蔽中断,断点中断和溢出中断分别由CPU芯片内的硬件自提供类型号0~4。 2. 软件中断则是从指令流中,即在第2个字节中读得中断类型号。 3. 外部中断INTR可以用不同的方法获得中断类型号。例如,在PC系列微机中,可以由Intel 8259A芯片或集成了 8259A的超大规模集成外围芯片来提供中断类型号。 6.4.6 中断服务子程序设计 设计中断子程序的步骤如下: 1.选择一个中断向量 如果是采用硬件中断,则要使用硬件决定的中断向量。 如果是采用软件中断,即用执行INT n指令的方式来执行中断服务程序,则可以在系统预留给用户的中断向量号中选某一个中断向量。建议使用97~127号;例如,选50H号向量。 2. 将中断子程序的入口地址置入中断向量表的相应表项中。 设选择的向量号为n,其置入方法有两种: 一是用数据传送指令将中断服务子程序入口相对地址存放在物理地址为4×n的字单元中,将中断服务子程序入口段地址存放在物理地址为4×n+2的字单元中。 二是采用DOS置新中断向量的中断功能(25功能),即: 向量号 21H 功能号 25H 入口参数: DS=中断服务子程序入口段地址;

文档评论(0)

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

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

1亿VIP精品文档

相关文档