- 1、本文档共77页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章.输入与输出中断
6.4.3 可屏蔽中断的过程 1. INTR中断的全过程 首先,中断请求信号INTR 由外部设备产生并送至8086的 INTR引脚上。 CPU是否响应取决于CPU内 部的IF标志,如果IF标志为0, 则在IF变成1以前CPU不会识别 中断;当IF=1并出现INTR请求 信号时,CPU在完成正在执行的 指令后,便开始响应中断。 5 清除IF和TF标志; 步骤如下: (1) CPU读取中断类型号n。CPU将通过其INTA引脚向 中断接口电路发响应信号,并启动中断过程。这个响应 信号将使发出中断请求的接口把其1个字节的中断类型 号通过数据总线送给CPU; (2) 按先后顺序把PSW、CS和IP的当前内容压入堆栈; (3) 清除IF和TF标志; (4) 把4×n+2的字存储单元中的内容读入CS中,把 4×n的字存储单元中内容读入IP中。 于是,CPU从新的CS:IP值开始执行中断服务程序。若允 许中断嵌套,则一般在中断服务程序保存各寄存器内容之后 安排一条STI开放中断指令,这是因为CPU响应中断后便自动 清除了IF与TF位,当执行了STI指令后,IF=1,以便优先权较 高的中断源获准中断响应。中断服务程序中安排一条 IRET 中断返回指令,就能控制CPU返回到发生中断处去。 至于CPU响应NMI或内部中断请求时的操作顺序基本上与 上述过程相同,只是不需要第1项的操作,因为它们的中断类 型码是直接从指令中获得或由CPU内部自动产生。一旦CPU接 到NMI引脚上的中断请求或内部中断请求时,CPU就会自动地 转向它们各自的中断服务程序。 (二) 中断类型号的获得 (1) 除法错误,单步中断,非屏蔽中断,断点中断 和溢出中断分别由CPU芯片内的硬件提供类型号0~4。 (2) 软件中断则是从指令流中,即在第2个字节中读 得中断类型号。 (3) 外部中断INTR可以用不同的方法获得中断类型 号。例如,在PC系列微机中,可以由Intel 8259A芯片或 集成了 8259A的超大规模集成外围芯片来提供中断类型 号(参见第7章)。 6.4.4 中断响应时序 下面以8086 CPU的最小方式以及用户定义的硬件中断为例来讨论中断响应的时序,如图6.26所示。 如果在前一个总线周期中CPU的中断系统检测到 INTR引脚是高电平,而且程序状态字的IF位为1,则 CPU在完成当前的一条指令后,便执行一个中断响应 时序。8086 的中断响应时序由两个INTA中断响应总 线周期组成,中间由两个空闲时钟周期T1隔开。在两 个总线周期中,INTA输出为低电平,以响应这个中断。 第1个INTA总线周期表示一个中断响应正在进行,这 样可以使申请中断的设备有时间去准备在第2个INTA总线 周期内发出中断类型号。第2个INTA总线周期中,中断类 型号必须在16位数据总线的低半部分(AD0~AD7)上传送 给8086。因此,提供中断类型号的中断接口电路(例如 8259A)的8位数据线是接在16位数据总线的低半部上。在 中断响应总线周期期间,经DT/R和DEN的配合作用,使得 8086 可以从申请中断的接口电路中取得一个单字节的中 断类型号。 综上所述,CPU响应可屏蔽中断的全过程可归纳为如下 几点: (1) 执行两个中断响应总线周期时,中断接口电路在第 2个中断响应总线周期内送出一个单字节数据作为中断类型 号。这个数据字节左移两位(即乘以4)后,得到中断向量 在中断向量表中的起始地址。 (2) 执行一个写总线周期时,CPU在这个周期内把程序状 态字PSW的内容压入堆栈。 (3) 把程序状态字中的中断允许(IF)和单步陷阱(TF)标 志位复位成0,这样就能禁止可屏蔽的和单步的中断。 (4) 执行一个写总线周期时,断点的段寄存器CS的 内容被压入堆栈。 (5) 执行一个写总线周期时,断点的指令指示器IP 的内容被压入堆栈。 (6) 执行一个读总线周期时,CPU将从4×n+2的字 存储单元中将中断服务程序的代码段值读入CS内。 (7) 执行一个读总线周期时,CPU将从4×n的字存储 单元中将中断服务程序的偏移地址读到指令指示器IP中。 于是,CPU根据CS:IP中的值去执行中断服务程序。 (8) 在2个中断响应周期之间插入了2个空闲状态,这是8086执行中断响应过程的情况,也有插入3个空闲状态的情况。但是,在8088 CPU的2个中断响应周期之间并没有插
文档评论(0)