62 80486微处理器中断系统Word下载.docx

上传人:b****1 文档编号:3157780 上传时间:2023-05-01 格式:DOCX 页数:9 大小:459.34KB
下载 相关 举报
62 80486微处理器中断系统Word下载.docx_第1页
第1页 / 共9页
62 80486微处理器中断系统Word下载.docx_第2页
第2页 / 共9页
62 80486微处理器中断系统Word下载.docx_第3页
第3页 / 共9页
62 80486微处理器中断系统Word下载.docx_第4页
第4页 / 共9页
62 80486微处理器中断系统Word下载.docx_第5页
第5页 / 共9页
62 80486微处理器中断系统Word下载.docx_第6页
第6页 / 共9页
62 80486微处理器中断系统Word下载.docx_第7页
第7页 / 共9页
62 80486微处理器中断系统Word下载.docx_第8页
第8页 / 共9页
62 80486微处理器中断系统Word下载.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

62 80486微处理器中断系统Word下载.docx

《62 80486微处理器中断系统Word下载.docx》由会员分享,可在线阅读,更多相关《62 80486微处理器中断系统Word下载.docx(9页珍藏版)》请在冰点文库上搜索。

62 80486微处理器中断系统Word下载.docx

  

(1)故障(faults)

 

故障是指某条指令在启动之后,真正执行之前,被检测到异常而产生的一种中断。

CPU将产生这种异常操作的指令所在内存中的地址保存到堆栈中,然后进入中断服务做排除故障的响应处理,返回后再执行曾经产生异常的指令,如果不再出现异常,则程序可以正常地继续执行下去。

例如,启动某条指令时,要访问的数据未找到。

在这种情况下,当前指令被挂起,中断处理之后,重新启动这条指令。

  

(2)陷阱(traps)

陷阱是在中断指令执行过程中引起的中断。

这类异常主要是由执行“断点指令”或中断调用指令(INTn)引起,即在执行指令后产生的异常。

在中断处理前要保护设置陷阱的下一条指令的地址(断点),中断处理完毕,返回到该断点处继续执行。

例如,由程序员预先设定的单步调试或断点调试,CPU执行到当前的异常指令后,将下一条指令的地址保存到堆栈中,然后进入中断服务子程序处理异常事件,处理完毕后,再返回原处执行主程序。

这个过程同普通中断有些类似,一般不会导致系统瘫痪。

  (3)异常中止(aborts)

异常中止通常是由硬件错误或非法的系统调用引起的。

异常发生后一般无法确定造成异常指令的准确位置,程序无法继续执行,系统也无法恢复原操作,中断处理须重新启动系统。

  以上三类异常的差别主要表现在两个方面:

一是发生异常的报告方式,二是异常处理程序的返回方式。

故障这类异常的报告是在引起异常的指令执行之前发生的,待异常处理完毕,返回该指令继续执行;

陷阱这类异常的报告是在引起异常的指令执行之后发生的,待异常处理完毕,返回该指令的下一条指令继续执行;

异常中止这类异常的情况比较严重,它是因为系统硬件或参数出现了错误而引起的,引起异常的程序将无法恢复,必须重新启动系统。

  Intel80486CPU最多可以管理256种类型的中断与异常,类型及功能见表6.1。

每一种中断被赋予一个中断类型号,其中,中断类型0~17分配给内部中断(类型2除外);

中断类型18~31备用,为生产厂家开发软硬件使用;

中断类型32~255留给用户,可作为外部设备进行输入/输出数据时的可屏蔽中断(INTR)请求使用。

表6.1 Intel80486CPU中断与异常类型及功能

   表6.1中的前5种中断类型(类型0~类型4):

除法出错、单步调试异常、NMI、断点、溢出,从8086到Pentium的所有CPU都是相同的,其他中断类型适用于286及向上兼容的386、486和Pentium微处理器。

6.2.2 实地址模式下的中断与异常处理

  在中断和异常的处理过程中,很重要的一件事是如何识别中断源,获取中断服务子程序的入口地址。

在80486CPU系统中,因为CPU的工作模式不同而获取中断向量的方式有所不同,本节讨论CPU工作在实地址模式下是如何获取中断向量而转入中断处理的。

    1.中断向量表

  在实地址模式下,80486CPU的中断响应是根据中断源提供的中断类型号,查找中断向量表,获取中断向量,继而转去执行中断处理。

  中断向量表位于内存底端的1KBRAM区,地址范围为0000H~03FFH,如图6.5所示。

256种中断类型由中断类型号0~255(00H~FFH)表示。

中断类型号n与其对应中断向量表的地址V的关系是:

V=4n。

约定4n+0和4n+1单元存放中断服务子程序的偏移地址IP的值,4n+2和4n+3单元存放中断服务子程序的段基址CS的值。

CPU响应中断请求后,由中断源自动给出中断类型号n送入CPU,由CPU自动完成向量表地址4n的运算,从向量表中取出中断服务子程序的入口地址送入CS和IP中,将执行的流程控制转移到中断服务子程序。

  内部中断的向量地址由系统负责装入,用户不能随意修改。

用户中断的向量地址在初始化编程时装入

             图6.5 中断向量

  2.设置中断向量

  用户在应用系统中使用中断时,需要在初始化程序中将中断服务子程序的入口地址装入中断向量表指定的存储单元中,以便在CPU响应中断请求后,由中断向量自动引导到中断服务子程序。

中断向量的设置,既可以使用传送指令直接装入指定单元,也可以使用DOS系统功能调用INT21H中的25H号功能调用装入。

 

(1)用传送指令直接装入

  采用这种方法设置中断向量,就是将中断服务子程序的入口地址,通过数据传送指令直接送入中断向量表指定的单元中,即可完成中断向量的设置。

例如,设某中断源的中断类型号n为40H,中断服务子程序的入口地址为INT-P,设置中断向量的程序段如下:

   CLI             ;

IF=0,关中断

   MOV AX,0          ;

ES指向0段

   MOV ES,AX

   MOV BX,40H×

4       ;

向量表地址送BX

   MOV AX,OFFSETINT-P    ;

中断服务子程序的偏移地址送AX

   MOV ES:

WORDPTR[BX],AX   ;

中断服务子程序的偏移地址写入向量表

   MOV AX,SEGINT-P   

;

 中断服务子程序的段基址送AX

WORDPTR[BX+2],AX  ;

中断服务子程序的段基址写入向量表

   STI  ;

IF=1,开中断

   …

   INT-P:

 …   

中断服务子程序

   IRET   

中断返回

 

(2)用DOS系统功能调用装入

  在DOSINT21H系统功能调用中,用25H号功能可设置中断向量,用35H号功能可获取中断向量。

  25H号功能调用的入口参数是:

  (AH)=25H

  (AL)=中断类型号

  (DS:

DX)=中断服务子程序的入口地址

  例如,设某中断的中断类型号n为40H,中断服务子程序的入口地址为INT-P,调用25H号功能装入中断向量的程序段如下:

   CLI              ;

IF=0,关中断

   MOV AL,40H          ;

中断类型号40H送AL

   MOV DX,SEGINT-P       

中断服务子程序的段基址送DS

   MOV DS,DX

   MOV DX,OFFSETINT-P     ;

中断服务子程序的偏移地址送DX

   MOV AH,25H    

 ;

25H功能调用

   INT 21H

   STI              ;

 …           ;

   IRET              ;

  35H号功能调用的入口参数是:

  (AH)=35H

  (AL)=中断类型号

  出口参数是:

  (ES:

BX)=中断服务子程序的入口地址

  例如,若从中断类型号为40H对应的向量表中取出中断向量,程序段如下。

   MOV   AH,35H

   MOV   AL,40H

   INT   21H

  该程序段执行之后,从向量表中获取的中断向量存放在ES和BX中,ES中存放段基址,BX中存放偏移地址。

  在实际应用中,为了不破坏向量表中的原始设置,通常在装入新的中断向量之前,先将原有的中断向量取出保存,待中断处理完毕,再将原中断向量恢复。

  3.中断处理

  当CPU工作在实地址模式下时,可以响应和处理外部中断NMI和INTR,内部中断类型0,1,3,4,5,6,7,8,9,12,13,16,共12种异常。

  按任务轻重缓急程度,系统规定中断处理的优先顺序是:

内部中断优先权最高(类型1单步除外),其次为NMI,再次是INTR,单步中断优先权最低。

  实地址模式下的中断处理流程如图6.6所示。

                       

            图6.6 实地址模式下的中断处理流程

  CPU在当前指令执行完毕后,按中断源的优先顺序去检测和查询是否有中断请求,当查询到有内部中断发生时,中断类型号n由CPU内部形成或由指令本身(INTn)提供;

当查询到有NMI请求时,自动转入中断类型2进行处理;

当查询到有INTR请求时,响应的条件是中断标志位IF=1,其中断类型号n由请求设备在中断响应周期自动给出;

当查询到单步请求TF=1时,并且在IF=1时自动转入中断类型1进行处理。

对于INTR请求引起的中断,CPU要连续产生两个低电平有效的中断响应周期

,进行中断处理。

  为了实现中断服务子程序与主程序之间的跳转与返回,CPU在响应中断请求后,执行中断处理前,由硬件自动地完成如下操作:

  ①获取中断类型号n,生成中断向量表地址4n。

  ②标志寄存器FR的内容压入堆栈保存。

  ③先将IF的值保存在TEMP中,然后将TF和IF清除,在中断响应过程中,禁止单步执行功能和再次响应新的INTR请求。

  ④断点CS:

IP压入堆栈保存。

 

  ⑤从中断向量表地址为4n的存储单元中取出中断向量送入CS和IP,继而转去执行中断服务子程序。

断点和标志位的出栈,是在中断服务子程序结束后由中断返回指令IRET来完成的。

6.2.3 保护模式下的中断与异常处理

  为了支持多任务操作和虚拟存储管理,80486CPU可以工作于保护模式。

在保护模式下,为每一个中断和异常定义了一个中断描述符,来说明中断和异常服务程序的入口地址的属性,所有的中断描述符都集中存放在中断描述符表(IDT)中,由中断描述符表取代实地址模式下的中断向量表。

1.中断描述符与中断描述符表

  中断描述符又称中断门,它用于描述中断和异常处理程序的属性。

  与实地址模式下的中断向量一样,保护模式下的中断描述符也充当引导程序到服务程序初始点执行的指针。

不同之处在于,在保护模式下,中断描述符要占据连续的8个字节单元。

中断描述符如图6.7所示:

           

               图6.7 中断描述符

图6.7中低地址的0和1两个字节是中断代码的偏移量A15~A0;

  高地址的6和7两个字节是中断代码的偏移量A31~A16;

  2和3两个字节是段选择符,段选择符和偏移量用来形成中断服务子程序的入口地址;

  4和5两个字节称为访问权限字节,它标识该中断描述符是否有效、服务程序的特权级和描述符的类型等信息。

  具体描述如下:

  P(present):

表示中断描述符的有效性。

P=1,中断描述符有效;

P=0,中断描述符无效。

  DPL(descriptorprivilegelevel):

表示中断优先级,是系统描述符被访问的特权级,DPL占用2位,有4种编码:

00,01,10和11,共4级特权级,0级优先级最高。

  TYPE:

指示中断描述符的不同类型,占用4位,在中断描述符表中有3种类型的描述符:

任务门、中断门和自陷门。

例如,1110指示32位中断门,1111指示32位自陷门,0101指示32位任务门。

  中断描述符表相当于实地址模式下的中断向量表,用于存放中断描述符。

表中最多可以包含256个中断描述符,每个中断描述符占用连续的8个字节,因此IDT共占用2KB存储空间,可以放在80486CPU物理地址空间的任何地方,该表的位置和大小由中断描述符表寄存器IDTR的值确定。

  IDTR包含32位的基地址和16位段限,基地址定义中断描述符表IDT在存储器中的起始点,段限定义中断描述符表所占的字节个数。

2.中断调用

  保护模式下中断调用过程如图6.8所示。

  当CPU响应外部中断请求或执行某条指令产生异常时,根据中断或异常的类型号n,从中断描述符表(IDT)中找到相应的中断门,由中断描述符中的段选择符指向全局描述符表(GDT)或局部描述符表(LDT)中的目标段描述符,此目标段描述符内的段基址指向中断服务子程序代码段的基地址,由该基地址与中断描述符中的偏移量之和形成中断服务子程序的入口地址。

具体实现方法如下:

根据中断类型号n,得到中断门在IDT中的起始地址,

即:

起始地址=IDT的基地址+n×

8

由中断门中的段选择符,从GDT或LDT中取出段描述符。

根据段描述符中提供的段基址和中断描述符中提供的偏移地址,合成中断服务子程序的入口地址。

               图6.8 保护模式下中断调用过程

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2