当前位置: 网学 > 编程文档 > 汇编语言 > 正文

中断和异常的转移方法

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式

80386实模式下的中断和异常的转移方法与8086相同。这里介绍的中断和异常的转移方法是指 80386在保护模式下响应中断和处理异常时所采用的转移方法。

1.中断描述符表IDT

 与8086/8088一样,在响应中断或者处理异常时,80386根据中断向量号转对应的处理程序。但是,在保护模式下,80386不使用实模式下的中断向量表,而是使用中断描述符表IDT。在保护模式下,80386把中断向量号作为中断描述符表IDT中描述符的索引,而不再是中断向量表中的中断向量的索引。

 象全局描述符表GDT一样,在整个系统中,中断描述符表IDT只有一个。中断描述符表寄存器IDTR指示IDT在内存中的位置。由于80386只识别256个中断向量号,所以IDT最大长度是2K。

 中断描述符表IDT所含的描述符只能是中断门、陷阱门和任务门。也就是说,在保护模式下,80386只有通过中断门、陷阱门或任务门才能转移到对应的中断或异常处理程序

 从前文中给出的门描述符的格式可见,门描述符包含由选择子和偏移构成的48位全指针。另外,双字计数字段对中断门、陷阱门和任务门而言无意义。

2.中断响应和异常处理的步骤

 由硬件自动实现的中断响应和异常处理的步骤如下:

 首先,判断中断向量号要索引的门描述符是否超出IDT的界限。若超出界限,就引起通用保护故障,出错码为中断向量号乘8再加2。

其次,从IDT中取得对应的门描述符,分解出选择子、偏移量和描述符属性类型,并进行有关检查。描述符只能是任务门、286中断门、286陷阱门、386中断门或386陷阱门,否则就引起通用保护故障,出错码是中断向量号乘8再加2。如果是由INT n指令或INTO指令引起转移,还要检查中断门、陷阱门或任务门描述符中的DPL是否满足CPL<=DPL(对于其它的异常或中断,门中的DPL被忽略)。这种检查可以避免应用程序执行INT n指令时,使用分配给各种设备用的中断向量号。如果检查不通过,就引起通用保护故障,出错码是中断向量号乘8再加2。门描述符中的P位必须是1,表示门描述符是一个有效项,否则就引起段不存在故障,出错码是中断向量号乘8再加2。

最后,根据门描述符类型,分情况转入中断或异常处理程序

 对于异常处理,在开始上述步骤之前,还要根据异常类型确定返回点;如果有出错代码,则形成符合出错码格式的出错码,并在实际执行异常处理程序之前把出错码压入堆栈。为了保证栈的双字边界对齐,16位的出错码以32位的值压入,其中高16位的值未作定义,对于16位段也是如此。

3.通过中断门或陷阱门的转移

 如果中断向量号所指示的门描述符是386中断门或386陷阱门,那么控制转移到当前任务的一个处理程序过程,并且可以变换特权级。与其它调用门的CALL指令一样,从中断门和陷阱门中获取指向处理程序的48位全指针。其中16位选择子是对应处理程序或代码段的选择子,它指示全局描述符表GDT或局部描述符表LDT中的代码段描述符;32位偏移指示处理程序入口点在代码段内的偏移量。

 通过中断门或陷阱门的转移过程如下所示,该过程由硬件自动进行。

 (1)若选择子为空,则产生通用保护故障;

 (2)取对应的描述符;

 (3)若非存储段描述符,则产生通用保护故障;

 (4)若非一致代码段且DPL且段存在,则切换到内层堆栈;

 (5)调整RPL=0;

 (6)把描述符装入CS;

 (7)若入口偏移越界,则产生通用保护故障;

 (8)EFLAGS压入堆栈;

 (9)CS压入堆栈;

 (10)EIP压入堆栈;

 (11)使TF=0,NT=0;

 (12)若为中断门,则使IF=0;

 (13)若有出错码,则把出错码压入堆栈;

 (14)转入处理程序

 由上述转移过程可见,中断门或陷阱门中指示处理程序的选择子必须指向描述一个可执行的代码段的描述符。如果选择子为空,就引起通用保护故障,出错码是0。如果描述符不是代码段描述符,就引起通用保护故障,出错码含选择子。

 中断或异常可

  • 上一篇资讯: 汇编语言技术指标
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号