网站大量收购闲置独家精品文档,联系QQ:2885784924

8259A与中断.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8259A与中断

8295A与中断 中断和异常中断和异常(msn:xanderzhang@,群群:4733369)o本文来自网络本文来自网络 学过8086/8088汇编的人肯定对于中断这个概念都不陌生。在80386中,这个概念在一定程度上发生了变 化,并引入了“异常”这个新概念。本篇文章就是围绕在操作系统开发中涉及到中断和异常的讨论。 中断中断 中断在系统中是由外部事件所引起的,如:一次I/O操作的结束。其产生与CPU当前所执行的指令没有关 系。从是否能够被屏蔽来划分,可将其分为两类,即可屏蔽中断与不可屏蔽中断,其中前者由CPU的INTR 引脚接收信号,后者由NMI引脚接收信号。 由于产生中断的中断源并不单一,因此在INTR接收中断的时候,同样还要接收一个8位的中断向量号,以 判断是谁发出的中断请求。CPU对于某个中断 向量号是由谁发出原则上并没有规定。但在实际系统中,为 了避免产生冲突,部分中断向量号都有自己固定的中断源,这一工作是由可编程中断控制器(PIC)完 成 的。在80386系统上,该PIC是8259A 。该芯片功能十分强大,不仅能向CPU提供中断向量号,还可以自 主处理中断请求的优先级。每个8259A 芯片可以支持8个中断请求信号,并可进行级连。对于8259A的介 绍,我们将在文章的后半部分进行。 对于是否屏蔽可屏蔽中断可以通过8259A有选择地控制,也可以通过CPU的CLI和STI指令实现。CLI和 STI指令可以设置EFLAGS寄存 器的IF位,如果该位被清除,则CPU会禁止外部中断传递信号给INTR引 脚。但对于CPU内部异常和NMI该位不起作用。在执行这两条指令时,必须要保 证当前CPL小于等于 IOPL ,否则会引起通用保护故障。当然虽然NMI是不可屏蔽中断,但通过将CMOS端口(0x70)中第7位置 1这种手段也可以将 NMI也屏蔽掉的,当然需要打开该中断将该位清零就可以了。 实现代码如下: #define PORT_CMOS 0x70 void disable_NMI() { byte val; val = inportb(PORT_CMOS); outportb(PORT_CMOS, val | 0x80); } void enable_NMI() { byte val; val = inportb(PORT_CMOS); outportb(PORT_CMOS, val 0x7F); } 异常异常 异常是在CPU执行指令期间遇到非法指令所产生的。因此异常与当前指令存在着关系,例如:除零,特权 级不正确等等,都会触发异常。80386可以识 别多种不同的异常,并以不同的中断向量号来标示它们。在 异常发生时,CPU就根据原先设定好的中断向量号转到不同的中断处理程序(ISR)执行。 根据是由是否可恢复和恢复点位置不同将异常划分为三种。它们是故障(Fault),陷阱(Trap)和中止 (Abort) 。 80386认为故障是可以排除的,因此在CPU遇到引起故障的指令的时候,会保存当前的CS和EIP值,并转 去执行故障处理程序。在故障排除后,执 行IRET指令回到刚在引发故障的位置,重新执行刚才触发故障的 指令。例如,当程序企图装入一个不存在的段时将会引发一个故障,这时操作系统会将该段装 入,并重新 进行刚才的操作。 陷阱与故障的区别主要在于,在执行陷阱处理程序之前,系统会保存CS和EIP的值为引起陷阱的下一条要 执行指令所在的位置。例如,软中断就是典型的陷阱。 中止是在系统发生严重错误时产生的。在引起中止后,当前执行的程序不能被恢复执行。并且系统在接受 到中止后,中止处理程序要重新建立各种系统表。引起这类错误的主要原因是系统表的数据不一致或者非 法等。 下表列出了80386在保护模式下的中断和异常 向量号 名称 异常类型 出错代码 相关指令 0 除法错 故障 无 DIV,IDIV 1 调试 故障/陷阱 无 调试状态下 3 断点 陷阱 无 INT 3 4 溢出 陷阱 无 INTO 5 界限检查 故障 无 BOUND 6 无效操作码 故障 无 非法指令 7 无80X87 故障 无 ESC,

文档评论(0)

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

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

1亿VIP精品文档

相关文档