《汇编语言》讲稿_12.ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《汇编语言》课件             王爽 著-清华大学出版社 第12章 内中断 12.1 内中断的产生 12.2 中断处理程序 12.3 中断向量表 12.4 中断过程 12.5 中断处理程序 12.6 除法错误中断的处理 12.7 编程处理 0 号中断 12.8 安装 12.9 do0 12.10 设置中断向量 12.11 单步中断 12.12 响应中断的特殊情况 引言 中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信息。 注意,我们这里所说的中断信息,是为了便于理解而采用的种逻辑上的说法。它是对几个具有先后顺序的硬件操作所产生的事件的统一描述。 12.1 内中断的产生 当CPU 的内部有什么事情发生的时候,将产生需要马上处理的中断信息呢? 对于8086CPU,当内部有下面情况发生的时候,将产生中断信息: 1、除法错误,比如:执行div指令产生的除法溢出; 2、单步执行; 3、执行int0指令; 4、执行int 指令。 12.1 内中断的产生 上述的4种中断源,在8086CPU中的中断类型码如下: (1)除法错误:0 (2)单步执行:1 (3)执行 int0 指令: (4)执行 int 指令 ,该指令的格式为 int n,指令中的n为字节型立即数,是提供给CPU的中断类型码。 12.2 中断处理程序 CPU的设计者必须在中断信息和其处理程序的入口地址之间建立某种联系,使得CPU根据中断信息可以找到要执行的处理程序。 我们知道,中断信息中包含有标识中断源的类型码。根据CPU的设计,中断类型码的作用就是用来定位中断处理程序。 12.2 中断处理程序 比如CPU 根据中断类型码 4,就可以找到4号中断的处理程序。 可随之而来的问题是,若要定位中断处理程序,需要知道它的段地址和偏移地址,而如何根据 8位的中断类型码得到中断处理程序的段地址和偏移地址呢? 12.3 中断向量表 CPU用 8 位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址。 那么什么是中断向量表呢? 中断向量表就是中断向量的列表。 12.3 中断向量表 中断向量表在内存中保存,其中存放着 256个中断源所对应的中断处理程序的入口,如下图所示: 12.3 中断向量表 中断向量表在内存中存放,对于8086PC机,中断向量表指定放在内存地址0处。 从内存0000:0000到0000:03FF的1024个单元中存放着中断向量表。 特别提示 检测点12.1(p227) 没有完成此检测点,请不要向下进行。 12.4 中断过程 从上面的讲解中,我们知道,可以用中断类型码,在中断向量表中找到中断处理程序的入口。 找到这个入口地址的最终目的是用它设置CS和IP,使CPU执行中断处理程序。 12.4 中断过程 用中断类型码找到中断向量,并用它设置CS和IP,这个工作是由CPU的硬件自动完成的。 CPU 硬件完成这个工作的过程被称为中断过程。 12.4 中断过程 在使用 call 指令调用子程序时有同样的问题,子程序执行后还要返回到原来的执行点继续执行, 所以,call 指令先保存当前 CS 的 IP值,然后再设置CS和IP。 12.4 中断过程 8086CPU的中断过程: (1)(从中断信息中)取得中断类型码; (2)标志寄存器的值入栈( 因为在中断过程中要改变标志寄存器的值,所以先将其保存在栈中。); (3)设置标志寄存器的第8位TF 和第9位IF的值为0;(这一步的目的后面将介绍) (4)CS的内容入栈; (5)IP的内容入栈; (6)从内存地址为中断类型码*4 和中断类型码 *4+2 的两个字单元中读取中断处理程序的入口地址设置IP和CS。 12.4 中断过程 CPU在收到中断信息之后,如果处理该中断信息,就完成一个由硬件自动执行的中断过程。 (程序员无法改变这个过程中所要做 的工作) 12.4 中断过程 中断过程的主要任务就是用中断类型码在中断向量表中找到中断处理程序的入口地址,设置CS和IP。 因为中断处理程序执行完成后,CPU还要回过头来继续执行被中断的程序, 所以要在设置CS、IP之前,先将它们的值保存起来。 12.4 中断过程 可以看到CPU将它们保存在栈中。 我们注意到,在中断过程中还要做的一个工作就是设置标志寄存器的TF、IF位。 对于这样做的目的,我们将在后面的内容和下一章中进行讨论。 12.4 中断过程 因为在执行完中断处理程序后,需要恢复在进入中断处理程序之前的CPU现场 (某一时刻,CPU中各个寄存器的值)。 所以应该在修改标记寄存器之前,将它的值入栈保存。 12.4 中断过程 我们更简洁的描述中断过程,如下: (1)取得中断类型码N; (2) pushf (3)

文档评论(0)

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

1亿VIP精品文档

相关文档