《微机原理与接口》第5章中断系统_第1页
《微机原理与接口》第5章中断系统_第2页
《微机原理与接口》第5章中断系统_第3页
《微机原理与接口》第5章中断系统_第4页
《微机原理与接口》第5章中断系统_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术微机原理与接口技术主讲主讲 易凡易凡 武汉大学物理学院电子科学与技术系武汉大学物理学院电子科学与技术系第五章第五章 中断系统中断系统5.1 5.1 中断的基本概念中断的基本概念中断中断处理器暂停执行现行的程序,转而处理随机事件,处理处理器暂停执行现行的程序,转而处理随机事件,处理完毕后再返回被中断的程序处继续执行,这一全过程称完毕后再返回被中断的程序处继续执行,这一全过程称为中断。为中断。中断服务程序中断服务程序1 1中断服务程序中断服务程序 2 2非预料事件非预料事件1 1非预料事件非预料事件 2 2CPU执行流程中断源中断源能够引发处理器中断的信息源称为中断源。能够引发处

2、理器中断的信息源称为中断源。常见的中断源:常见的中断源:一般输入输出设备,如图像管终端一般输入输出设备,如图像管终端, , 打印机等。打印机等。数据通道,如磁盘、磁带等。数据通道,如磁盘、磁带等。实时时钟,如定时器芯片实时时钟,如定时器芯片 8253 8253 产生的定时中断请求信产生的定时中断请求信号。号。故障信号,如电源掉电等。故障信号,如电源掉电等。软件中断,如为调试程序而设置的中断。软件中断,如为调试程序而设置的中断。5.1 5.1 中断的基本概念中断的基本概念中断系统中断系统系统为实现中断而采用的硬件和软件措施。系统为实现中断而采用的硬件和软件措施。计算机采用中断系统的目的计算机采用

3、中断系统的目的维持系统的正常工作,提高系统效率。维持系统的正常工作,提高系统效率。实时处理。实时处理。为故障处理作准备。为故障处理作准备。5.1 5.1 中断的基本概念中断的基本概念中断系统应具备的基本功能中断系统应具备的基本功能对于硬设备的中断请求,要具备屏蔽和开放功能,使得程对于硬设备的中断请求,要具备屏蔽和开放功能,使得程序员能灵活控制。序员能灵活控制。系统响应中断后,能保护系统响应中断后,能保护“现场现场” ” ,并自动转入中断处理。,并自动转入中断处理。中断处理结束,能自动正确返回断点处。中断处理结束,能自动正确返回断点处。能实现能实现“中断判优中断判优”,即,即中断源优先权中断源优

4、先权排队,当多个中断排队,当多个中断源同时提出中断请求时,高级别的请求被优先响应。源同时提出中断请求时,高级别的请求被优先响应。能实现能实现中断嵌套中断嵌套,即高级别的中断源能够中断低级别的中,即高级别的中断源能够中断低级别的中断服务程序。断服务程序。5.1 5.1 中断的基本概念中断的基本概念保护现场保护现场是指是指CPUCPU转去执行中断服务程序前的运行状态,包括转去执行中断服务程序前的运行状态,包括CPUCPU内内部各寄存器、部各寄存器、断点地址断点地址等。等。断点断点是指是指CPUCPU执行的现行程序被中断时的下一条指令的地址,又执行的现行程序被中断时的下一条指令的地址,又称称断点地址

5、断点地址中断嵌套:中断嵌套:当当CPUCPU正在进行某一级别中断源的中断处理时,若有更高级正在进行某一级别中断源的中断处理时,若有更高级别的新中断源发出请求,且新中断源满足响应条件,则别的新中断源发出请求,且新中断源满足响应条件,则CPUCPU应中止当前的中断服务程序,保护此程序的断点和现场,应中止当前的中断服务程序,保护此程序的断点和现场,转而响应高级中断。这种多级(重)中断的处理方式称为转而响应高级中断。这种多级(重)中断的处理方式称为“嵌套嵌套”5.1 5.1 中断的基本概念中断的基本概念1000:150H1000:150H. . . .MOVMOVAX, 0AX, 0ADDADDAX,

6、 DXAX, DXMOVMOVDI,AXDI,AX. . . .PUSHPUSHAXAX. . . .IRETIRETCPUCPU在执行此指令时,在执行此指令时,某中断源发申请中断某中断源发申请中断; ;CPUCPU在执行完该指令后,在执行完该指令后,转去执行中断子程转去执行中断子程地址地址1000:150H1000:150H为断点为断点p断点概念断点概念p中断嵌套过程示意图中断嵌套过程示意图CPUCPU执行流程执行流程中断服务程序中断服务程序1 1非预料事件非预料事件1 1中断服务程序中断服务程序2 2非预料事件非预料事件2 25.25.2 8086 8086中断系统中断系统80868086

7、系统可处理系统可处理256256个个的中断,可分为的中断,可分为软件中断软件中断和和硬件中断硬件中断两大类。两大类。软件中断:软件中断:由处理器执行某些指令引起的中断由处理器执行某些指令引起的中断 ,亦称,亦称内部中断内部中断包括:包括:除法出错、溢出、单步、断点和指令中断除法出错、溢出、单步、断点和指令中断等等硬件中断:硬件中断:由外部引脚由外部引脚NMINMI和和INTRINTR触发引起的中断,亦称触发引起的中断,亦称外部中断外部中断5.2.1 80865.2.1 8086系统的中断分类系统的中断分类图示图示软件中断软件中断除法出错中断除法出错中断0 0 类型中断类型中断当除数为当除数为

8、0 0 或商超出了有关寄存器能表示的数值范围,或商超出了有关寄存器能表示的数值范围,则产生除法出错中断。则产生除法出错中断。例如例如movmovbl,0bl,0idividivblbl;除数;除数 0 0 ,产生除法错中断,产生除法错中断movmovax,200 hax,200 hmovmovbl,1bl,1divdivblbl;商;商 200 H 200 H ,不能用,不能用 AL AL 表达表达;产生除法错中断;产生除法错中断由处理器执行某些指令引起的中断由处理器执行某些指令引起的中断 ( ( 亦称亦称内部中断内部中断) ) ,包括:包括:除法出错、溢出、单步、断点和指令中断除法出错、溢出

9、、单步、断点和指令中断等等软件中断软件中断单步中断单步中断1 1 类型中断类型中断在单步标志在单步标志 TF=1TF=1 且中断允许标志且中断允许标志 IF=1IF=1 时,每执行一条时,每执行一条指令就引起一次中断。指令就引起一次中断。 断点中断断点中断3 3 类型中断类型中断主要用在除错调试程序中主要用在除错调试程序中, , 利用利用 “ “ INT 3INT 3” ” 设置断点设置断点, , 目目的是显示断点前程序执行结果。的是显示断点前程序执行结果。 溢出中断溢出中断 4 4 类型中断类型中断当溢出标志当溢出标志OF=1OF=1时,执行指令时,执行指令INTOINTO则产生溢出中断。则

10、产生溢出中断。例如例如MOVMOVAX ,2000 HAX ,2000 HADDADDAX ,7000 HAX ,7000 HINTOINTO; 2000 H 2000 H 7000 H 7000 H 9000 H 9000 H ,溢出:,溢出:OF=1OF=1;因为因为OF=1OF=1 ,所以产生溢出中断,所以产生溢出中断软件中断软件中断n 中断指令中断指令 INT NINT NINT NINT N 是中断指令,是中断指令, N N 是中断类型号是中断类型号 ( (0 0 0 FFH0 FFH) )DOSDOS系统功能系统功能, , 基本输入输出系统(基本输入输出系统(BIOSBIOS)的功

11、能即是)的功能即是用用 INT N INT N 指令中断调用。指令中断调用。硬件中断硬件中断由处理器外部引脚由处理器外部引脚 NMINMI和和INTRINTR引起的中断称为引起的中断称为硬件硬件中断中断 ( ( 亦称为亦称为外部中断外部中断) )u非屏蔽中断非屏蔽中断通过处理器的通过处理器的 NMINMI( ( 非屏蔽中断非屏蔽中断) ) 引脚进入,它不受中断引脚进入,它不受中断允许标志的屏蔽,微处理器无法禁止,将在当前指令执允许标志的屏蔽,微处理器无法禁止,将在当前指令执行结束予以响应;行结束予以响应;8086 8086 的非屏蔽中断的类型号为的非屏蔽中断的类型号为 2 2 ;非屏蔽中断主要

12、用于处理系统的意外或故障例如:非屏蔽中断主要用于处理系统的意外或故障例如:电源调电前的数据保护电源调电前的数据保护存储器读写错误的处理存储器读写错误的处理u可屏蔽中断可屏蔽中断中断请求信号通过中断请求信号通过CPUCPU的的I INTRNTR引脚进入;引脚进入;中断响应信号从中断响应信号从INTAINTA引脚发出;引脚发出;IF=1IF=1时时, , CPUCPU响应中断;响应中断;IF=0, IF=0, 中断请求被屏蔽中断请求被屏蔽通常可屏蔽中断源经过中断控制器通常可屏蔽中断源经过中断控制器82598259A A管理再向管理再向CPUCPU发发INTRINTR请求。请求。p中断标志中断标志I

13、FIF的状态的状态指令指令 CLI CLI ,关中断,禁止中断,中断屏蔽复位,使关中断,禁止中断,中断屏蔽复位,使IFIF 0 0任何一个中断被响应,亦使任何一个中断被响应,亦使IFIF 0 0指令指令 STISTI ,开中断、允许中断、中断开放执行,使,开中断、允许中断、中断开放执行,使IFIF 1 1执行指令执行指令 IRET IRET 恢复原恢复原IFIF状态状态中断类型码中断类型码p80868086可以处理可以处理256256个中断请求。每个中断请求均对应个中断请求。每个中断请求均对应于唯一固定的类型号(码),亦称为中断类型码于唯一固定的类型号(码),亦称为中断类型码中断类型号及功能分

14、配中断类型号及功能分配类型码类型码中断源中断源类型码类型码中断源中断源类型码类型码中断源中断源00H00H被被0 0除除0FH0FH并口并口1 1(打印机)中断(打印机)中断1EH1EH磁盘参数磁盘参数01H01H单步中断单步中断10H10H显示器驱动程序显示器驱动程序1FH1FH图形字符集图形字符集02H02HNMINMI11H11H设备检测设备检测20H20H程序结束程序结束03H03H断点中断断点中断12H12H存储器检测存储器检测21H21HDOSDOS系统调用系统调用IBM-PC/XTIBM-PC/XT中断类型号的功能分配中断类型号的功能分配类型码类型码中断源中断源类型码类型码中断源

15、中断源类型码类型码中断源中断源04H04H溢出中断溢出中断13H13H软盘驱动程序软盘驱动程序22H22H结束地址结束地址05H05H屏幕打印中断屏幕打印中断14H14H通信驱动程序通信驱动程序23H23HCtrl-BreakCtrl-Break夭折键处理夭折键处理06H06H(保留)(保留)15H15H盒式磁带机驱动程序盒式磁带机驱动程序24H24H关键性错误处理关键性错误处理07H07H(保留)(保留)16H16H硬盘驱动程序硬盘驱动程序25H25H磁盘顺序读磁盘顺序读08H08H定时电路中断定时电路中断17H17H打印机驱动程序打印机驱动程序26H26H磁盘顺序写磁盘顺序写09H09H键

16、盘中断键盘中断18H18HBASICBASIC程序程序27H27H程序结束且驻留内存程序结束且驻留内存0AH0AH保留的硬件保留的硬件( (级联级联) )中中断断19H19H引导(引导(BOOTBOOT)程序)程序28H28HDOSDOS内部使用内部使用0BH0BH异步串口异步串口2 2中断中断1AH1AH年月日定时中断年月日定时中断292922E EDOSDOS保留使用保留使用0CH0CH异步串口异步串口1 1中断中断1BH1BH用户键盘用户键盘2FH2FHDOSDOS内部使用内部使用0DH0DH并口并口2(2(硬磁盘硬磁盘) )中断中断1CH1CH用户定时器时标用户定时器时标3030 3F

17、3FDOSDOS保留使用保留使用0EH0EH软盘中断软盘中断1DH1DHCRTCRT初始化参数初始化参数5.2.2 5.2.2 中断处理过程中断处理过程中断过程中断过程分为:中断请求、中断响应两个过程分为:中断请求、中断响应两个过程u中断请求过程中断请求过程中断源向处理器发出请求中断信号;中断源向处理器发出请求中断信号;中断信号将被锁存,一直保持;中断信号将被锁存,一直保持;直到处理器响应中断后,中断请求信号才被能清除直到处理器响应中断后,中断请求信号才被能清除中断过程(续)中断过程(续)u中断响应过程中断响应过程处理器在执行每条指令的最后一个时钟周期检测中断请处理器在执行每条指令的最后一个时

18、钟周期检测中断请求信号若发现中断请求信号有效,在允许中断的条件下,求信号若发现中断请求信号有效,在允许中断的条件下,处理器响应中断;处理器响应中断;中断响应过程可细分为:中断响应过程可细分为:响应、处理、返回响应、处理、返回3 3个子过程个子过程p响应过程:响应过程:微处理器自动完成微处理器自动完成 3 3 项任务:项任务:标志寄存器(标志寄存器(FLAGS)FLAGS)内容入栈保护内容入栈保护关闭中断(关闭中断(IF=0IF=0),以禁止其它中断请求;),以禁止其它中断请求;断点断点 (IP(IP和和CS)CS)栈保护;栈保护;获得中断服务程序入口地址,转入中断服务子程序。获得中断服务程序入

19、口地址,转入中断服务子程序。p处理过程处理过程该过程是在中断子程序中完成,它位于中断子程序之首,该过程是在中断子程序中完成,它位于中断子程序之首,主要包括主要包括3个部分:个部分: 保护现场保护现场将相关工作寄存器的内容压栈保护;将相关工作寄存器的内容压栈保护; 开中断(使开中断(使IF=1IF=1)为了响应高级别的外部中断,则需要打开中断;为了响应高级别的外部中断,则需要打开中断; 执行中断服务程序执行中断服务程序中断子程序的主要部分,完成中断源的任务。中断子程序的主要部分,完成中断源的任务。中断过程(续)中断过程(续)p返回过程返回过程该过程也是在中断子程序中完成,位于子程序的尾部,它该过

20、程也是在中断子程序中完成,位于子程序的尾部,它主要包括主要包括3个部分:个部分: 关中断(关中断(IF=0IF=0)使得中断被禁止,可顺利恢复现场。使得中断被禁止,可顺利恢复现场。 恢复现场恢复现场将压栈保护的内容顺序出栈给相关寄存器将压栈保护的内容顺序出栈给相关寄存器 中断返回中断返回中断服务子程序的最后是一条中断返回指令中断服务子程序的最后是一条中断返回指令 IRETIRET ,它,它执行后处理器自动从堆栈中弹出执行后处理器自动从堆栈中弹出 IPIP、CSCS和和FLAGSFLAGS的内的内容容, , 返回主程序继续执行。返回主程序继续执行。中断过程(续)中断过程(续)Y还有还有NMITE

21、MP1标志寄存器入栈标志寄存器入栈TEMPTF,IFTF0CS:IP入栈入栈获取中断向量获取中断向量执行服务程序执行服务程序弹出弹出CS:IP弹出标志寄存器弹出标志寄存器返回被中断程序返回被中断程序(1)(2)(3)(4)(7)NNY(9)(8)u中断响应中断响应过程图示过程图示u中断响应周期时序中断响应周期时序CPUCPU从引脚从引脚/INTA /INTA 发中断响应信号,接口芯片接收此信发中断响应信号,接口芯片接收此信号,把中断类型号准备好;号,把中断类型号准备好;CPUCPU再从引脚再从引脚/INTA /INTA 发中断响应信号,接口芯片接此信发中断响应信号,接口芯片接此信号后,将中断类

22、型号送至数据总线上;号后,将中断类型号送至数据总线上;CPUCPU从数据总线获取中断类型号。从数据总线获取中断类型号。向量类型向量类型 INTACLKAD7AD0T1T2T3T4第第 一一 个中断响应周期个中断响应周期T1T2T3T4第第 二二 个中断响应周期个中断响应周期中断源优先权中断源优先权n8086 8086 各种中断源的优先权,实际上是指被识别出各种中断源的优先权,实际上是指被识别出来的先后;来的先后;nCPUCPU查询中断请求,而查询中断的顺序确定了中断查询中断请求,而查询中断的顺序确定了中断源的优先权源的优先权n80868086系统的各种中断源的优先权顺序为:系统的各种中断源的优

23、先权顺序为:p软件中断软件中断除法错中断除法错中断指令中断指令中断溢出中断溢出中断p非屏蔽(非屏蔽(NMINMI)中断)中断p可屏蔽(可屏蔽(INTRINTR)中断)中断p单步中断单步中断高高低低NMIN软件中断软件中断INTRTF=1中断响应周期中断响应周期读中断向量号读中断向量号下条指令下条指令现行指令现行指令IF1NNNNYYYYY查询中断源优先权顺序图示查询中断源优先权顺序图示中断向量与向量表中断向量与向量表n中断向量中断向量中断服务子程序的入口地址亦称中断向量;中断服务子程序的入口地址亦称中断向量;每个中断向量共占每个中断向量共占4 4个字节,它分为两部分个字节,它分为两部分n中断服

24、务子程序所在段的段基址中断服务子程序所在段的段基址(2 (2个字节个字节) )n中断服务子程序入口的偏移地址中断服务子程序入口的偏移地址(2 (2个字节个字节) )图示图示中断向量表中断向量表一个中断向量为一个中断向量为4 4个字节个字节, , 256 256种中断的中断向量总共占用种中断的中断向量总共占用 1K1K字节字节。在在 8086 8086 系统中,将所有的中断向量按类型码顺序存放于系统中,将所有的中断向量按类型码顺序存放于内存的最低地址内存的最低地址( (00000 H00000 H003 FFH003 FFH) )的的1K1K单元中。单元中。存放中断向量的这存放中断向量的这1K1

25、K内存单元区称为内存单元区称为中断向量表中断向量表图示图示n中断向量在中断向量表中的位置中断向量在中断向量表中的位置: :地址地址= N= N4 4( N N4 43 3 )N N 4 4 字单元存放偏移地址字单元存放偏移地址N N 4 4 2 2 的字单元存放段基址的字单元存放段基址中断向量和中断向量表中断向量和中断向量表u中断向量表举例中断向量表举例例例5.1 5.1 类型类型5 5的中断向量在向量表中的位置在的中断向量在向量表中的位置在: :5 54 45 54 43=14H3=14H17 H 17 H 的的 4 4 个单元中个单元中14 H14 H、15 H 15 H 单元存放中断服务

26、子程序入口的偏移地址单元存放中断服务子程序入口的偏移地址16 H16 H、17 H 17 H 单元存放中断服务子程序入口的段基址单元存放中断服务子程序入口的段基址例例5.2 5.2 处理器执行处理器执行INT 21H INT 21H 指令时指令时, , 中断向量的引导过程。中断向量的引导过程。设设21H21H型中断服务程序被放在地址为型中断服务程序被放在地址为: XX:YY: XX:YY开始的内存区;开始的内存区;中断向量中断向量XX:YYXX:YY存放在:存放在:4 421H21H4 421H21H3 3的单元中的单元中;处理器取出处理器取出INT 21HINT 21H指令后指令后, ,CS

27、:IPCS:IP为下一指令为下一指令( (标号标号NEXT:NEXT:) ) 存存放单元的物理地址。放单元的物理地址。图示图示处理器执行处理器执行INT 21H INT 21H 之后:之后:FAGSFAGS、CSCS、IPIP的当前值被压栈保护;的当前值被压栈保护;CPUCPU从向量表的从向量表的4 42121H H4 421H21H3 3的单元中取得中断向量的单元中取得中断向量,并写入,并写入IPIP, CSCS之中;之中;CPUCPU根据根据CSCS:IPIP值转向值转向2121H H型中断服务程序。型中断服务程序。中断程序执行完毕,执行中断程序执行完毕,执行 IRET IRET 指令,退

28、出中断:指令,退出中断:CPUCPU从栈顶顺序弹出保护的断点给从栈顶顺序弹出保护的断点给 IP IP 、 CSCS、FLAGSFLAGS;根据根据 CS: IP CS: IP 返回断点返回断点 ( NEXT:) ( NEXT:) ,继续执行主程序。,继续执行主程序。u中断向量表举例中断向量表举例中断向量表的初始化中断向量表的初始化由基本输出入系统提供的服务程序由基本输出入系统提供的服务程序, ,其中断向量是在系统加电其中断向量是在系统加电后由基本输出入系统负责设置。后由基本输出入系统负责设置。由操作系统提供的服务程序由操作系统提供的服务程序, , 其中断向量是在启动操作系统其中断向量是在启动操

29、作系统时由操作系统负责设置。时由操作系统负责设置。用户开发的中断服务程序用户开发的中断服务程序, , 需要设置中断向量。需要设置中断向量。n设置中断向量的方法设置中断向量的方法例例5.3 5.3 设置类型设置类型N N的中断向量的中断向量, , 其中断服务程序名为:其中断服务程序名为:INTHAND INTHAND 。直接将中断向量传送至中断向量表中相应单元存放直接将中断向量传送至中断向量表中相应单元存放u直接指令装入法直接指令装入法例例 5.3 5.3 设置中断向量设置中断向量, , 其中断服务程序名为其中断服务程序名为INTHANDINTHANDMOVMOV AX , 0 AX , 0 M

30、OVMOV ES , AXES , AX; set to base of interrupt vector; set to base of interrupt vectorMOVMOV BX , NBX , N4 4; offset of type N interrupt; offset of type N interruptMOVMOV AX , OFFSET INTHANDAX , OFFSET INTHANDMOVMOV ES: WORD PTR BX,AXES: WORD PTR BX,AX; set addr of; set addr of INTHANDINTHANDMOVMOV

31、AX , SEG INTHANDAX , SEG INTHANDMOVMOV ES:WORD PTR BX+2,AXES:WORD PTR BX+2,AXINTHAND:INTHAND:; interrupt processing routine; interrupt processing routine IRET IRETn设置中断向量的方法设置中断向量的方法u用用DOSDOS系统功能调用系统功能调用 (INT 21 H) (INT 21 H) 设置中断向量设置中断向量p25 H 25 H 功能:设置中断向量功能:设置中断向量预置预置: :AH =25 HAH =25 H AL= AL= 中

32、断类型号(中断类型号(N N )DS: DX= DS: DX= 中断向量中断向量执行执行: :INT 21 HINT 21 Hn设置中断向量的方法设置中断向量的方法p35 H 35 H 功能:取中断向量功能:取中断向量预置预置: :AH =35 HAH =35 HAL= AL= 中断类型号(中断类型号(N N )执行执行: :INT 21 HINT 21 H返回返回: :ES: BX= ES: BX= 中断向量中断向量例例5.4 5.4 使用使用DOSDOS功能调用存取中断向量。功能调用存取中断向量。MOVMOV AL , NAL , N; type N interrupt; type N i

33、nterruptMOVMOV AH , 35HAH , 35H; get interrupt vector; get interrupt vectorINTINT 21H21HPUSHPUSHESES; save the old base and; save the old base andPUSHPUSHBXBX; offset of interrupt N; offset of interrupt NMOV MOV AX , SEG INTHANDAX , SEG INTHANDMOV MOV DS , AXDS , AX; base of INTHAND in DS; base of I

34、NTHAND in DSMOV MOV DX , OFFSET INTHANDDX , OFFSET INTHANDMOVMOV AL , NAL , N; type N; type NMOVMOV AH , 25HAH , 25H; set interrupt vector; set interrupt vectorINTINT 21H21Hn设置中断向量的方法设置中断向量的方法( (举例)举例)POP DXPOP DX; restore the old offset; restore the old offsetPOP DSPOP DS; and base of interrupt; an

35、d base of interruptMOV AL , NMOV AL , N; type N; type NMOV AH , 25HMOV AH , 25H; set interrupt vector; set interrupt vectorINT 21HINT 21HRETRET; return interrupt processing routine; return interrupt processing routineINTHAND:INTHAND: IRET IRET设置中断向量的方法设置中断向量的方法( (举例)举例)5.2.35.2.3 中断程序的编写中断程序的编写中断程序的

36、结构中断程序的结构为了实现中断,要编写主程序和中断子程序;为了实现中断,要编写主程序和中断子程序;主程序主程序包括:中断向量表初始化(先保存原中断向量的内包括:中断向量表初始化(先保存原中断向量的内容容, , 然后接管中断向量使其指向编制的新中断服务程序),然后接管中断向量使其指向编制的新中断服务程序),开中断。在应用程序终止退出前开中断。在应用程序终止退出前, , 从变量中获取原中断向量从变量中获取原中断向量恢复到中断向量表中。恢复到中断向量表中。中断子程序中断子程序包括:保护现场,中断服务,发中断结束命令包括:保护现场,中断服务,发中断结束命令(EOIEOI),中断返回),中断返回中断程序

37、结构中断程序结构( (举例)举例)例例5.5 实际中断程序的结构如下实际中断程序的结构如下:; ; 堆栈段堆栈段STACKSTACK SEGMENT STACK STACK SEGMENT STACK STACK DWDW128 DUP(0)128 DUP(0)STACKSTACK ENDSENDS;数据段;数据段DATADATASEGMENT DATASEGMENT DATAINT_SEGINT_SEGDW ? ; DW ? ; 定义变量定义变量, ,以保存中断向量段址以保存中断向量段址INT_OFFINT_OFFDW ? ; DW ? ; 定义变量定义变量, ,以保存中断向量偏移量以保存中

38、断向量偏移量DATADATAENDSENDS ;代码段;代码段CODECODESEGMENT CODESEGMENT CODEASSUMEASSUMECS: CODE , DS: DATA , SS: STACKCS: CODE , DS: DATA , SS: STACKSTART: START: MOVMOVAX , DATAAX , DATA; ; 建立数据段址建立数据段址MOVMOVDS , AXDS , AXMOVMOVAL , N AL , N ; N; N为指定中断号为指定中断号MOVMOVAH , 35HAH , 35H; ; 获取中断向量获取中断向量INTINT21H21HM

39、OVMOVINT_SEG , ESINT_SEG , ES; ;保存中断向量段址保存中断向量段址MOVMOVINT_OFF , BXINT_OFF , BX; ; 保存中断向量偏移量保存中断向量偏移量CLICLI中断程序结构中断程序结构( (举例)举例)MOVMOVAL , NAL , N; N; N为指定中断号为指定中断号MOVMOVAH , 25HAH , 25H; ; 设置中断向量设置中断向量MOVMOVDX , SEG INT_PRDX , SEG INT_PRMOVMOVDS , DXDS , DX; DS; DS指向新中断向量段址指向新中断向量段址MOVMOVDX , OFFSET

40、 INT_PRDX , OFFSET INT_PR; DX; DX指向新中断指向新中断INTINT21H21H; ; 向量偏移量向量偏移量MOVMOVAX , DATAAX , DATAMOVMOVDS , AXDS , AX; ; 恢复数据段寻址恢复数据段寻址STI STI ; ; 开中断开中断 ; ; 主程序主体主程序主体( (略略) )中断程序结构中断程序结构( (举例)举例)CLI CLI ; ; 恢复中断向量前关中断恢复中断向量前关中断MOVMOVAL , NAL , N; N; N为指定中断号为指定中断号MOVMOVAH , 25HAH , 25H; ; 恢复原中断向量恢复原中断向

41、量MOVMOVDX , INT_OFFDX , INT_OFF; DX; DX指向原中断向量偏移量指向原中断向量偏移量MOVMOVBX , INT_SEGBX , INT_SEGMOVMOVDS , BXDS , BX; DS; DS指向原中断向量段址指向原中断向量段址INTINT21H STI21H STI; ; 开中断开中断MOVMOVAX , 4C00HAX , 4C00H; ; 主程序终止退出主程序终止退出INTINT21H21H; ; 返回返回DOSDOS中断程序结构中断程序结构( (举例)举例);中断子程序中断子程序INT_PRINT_PRPROC FARPROC FAR; ; 新

42、中断服务程序新中断服务程序STISTI; ;入口处开中断入口处开中断PUSH PUSH ; ; 保存用到的寄存器保存用到的寄存器 PUSH PUSH 中断服务程序主体中断服务程序主体( (略略) ) 中断程序结构中断程序结构( (举例)举例) POPPOP ; ; 恢复入口寄存器恢复入口寄存器 POPPOPMOVMOVAL , 020HAL , 020H ; ; 发中断结束命令发中断结束命令( (EOI)EOI)OUTOUT020H , AL020H , ALIRET IRET ; ; 中断返回中断返回INT_PRINT_PRENDPENDP; ; 中断程序结束中断程序结束CODECODEEN

43、DSENDS; ; 主程序结束主程序结束END STARTEND START中断程序结构中断程序结构( (举例)举例)内部中断服务程序的编写内部中断服务程序的编写u编写内部中断服务程序与编写子程序类似编写内部中断服务程序与编写子程序类似利用过程定义伪指令利用过程定义伪指令PROC/ENDPPROC/ENDP第第1 1条指令通常为开中断指令条指令通常为开中断指令STISTI最后用中断返回指令最后用中断返回指令IRETIRET通常采用寄存器传递参数通常采用寄存器传递参数u主程序需写的语句主程序需写的语句主程序需要调用中断服务程序主程序需要调用中断服务程序调用前,需要设置中断向量调用前,需要设置中断

44、向量利用利用INT nINT n指令调用中断服务程序指令调用中断服务程序u内部中断服务程序举例例例5.65.6编写编写80H80H号中断服务程序号中断服务程序功能:显示以功能:显示以“0”0”结尾字符串的功能结尾字符串的功能利用显示器功能调用利用显示器功能调用INT 10HINT 10H(显示一个字符)(显示一个字符)字符串缓冲区首地址为入口参数字符串缓冲区首地址为入口参数DS:DXDS:DX(段地址:偏移地址)传递参数(段地址:偏移地址)传递参数数据段数据段intoffdw ?intsegdw ?intmsg db A Instruction Interrupt !db 0dh,0ah,0例

45、例5.65.6以以“0”结尾结尾回车、换行回车、换行保存中断向量保存中断向量mov ax , 3580hint21hmov intoff , bx;保存偏移地址保存偏移地址mov intseg,es;保存段基地址保存段基地址例例5.65.6获取中断向量(获取中断向量(DOSDOS功能调用功能调用INT 21HINT 21H)功能号:功能号:AHAH35H35H入口参数:入口参数:ALAL中断向量号中断向量号出口参数:出口参数:ES:BXES:BX中断向量(段地址:偏移地址)中断向量(段地址:偏移地址)设置中断向量设置中断向量push dsmov dx , offset new80hmov ax

46、 , seg new80hmov ds,axmov ax , 2580hInt 21hpop ds例例5.65.6设置中断向量(设置中断向量(DOSDOS功能调用功能调用INT 21HINT 21H)功能号:功能号:AHAH25H25H入口参数:入口参数:ALAL中断向量号中断向量号DS:DXDS:DX中断向量(段地址:偏移地址)中断向量(段地址:偏移地址)调用中断服务程序调用中断服务程序mov dx , offset intmsgint 80h ;调用;调用80H中断服务程序中断服务程序例例5.65.6A Instruction Interrupt !;设置入口参数:;设置入口参数: DSD

47、S段地址(已设置)段地址(已设置)DXDX偏移地址偏移地址进入中断服务程序进入中断服务程序new80h procsti;开中断开中断push ax;保护寄存器保护寄存器push bxpush si例例5.65.6A Instruction Interrupt !;80H80H号内部中断服务程序:号内部中断服务程序:;显示字符串(以;显示字符串(以“0”0”结尾)结尾);入口参数:;入口参数:DS:DXDS:DX缓冲器首地址缓冲器首地址显示字符串显示字符串mov si,dxnew1:mov al,sicmp al,0jz new2mov bx,0mov ah,0ehint 10hinc sijm

48、p new1例例5.65.6A Instruction Interrupt !退出中断服务程序退出中断服务程序new2:pop si;恢复寄存器恢复寄存器pop bxpop axiret;中断返回中断返回new80h endp例例5.65.6A Instruction Interrupt !主程序结束主程序结束mov dx , intoffmov ax , intsegmov ds , axmov ax , 2580hint 21hmov ax , 4c00hint 21h例例5.65.6A Instruction Interrupt !5.2.4 5.2.4 外部中断源的管理外部中断源的管理

49、u多个外部硬件中断源共用一条多个外部硬件中断源共用一条INTRINTR线时,要在程序线时,要在程序中采取一定措施或用外部硬件解决中断源的优先权中采取一定措施或用外部硬件解决中断源的优先权排列和多级中断的嵌套。排列和多级中断的嵌套。u中断优先权(优先级):就是为每个中断源所确定中断优先权(优先级):就是为每个中断源所确定的响应级别,可通过软件排序或硬件排序方式实现的响应级别,可通过软件排序或硬件排序方式实现外部中断源的管理外部中断源的管理n软件排序软件排序pCPUCPU响应中断后,在程序中用查询的方法判定外设响应中断后,在程序中用查询的方法判定外设的中断请求的优先顺序。的中断请求的优先顺序。p软

50、件查询排序的特点是:软件查询排序的特点是:查询次序即优先权排序查询次序即优先权排序节省硬件节省硬件修改方便,只要改变程序中的查询次序即可修改方便,只要改变程序中的查询次序即可由询问转至真正的服务程序入口时间长由询问转至真正的服务程序入口时间长外部中断源的管理外部中断源的管理n硬件排序:硬件排序:p采用优先权的编码电路,对各种外部硬中断进行采用优先权的编码电路,对各种外部硬中断进行排队。排队。p方法:方法:简单简单 排队编码电路排队编码电路菊花链式硬件排序电路菊花链式硬件排序电路中断控制集成芯片中断控制集成芯片8259A8259Au软件法排序的接口电路示意图软件法排序的接口电路示意图u软件查询程

51、序流程图软件查询程序流程图u软件法排序程序软件法排序程序ININALAL,20H20H;读中断触发器的状态;读中断触发器的状态TESTTESTALAL,80H80H;有电源故障请求?;有电源故障请求?JZJZB1B1;没有,继续查询;没有,继续查询JMPJMPPWFPWF;转至电源故障程序入口;转至电源故障程序入口B1B1:TESTTESTALAL,40H40H;有磁盘请求吗?;有磁盘请求吗?JZJZB2B2;无,继续查询;无,继续查询JMPJMPDISSDISS;转至磁盘服务程序;转至磁盘服务程序B2B2:TESTTESTALAL,20H20H;有磁带请求吗?;有磁带请求吗?JZJZB3B3

52、;无,继续查询;无,继续查询JMPJMPMTMT;转至磁带服务程序;转至磁带服务程序B3B3:TESTTESTALAL,10H10H;有;有CRTCRT请求?请求?JZJZB4B4;无,继续查询;无,继续查询u软件法排序程序软件法排序程序JMPJMPCRTCRT;转至;转至CRTCRT显示服务程序显示服务程序B4B4:TEST ALTEST AL,08H08H;有纸带请求?;有纸带请求?JZ JZ B5B5;无,继续查询;无,继续查询JMP JMP PINPIN;转至纸带输入服务程序;转至纸带输入服务程序B5B5:TEST ALTEST AL,04H04H;有纸带穿孔请求吗?;有纸带穿孔请求吗

53、?JZ JZ B6B6;无,继续查询;无,继续查询JMP JMP PHPH;转至纸带穿孔服务程序;转至纸带穿孔服务程序B6B6:TEST ALTEST AL,02H02H;是键盘输入中断请求吗?;是键盘输入中断请求吗?JZ JZ POUTPOUT;否,转打印中断服务程序;否,转打印中断服务程序JMP JMP KEYINKEYIN;转至键盘输入中断服务程序;转至键盘输入中断服务程序POUTPOUT: u硬件优先权排序电路硬件优先权排序电路u菊花链优先排队菊花链优先排队5.3 5.3 中断控制器中断控制器82598259A A8259A中断控制器由中断控制器由 INTEL公司设计。公司设计。1片片

54、8259A管理管理8级中断源级中断源, 多片多片8259A用级连方式可使管理级用级连方式可使管理级别扩充。使用单一别扩充。使用单一+5V电源供电。电源供电。5.35.3.1 .1 82598259A A的结构及工作方式的结构及工作方式82598259A A的内部结构的内部结构pIRR中断请求寄存器中断请求寄存器(8位位)保存保存8 8个(个(IR0IR0IR7IR7)外部中断请求信号)外部中断请求信号DiDi1 1,表示,表示IRiIRi引脚有中断请求引脚有中断请求DiDi0 0,表示,表示IRiIRi引脚无中断请求引脚无中断请求图示图示pIR中断屏蔽寄存器中断屏蔽寄存器(8位位)保存对中断请

55、求信号保存对中断请求信号IRiIRi的屏蔽状态;的屏蔽状态;DiDi1 1,则,则IRiIRi引入的中断被屏蔽(关闭);引入的中断被屏蔽(关闭);DiDi0 0,则,则IRiIRi引入的中断被开放。引入的中断被开放。82598259A A的内部结构的内部结构pPR优先权判别器优先权判别器(8位位)当当IR7IR7IR0IR0端有多个中断请求同时发生时端有多个中断请求同时发生时, , 由由PRPR判定其最高判定其最高优先权;优先权;在在INTAINTA脉冲期间将它置入中断服务寄存器脉冲期间将它置入中断服务寄存器ISRISR的相应位。的相应位。pISR中断服务寄存器中断服务寄存器(8位位)保存正在

56、被保存正在被8259A8259A服务着的中断状态;服务着的中断状态;DiDi1 1,表示,表示IRiIRi中断正在服务中;中断正在服务中;DiDi0 0,表示没有被服务。,表示没有被服务。p数据总线缓冲器数据总线缓冲器8 8位双向三态缓冲器,构成位双向三态缓冲器,构成82598259A A与系统数据线的接口。对与系统数据线的接口。对82598259A A编程写入的命令字和读出编程写入的命令字和读出82598259A A状态信息都是通过它状态信息都是通过它传送。传送。p读写控制逻辑读写控制逻辑接收读接收读/ /写控制信号写控制信号RD / WRRD / WR、片选信号、片选信号CSCS和端口选择

57、信号和端口选择信号A0 A0 。一片一片82598259A A在系统中占用在系统中占用2 2个口地址个口地址, , 用地址线用地址线A0A0来选择来选择端口;用高位地址线通过译码产生端口;用高位地址线通过译码产生82598259A A的片选信号。的片选信号。82598259A A的内部结构的内部结构p控制电路控制电路包括命令字包括命令字( (ICW1ICW1ICW4ICW4) )寄存器,操作字寄存器,操作字( (OCW1OCW1OCW3OCW3) )寄存器和相关的控制逻辑;寄存器和相关的控制逻辑;通过通过INTINT端向端向CPUCPU发中断请求信号发中断请求信号, , 从从INTAINTA端

58、接收端接收CPUCPU的中的中断响应信号断响应信号, , 控制控制82598259A A进入中断状态。进入中断状态。p级连缓冲级连缓冲/比较器比较器一片一片82598259A A只能接收只能接收8 8级中断级中断, , 当超过当超过8 8级时级时, ,可用多片可用多片82598259A A级级连使用连使用, , 构成主从结构,扩充到构成主从结构,扩充到6464级。级。82598259A A的内部结构的内部结构中断级连方式的连接中断级连方式的连接一个系统中,一个系统中,8259A8259A可以级连,有一个主可以级连,有一个主8259A8259A,若干个,若干个(最多(最多8 8个)从个)从825

59、9A8259A级连时,主级连时,主8259A8259A的三条级连线的三条级连线CASCAS0 0CASCAS2 2作为输出线,作为输出线,连至每个从连至每个从8259A8259A的的CASCAS0 0CASCAS2 2每个从每个从8259A8259A的中断请求信号的中断请求信号INTINT,连至主,连至主8259A8259A的一个中的一个中断请求输入端断请求输入端IRIRi i主主8259A8259A的的INTINT线连至线连至CPUCPU的中断请求输入端的中断请求输入端INTRINTRSP/ENSP/EN在非缓冲方式下:在非缓冲方式下:当当SPSP1 1,该该8259A8259A是主片;是主

60、片;当当SPSP0 0,该该8259A8259A是从片是从片动画动画图示图示82598259A A的引脚功能的引脚功能D7D7D0 D0 : : 双向数据总线。传送控制、状态信息和中断类型号。双向数据总线。传送控制、状态信息和中断类型号。WRWR* * : : 写信号。输入写信号。输入, , 低电平有效。当有效时低电平有效。当有效时, 8259, 8259A A接收接收CPUCPU送来的命令字。送来的命令字。RDRD* * : : 读信号。输入读信号。输入, , 低电平有效。当有效时低电平有效。当有效时, 8259, 8259A A将状态信将状态信息放入数据总线供息放入数据总线供CPUCPU检

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论