x86的中断

来源:互联网 发布:电磁炮 激光炮 知乎 编辑:程序博客网 时间:2024/05/16 08:07

一、中断系统


为什么引入中断?

 

当CPU与外设交换信息时,若用查询方式,则CPU就要浪费很多时间去等外设。这是快速的CPU与慢速的外设之间的矛盾,也是计算机发展过程中遇到的一个严重的问题之一,为了解决这个问题,一方面要提高外设的工作速度;另一方面引入了中断的概念。

 

中断的好处

 

1.      同步操作

有了中断功能,就可以使CPU和外设同时工作。CPU在启动外设工作后,继续执行主程序,同时外设也在工作。当外设把数据准备好后,发出中断申请,请求CPU暂时终止主程序,执行输入或输出(中断处理),处理完后,CPU恢复执行主程序,外设也继续工作。而且有了中断功能,CPU可允许多个外设同时工作。这样大大提高了CPU的利用率,也提高了输入、输出的速度。

 

2.      实现实时处理

当计算机用于实时控制时,中断是一个十分重要的功能。现场的各个参数、信息,根据需要,可在任何时间发出中断请求,要求CPU处理;CPU一旦接受中断请求,就可以马上响应(若中断是开放的话),加以处理。这样的及时处理在查询方式下是做不到的。

 

3.      故障处理

    计算机在运行过程中,往往会出现事先预料不到的情况或出现一些故障,如电源掉电、运算溢出等等。计算机可以利用中断系统自行处理,而不必停机或报告工作人员。

 

什么是中断?



 

在CPU执行程序的过程中,出现了某种紧急或异常的事件(中断请求),CPU需要暂停正在执行的程序,转去处理该事件(执行中断服务程序),并在处理完毕后返回断点处继续执行被暂停的程序,这一过程称为中断.

 

断点:     处是指返回主程序时执行的第一条指令的地址

中断源 :  任何可以引发中断的事件称为中断源.分为硬件中断源和软件中断源两类

中断处理过程 : 中断请求、中断响应、断点保护、中断处理、中断返回

 

中断的相关概念

   1. 究竟是什么引起中断?  --中断源

   2.中断产生如何服务?     --中断响应

   3.响应中断请求,如何服务即如何找到中断服务程序去执行?  --中断向量

   4.当多个中断同时请求服务时,如何处理?                  --中断优先级

   5.CPU是否一定会响应中断?                              --中断屏蔽

 

中断控制方式是CPU与外设交换信息时一种主要输入/输出传递方式。中断控制是计算机发展中的一种主要技术,中断控制方式使得外设具有一定的主动权,使得CPU不必反复地去查询外设的状态,克服了程序查询导致CPU效率低的缺点。随着计算机的发展,中断的适用范围也随之扩大,可包括软件中断,硬件中断。




 

外部中断 :来自CPU外部,由外设的请求引起,通过外部硬件产生,也称为硬件中断。

内部中断 :来自CPU内部,由执行指令引起的。

非屏蔽中断 :通过NMI引脚引入CPU,不受中断允许标志IF的屏蔽,一个系统一般只允许有一个非屏蔽中断。

可屏蔽中断 :通过INTR引脚引入CPU,只有当中断允许标志位IF=1时,才能被CPU响应。通过8259A,一个系统中可有多个可屏蔽中断。

 

3.  中断类型码与中断失量表

8086/8088内部具有一个强有力的中断管理系统,可以处理256个中断,每一个中断都给定一个编号(0~255),称为中断类型码。对于每一个中断类型码在内存中有其对应的中断矢量。所有中断矢量构成一个中断矢量表。在8086内部对每一个中断分配4个中断矢量地址。所以中断矢量表占据内存的地址范围是:0000H: 0000H~0000H: 03FFH,既是内存单元的最低的1K地址范围。只要有中断类型号,就可根据中断类型号与中断矢量所在位置之间的对应关系,很方便地就能判断出中断关系矢量表的地址。

 

即:中断矢量在中断矢量表中的地址=中断类型号×4



 

4.  中断类型号的获取

矢量中断中,中断入口地址与中断类型号有关,中断类型号如何获取呢?

 

1.对于除法出错,单步中断,不可屏蔽中断NMI,断点中断和溢出中断,CPU分别自动提供中断类型号0~4。

2.对于用户自己确定的软件中断INT n,类型号由n决定。

3.对外部可屏蔽中断INTR,可以用可编程中断控制器8259A获得中断类型号。

 

8个中断请求信号接到8259A。当外设申请中断时,8259A响应优先权高的中断源,将中断请求信号送到CPU的INTR端。8259A收到CPU发出的第二个中断响应信号时,将对应中断源的中断类型号送给CPU,CPU获取中断类型号后,自动转入相应的中断服务程序。

 

将有关中断的主程序编写方法归纳 :

 

     1. 主程序中的初始化

     (1)设置中断向量。

     (2)设置8259A的中断屏蔽寄存器的中断屏蔽位。

     (3)设置CPU中断允许位标志IF(开中断STI)。

 

     2. 硬件(外设接口)和CPU自动完成

     (1)外设接口向CPU的INTR端发出中断请求。

     (2)当前指令执行完后,CPU发两个中断响应信号INTA给外设接口。

     (3)CPU取中断类型号n。

     (4)CPU自动将当前PSW、CS、IP内容压栈保护。

     (5)清除IF、TF,禁止外部中断和单步中断。

     (6)从中断向量表中取(4n)地址中内容→IP,取(4n+2)地址中内容→CS。

     (7)转向中断服务子程序。

5.  专用中断

在8088/8086中断系统中的前5个中断,系统已经给出了固定的定义和处理功能,故又称它们为专用中断,其中除了非屏蔽中断而外,其余的4个都属于内部中断。

 

除数为零中断 :类型码0;当执行除法时,如果除数为零,CPU自动产生一个类型0中断。

 

单步中断 :类型码1;受TF为控制,当TF为1时,每执行一条指令,就产生一个单步中断,主要使用于程序调试过程中。

 

断点中断 :类型码3;主要用于程序调试中,即在指定位置设置断点,当CPU执行到此断点位置时将转入到断点服务子程序。

 

溢出中断(INTO) :类型码4;当CPU执行加/减操作时,如果有溢出产生,并且其后执行该指令时则会作出相应的处理操作。

6.  软件中断

也叫内部中断。通过中断指令使CPU执行中断服务程序的方法称为软件中断,中断指令提供了直接调用中断服务程序的软件手段。软件中断是以INT n指令出现在程序中的,中断指令占用2个字节,第一个字节为指令码CDH,第二个字节为指令操作数n,即中断类型码。因此,在软件中断时,CPU是从指令流中读得中断类型码的。

 

软件中断与外部中断有许多不同之处:

 

   1.软件中断是以一条指令INTn而进入中断服务程序的,并且其中断类型码由指令的第二字节提供。

   2.软件中断不受中断允许标志IF的禁止 ,即无论IF=1或0,对任何一个软件中断都不影响。其中单步中断是受单步标志TF的影响,即只有TF=l 时,才能执行单步中断。

   3.由于CPU是从指令流中读的软件中断的中断类型码,因此,软件中断进入中断后,不需要执行中断响应总线周期,也不必从数据总线上读取中断类型码。

   4.软件中断除类型器(除数为0的中断)外,都没有随机性,因为软件中断是以INT n指令的形式出现在程序中的,该指令放在程序的何处何时执行,都是预先定好了的,这就使软件中断不会出现随机性。

7.  外部中断

    8088/8086系统的外部中断包括非屏蔽中断和可屏蔽中断,它们分别通过NMI和INTR向CPU发出中断请求。

 

不可屏蔽中断NMI:

 

    分配中断类型码是2(其中断矢量地址范围是:0000H:0008~0000H: 000BH)。

在8086中,不可屏蔽中断NMI是高电平有效,其不受IF位的影响,在系统中应用于紧急情况的故障处理,例在IBMPC/XT中使用NMI中断服务程序对RAM奇偶校验出错进行处理等。

 

可屏蔽中断INTR:

 

    当 INTR上出现正跳变信号时,则产生可屏蔽中断,它受IF位影响(可通过软件来设置IF位)。对于一个系统可以有多个外设需要采用中断方式与CPU交换信息,当系统有多个外设中断时,中断有可能是同时产生或先后产生,因此就需要有专门的中断控制芯片来完成其管理工作,如8259A。

8.  中断响应的流程及中断的优先权

    8086含有多种中断,而CPU一次只可处理一个中断请求,因此当有多个中断发生时,CPU需有一个中断处理的顺序问题,亦即中断的优先权管理。在8086中各类中断源的优先级:

 

优先级 中断类型

 

1(高)     内部中断(除单步中断)

2          NMI

3          INTR (IRQ0, ... , IRQ7)

4(低)     单步中断





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 太阳花叶子蔫了怎么办 刚摘下来的多肉怎么办 购车4s不给合同怎么办 橙光游戏2.0商城怎么办 飞羽花卷叶了怎么办 孔雀竹芋叶子发黄卷曲怎么办 孔雀竹芋叶子黄了卷了怎么办 飞羽竹芋叶尖黄怎么办 十七岁还是胸小怎么办 英雄联盟连接不上服务器怎么办 彩叶草叶子蔫了怎么办 家里种葱老是死怎么办 非洲菊生虫子了怎么办 多肉的花剪下来怎么办 结石痛怎么办怎么止疼 喝玫瑰花茶胃疼怎么办 卡地亚戒指掉色怎么办 苹果8plus掉电快怎么办 苹果8plus耗电快怎么办 卡地亚戒指划痕怎么办 苹果手机玫瑰金掉色怎么办 14k玫瑰金掉色怎么办 卡地亚手镯掉色怎么办 手机掉油漆里了怎么办 黄金戴久了变黑怎么办 玫瑰金褪色不亮了怎么办 黄金带久了不亮怎么办 玉石带久了不亮怎么办 手表带久了不亮怎么办 蜜蜡带久了不亮怎么办 钛钢首饰不亮了怎么办 潘多拉玫瑰金戒指褪色了怎么办 金色手表漆掉了怎么办 玫瑰金表带褪色后怎么办 K金褪色或泛黄怎么办 钛钢玫瑰金变黑怎么办 玫瑰金手镯掉色了怎么办 彩金颜色不亮了怎么办 玫瑰金链子黑了怎么办 18k玫瑰金变黑了怎么办 玫瑰金戒指遇到火变黑怎么办