南邮微机原理课件第9章

上传人:抢*** 文档编号:243004744 上传时间:2024-09-13 格式:PPT 页数:132 大小:907KB
返回 下载 相关 举报
南邮微机原理课件第9章_第1页
第1页 / 共132页
南邮微机原理课件第9章_第2页
第2页 / 共132页
南邮微机原理课件第9章_第3页
第3页 / 共132页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第九章 中 断,.1 基本概念,复习查询方式输入,当外设数据未准备好时,,要不断查询,,CPU,效率低,读取状态信息,数据准备好?,从数据口读数据,N,Y,1.中断方式示意,(以输入中断为例),数据,中断请求,中断响应,数据,断点,现,行,程,序,中,断,服,务,子,程,序,现,行,程,序,输,入,设,备,输,入,接,口,启动,CPU,2. 什么是中断,?,CPU,暂停执行现行程序,转而处理随机事件,处理完,毕后再返回被中断的程序,这一全过程称为中断。,3. 中断源,能够引发,CPU,中断的信息源,(1)外部中断源(硬件中断源),。I/O,设备 如键盘、显示器、打印机,。数据通道 如磁带、磁盘,。时钟 如8254 0#,由此引发的中断,。故障源 如掉电、存贮器奇偶校验错,(2)内部中断源(软件中断源),。执行,INT,软件中断指令 如执行指令,INT 21H,。CPU,指令执行产生的异常 如被0除、单步执行,4. 中断系统,为实现中断而采取的硬件,软件措施,5.,中断系统应具备的基本功能,对于硬件中断,接口电路中应具备屏蔽和开放的功能,这种功能由程序员通过软件去控制。,能实现中断判优(中断排队),,当有多个中断源提出,请求时,应能优先响应高级别的中断源。,能够实现中断嵌套,即高级别的中断源能够中断低级,别的中断服务程序。,响应中断后,能自动转入中断处理,处理完毕能自动返回断点,现,行,程,序,断点,A,设备中断,为,B,服,务,B,设备中断,为,A,服,务,设“,B”,级别,高于“,A”,断点,为,A,服,务,6. 具有中断请求功能的输入接口示意图,(教材,P169),输,入,设,备,锁,存,器,(8),三态,缓冲,器,(8),CPU,数据线,R,D Q,+5,V,中断请求,触发器,Q,D,中断允许触发器,数据线,D0,位,地址译码器,INTR,地址总线,IOW,IOR,控制口选中,数据口选中,选通信号,.2 80,X86,中断指令,1. 开中断指令,STI,功能:使,F,寄存器中,I,标志置1,CPU,处于开中断状态。,2.,关中断指令,CLI,功能:使,F,寄存器中,I,标志置1,CPU,处于关中断状态。,3. 软件中断指令,INT n,n,为中断类型码,n,为0255之间有定义的无符号整数。,功能:无条件转向,n,型中断服务子程序。,INT n,指令的执行过程,CPU,响应软件中断的过程,F,寄存器栈(保存,INT n,之前的,F,状态),使,F,中的,T,标志置0禁止单步操作,I,标志置0,CPU,处于关中断状态,断口地址栈,先:断口基地址(,CS),栈,后:断口偏移地址(,IP),栈,CPU,从4,n,4n+3,单元取出,n,型服务程序入口地址,IP:CS,从而转入,n,型中断服务程序。,4. 中断返回指令,IRET,功能:依次从栈顶弹出6个元素,IP,CS,F,如果栈顶是,INT n,的断口地址,则执行,IRET,后,返回断点,否则不能。,图示,执行,INT n,栈顶示意图,执行,IRET,示意图,sp,断口偏移地址,断口段基址,F,CS,F,IP,sp,IRET,是中断服务子程序的出口指令,IRET,和,RET,的区别,IRET,从栈顶弹出6 个元素,IP,CS,F,远程,RET,从栈顶弹出4个元素,IP,CS,近程,RET,从栈顶弹出2个元素,IP,., 中断向量和中断向量表,中断系统是为实现中断而采取的软,硬件措施,中断指令,中断向量和中断向量表是实现中断的重要,软件措施。,什么是中断向量,中断向量是实模式下,中断服务子程序的 入口地址,2. 中断向量表,:所有中断向量的集合,3. 中断向量表的设置,CPU,规定:在实模式下,中断向量,表需设置在系统的,RAM,最低端的,1,K,单元(0,3,FFH),0,H:,4,H:,3,FCH:,0型中断向量,1型中断向量,255型中断向量,它由2部分组成:,服务程序所在代码段的段基址 2 个字节,服务程序入口的偏移地址 2 个字节,4. 中断向量表的表地址与中断类型的关系,4,n+0,+2,+3,+1,n,型服务程序入口的偏移地址,n,型服务程序入口的段基址,n,型中断向量,如:“21,H”,型中断向量:存放在84,H,87H,单元中,问:9,CH,型中断向量存放在何处?,解,:, 9,CH 4=10011100,00,=270H,9,CH,型中断向量存于 270,H,273H,单元中,5. 中断向量的引导作用,CPU,响应软件中断的过程,YY,XX,21,H,型中断向量,4 21,H,用户程序,MOV AH,1,INT 21H,MOV DL,AL,NEXT:,F,寄存器内容,堆栈区,NEXT,的有效地址,NEXT,的段基址,XX:YY,21,H,型服务程序,IRET,IP,CS,IP,CS,F,IRET,6. 中断向量表的初始化,由,BIOS,设计的中断服务程序(如,INT 16H , INT 10H),其中断向量在加电时由,BIOS,负责写入中断向量表。,由,DOS,设计的中断服务程序(如,INT 21H),其中断向量是在启动,DOS,时,由,DOS,负责写入中断向量表。,用户程序开发的中断服务程序,由用户程序写入其,中断向量。,方法一、自己编写程序填写中断向量,CLI,PUSH DS,MOVAX,0000H,MOVDS,AX,MOVBX,4*n,MOVAX,OFFSET SERVICE,MOVBX,AX,MOVAX,SEG SERVICE,MOVBX+2,AX,POP DS,STI,方法二、,DOS,设计2个子程序,专门用于中断向量的读出、写入,INT 21H,的35,H,子功能,功能:读出,n,型中断向量,入口:,AL=,中断类型码,出口:,ES:BX=n,型中断向量,INT 21H,的25,H,子功能 ,功能:写入,n,型中断向量,入口:,DS=,中断服务程序所在代码段的段基址,DX=,中断服务程序入口的偏移地址,例:把用户程序中以“,TIMER”,命名的中断服务子程序,的入口地址,4 1,CH,4 1,CH+3,单元,数:,OLD1C DD ?,代:,MOV AH , 35H,MOV AL , 1CH,INT 21H,MOV WORD PTR OLD1C , BX,MOV WORD PTR OLD1C+2 , ES,PUSH DS,MOV AX , CS,MOV DS,AX,MOV DX , OFFSET TIMER,MOV AH , 25H,MOV AL , 1CH,INT 21H,POP DS,7. 关于中断向量表的说明,在实模式下,系统,RAM,最低端的1,K,单元为中断向量表,,但是并非每一个表项都是中断向量。,BIOS,利用某些表项,做为“参数指针”,参数指针指向的是一群参数,而不是中断,服务程序,因此称它们为“向量”是比较合适的。,例如: 1,DH,型向量,指向屏幕参数表。,1,EH,型向量,指向软盘参数表。,1,FH,型向量,指向图型字符表。,41,H,型向量,指向第一台硬盘参数表。,46,H,型向量,指向第二台硬盘参数表。,用户程序不能改动这些向量,当然也不能执行以1,DH,1EH,1FH,41H,46H,为中断类型码的软中断指令,否则系统,将会瘫痪。,.4 系统中断的分类,CPU,中断,硬件中断,(外部中断,),软件中断,(内部中断),PC,机,256种,中断,可屏蔽中断,非屏蔽中断,BIOS,中断,DOS,中断,DOS,专用中断,DOS,保留中断,用户可用,DOS,中断,用户可开发的中断,CPU,中断逻辑,CPU,中断,软件中断(,INT n,指令),非屏蔽中断请求,中断控制系统,NMI,可屏蔽中断请求,INTR,一.,CPU,中断,CPU,中断是指:,CPU,执行某些操作而引发的中断,这类中,断使用了0、1、3、4、6、7中断号。,1. 除法错中断,0型中断,CPU,执行,DIV,或,IDIV,指令,如果除数为0,或者商数超出,寄存器的表示范围,CPU,自动调用0型中断服务程序。,DOS,为0型中断设计的服务程序并没有为“除法错”采取,什么补救措施,仅仅是显示一行错误信息“,Divide overflow”,然后返回,DOS。,因此,用户程序执行“,INT 0”,指令是毫无意,义的。,2. 单步中断,1型中断,3. 断点中断,3型中断,八,四,当标志寄存器的,T,标志为1时,CPU,一条指令执行完毕,自动调用,1型中断服务程序。但是,DOS,为1型中断设计的服务程序只有一,条,IRET,指令。实际上,单步中断是因为,DEBUG,程序的需要而设计,的。在用户程序中执行“,INT 1”,指令是毫无意义的。,CPU,执行“,INT 3”,指令后,调用3型中断服务程序,而,DOS,系统的,3型中断服务程序也只有一条,IRET,指令。断点中断也是因为,DEBUG,程序的需要而设计的。而在,DEBUG,程序当中,利用,“,INT 3”,指令设置程序断点,当执行到“,INT 3”,指令时,转入3型中断,服务程序(该程序应由,DEBUG,设计),显示断点前程序的执行结,果。在用户程序中执行“,INT 3”,指令是毫无意义的。,4. 溢出中断,4型中断,对应的软件中断指令有两种汇编格式,功能稍有不同。,INTO,INT 4,八,四,当,FLAG,寄存器的溢出标志为1,在这种条件下,执行,“,INTO”,指令,将会调用4型服务程序。否则,如果溢出标,志为0,执行“,INTO”,指令是无效的。,但是和1型、3型中断一样,,DOS,为4型中断设计的,服务程序也只有一条,IRET,指令。如果用户程序需要对,运算过程进行监控,应当在有可能产生溢出的运算操,作之后安排一条,INTO,指令监测溢出标志,同时,还要自,行设计溢出处理程序取代原先的4型中断服务程序。,二. 软件中断,执行,有定义的,INT n,指令而引发的中断,称为软件中断。,在这里,之所以加了“有定义的”这一限制词,是因为并非所,有的中断号都有与之配套的中断服务程序。,软件中断使用05,H,10HFFH,中的若干个中断号。软件,中断又可分为,BIOS,中断、,DOS,中断。,1.,BIOS,中断,BIOS,中断,占用了05,H、10H1FH,中断号,用户程序执,行相关的软中断指令可以调用相应的中断服务程序。,INT 05H,屏幕打印;,INT 10H,屏幕显示,I/O;,INT 11H,设备配置检测;,八,四,INT 12H,测试内存容量;,INT 13H,磁盘,I/O;,INT 14H,串行通信,I/O;,INT 15H BIOS,扩展功能;,INT 16H,键盘,I/O;,INT 17H,打印机,I/O;,INT 18H,启动,PC,机,ROM BASIC(AT,机)无;,INT 19H,重新装入引导程序;,INT 1AH,实时时钟管理,。,中断号1,DH,1EH,1FH,41H,46H,也被,BIOS,占用了。但是,与,这些中断号对应的并不是中断服务程序。也就是说,不存在与,这些中断号对应的软中断指令,用户程序如果执行,INT 1DH,INT 1FH,INT 41H,INT 46H,必将引起系统瘫痪(参看中断向量,表的说明)。,八,四,2.,DOS,中断,DOS,中断,又分为,DOS,专用中断,DOS,保留中断,用户可调用的,DOS,中断以及保留给用户开发的中断。,(1),DOS,专用中断, 22,H,型中断 程序正常结束时,DOS,将自动调用该中断返回,父进程。, 23,H,型中断 程序非正常结束时(如:用户按下,Ctrl_C,或者,Ctrl_Break,中途停止程序的运行),DOS,调用该中断。, 24,H,型中断 程序运行发生严重错误时(例如:对软磁盘文件,进行操作的时候,驱动器小门没有关闭,或进行打印操作而打印,机没有连通),DOS,自动调用此类中断,发出错误信息“,Not ready,Abort,Retry,Ignore?”,这些中断是,DOS,专用的,DOS,在调用此类,中断之前,还要做些准备工作。因此,用户程序不能直接调用这些,中断。,八,四, 28,H3FH,型中断 也为,DOS,专用,Microsoft,公司没有公,开这类中断的功能。但是,一些醉心钻研,DOS,的专家们,仍然,破译出一些有价值的信息。例如:,INT 33H,为鼠标器调用。,(2) 用户可调用的,DOS,中断, 20,H,型中断 用户程序执行,INT 20H,指令可结束程序的,运行,返回,DOS。,但必须注意:在执行,INT 20H,之前,必须保证,用户程序,CS,寄存器的内容等于,PSP,段基址。,因此在用户的,COM,文件中,可以直接使用,INT 20H,返回,DOS。,INT 20H,与,INT 21H,的0号功能调用,完成相同的操作。, 21,H,型中断,DOS,系统的许多功能都集中在21,H,型中断,服务程序中。用户程序把功能号写入,AH,寄存器,设置相应的,入口参数,然后执行,INT 21H,即可调用不同的功能。我们把,执行,INT 21H,指令所完成的功能,称为“,DOS,系统功能调用”。,八,四, 25,H,型中断 此类中断在指定的驱动器上,按照扇区号读,取信息。, 26,H,型中断 在指定的驱动器上,按照扇区号写入信息。,INT 25H,INT 26H,称为“绝对磁盘读写调用”。在此类调用中,DOS,系统不使用文件控制块,也不使用文件号去管理磁盘文,件,而是按照扇区号直接进行磁盘信息的读写。, 27,H,型中断 中止并驻留程序于内存之中。用户程序执,行,INT 27H,可以中止程序的运行,并且把欲驻留的程序段驻,留在内存之中。,八,四,60,H66H,是保留给用户使用的中断号。,DOS,没有为它们,设计服务程序。,启动,DOS,后,60,H 66H,型“中断向量”均为0,值。正因为如此,如果你没有开发出60,H66H,型中断服务程,序,没有改写60,H 66H,型中断向量,千万不可调用此类中断,否则系统瘫痪。,(3),用户可开发的,DOS,中断,(4),DOS,保留的中断,DOS,为了自身版本的升级和功能扩充,保留了若干个中断,它们是:42,H45H,4BH5FH,68H6FH,72H74H,77H7FH。,以上关于软件中断的概念,在设计应用程序时是十分有用,的,实际上,如果不涉及,BIOS,中断,不涉及,DOS,中断,用户将无,法设计应用程序。,八,四,9.5 8259,中断控制器,外部中断,是由,CPU,以外的中断请求而引发的。,CPU,只有一个引脚接收外部的中断请求,如果有多个,中断请求,怎样连接至,CPU,呢?为此,INTEL,公司设计,了专用的配套芯片8259中断控制器,由8259管理8个中,断源,并最后向,CPU,提中断请求。,八,五,中断0,中断7,8259,中断请求,80,X86,INTR,图示,一. 8259的内部结构,数据,总线,缓冲器,D0,D7,读/写,逻辑,级连/缓冲,比较器,CAS1,CAS0,CAS2,SP/EN,RD,WR,A0,控制逻辑,INT,INTA,中断,服务,寄存器,(,ISR),优先权,电路,中断,请求,寄存器,(,IRR),IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7,中断屏蔽寄存器(,IMR),内部总线,八,五,CS,1.中断请求寄存器,(,IRR),寄存引脚,IR0IR7,的中断请求信号,IRRi,位置1,表明,IRi,引脚上有了中断请求信号,2. 中断屏蔽寄存器,(,IMR),寄存程序员写入的中断屏蔽字,屏蔽字某位=1,(,IMRi,位=1),则与该位对应的中断请求信号(,IRRi,位)就,不能送到中断优先权电路。,八,五,优,先,权,电,路,Q3,Q4,IR3,IR4,Q3,Q4,IMR,IRR,八,五,如:,MOV AL , 11111100B,OUT,屏蔽寄存器口地址,,AL,;,屏蔽,IRR7,IRR2,的请求开放,IRR1,IRR0,如:,IN AL,屏蔽寄存器口地址,AND AL,11110111B,OUT,屏蔽寄存器口地址,,AL ;,开放,IRR3,的请求,;对其它位的请求不改变,;屏蔽/开放的状态,3. 优先权电路,(排队电路,),作用:,比较同时送达优先权电路的中断请求,哪一个,级别最高。,八,五,比较,CPU,正为之服务的中断源和刚进入优先权电路,的中断源,哪一个级别更高。,通过判优选中其中级别最高的中断源,然后通过,控制电路,从,INT,端向,CPU,提中断请求。,4. 中断控制电路,作用:,寄存一组初始化命令字和操作命令字,通过译码产,生内部控制信号,当判优电路选中一个中断源时向,CPU,提中断请求,(,INT),八,五,通过,INTA,接收,CPU,送来的中断响应信号,中断响应,信号是2个连续的负脉冲。,INTA,使8259向,CPU,送出被选中的中断源的中断类型码,使与被选中的中断源对应的,ISRi,位置1,,IRRi,位置0,八,五,5. 中断服务寄存器,(,ISR),ISR:8,位寄存器,,ISRi,位与,IRRi,位一一对应,作用,:记录,CPU,正为之服务的是哪一个中断源,怎样记录?,八,五,反之,,如果,ISR0,位由1 0,表明,IR0,的中断服务程序,执行完了。,所以,ISR,的每一位都是响应中断源的中断服务标志位。,如:通过判优电路,IRR0,位的请求被选中,8259向,CPU,发中断请求,通过,INTA,收到第一个中断响应信号后,,ISR0,位置1,,IRR0,位置0。,ISR0,位置1,表明,CPU,正在,准备(或正在,),执行,IR0,的服务程序。,6. 数据总线缓冲器,作用:完成与,CPU,数据线配接,接收初始化命令字,操作命令字,当收到第二个中断响应脉冲时,通过他们,向,CPU,送出被选中的中断源的中断类型码,n,在这之后,CPU,从4,n+0,4n+3,单元取出,n,型中断向量,,从而转入,n,型服务程序。,7. 读/写控制模块,接收,CPU,的读/写控制命令字和口地址选择信号。,八,五,8. 级连/缓冲比较器,一位8259可以管理8级中断,二片8259“级连”可管理,15级中断,级连/缓冲比较器是为完成多片8259级连设,置的模块。,二. 8259的中断过程,CPU,响应硬件中断的过程,8259,A,的中断过程,就是微机系统响应可屏蔽中断的,过程,这一过程,简单描述如下:,首先由中断请求寄存器寄存加到引脚,IR0IR7,上的,中断请求。,在中断屏蔽寄存器的管理下,没有被屏蔽的中断请求,被送到优先权电路判优。,八,五,经过优先权电路的判别,选中当前级别最高的中断,源,然后从引脚,INT,向,CPU,发出中断请求信号。,CPU,满足一定条件后,向8259,A,发出2个中断响应信,号(负脉冲)。,在实模式下,CPU,从4,n4n3,单元取出该中断,源的中断向量,IP、CS,从而引导,CPU,执行该中断,源的中断服务程序。,八,五,8259,A,从引脚,INTA,收到第1个中断响应信号,之后,立即,使中断服务寄存器中与被选中的中断源对应的那一,位置1,同时把中断请求寄存器中的相应位清0。,从引脚,INTA,收到第2个中断响应信号后,8259,A,把选中,的中断源类型码,n,通过数据线送往,CPU。,三. 8259的中断管理方式,8259是很复杂的中断控制器,它从,5,个方面对中断进,行管理。,8259,A,中断管理,方式,中断触发方式,中断屏蔽方式,中断优先级管理方式,中断结束方式,总线连接方式,边沿触发,电平触发,常规屏蔽方式,特殊屏蔽方式,完全嵌套方式,特殊嵌套方式,优先级循环方式,自动,EOI,方式,非自动,EOI,方式,缓冲方式,非缓冲方式,常规,EOI,循环方式,自动,EOI,循环方式,特殊,EOI,循环方式,常规,EOI,方式,特殊,EOI,方式,每一种方式又有多种选择,八,五,说明:,各种中断管理方式的选择是在初始化编程时,通,过初始化命令字设定的。,2. 中断系统是全机的核心,只有对中断系统的方方面,面全面了解的基础上才能组织初始化命令字。,3. 只有系统程序员才具备这方面的知识,所以对8259,的初始化编程应由系统程序完成,本书不做介绍,原因是:,8259,A,是中断系统的核心器件,对它的初始化编程要涉,及到中断系统软、硬件许多问题,而且一旦完成初始化,所,有硬件中断源和中断处理程序(包括已开发和未开发的)都,必须受其制约。,八,五,严格地讲,像这样影响深远而且带有决策性质的问题,只有,微机系统的设计者才有权威定夺。,正因为如此,对系统8259,A,的初始化编程是在微机启动之后,由,BIOS,自动完成的。从系统安全性考虑,用户在使用过程中,不应当再对其初始化,更不能改变对它的初始化设置!,八,五,四. 286以上微机,8259的中断管理方式,系统加电后:由,BIOS,对8259初始化编程,设定的中断,管理方式为, 系统8259,A,中断触发方式为,边沿触发,,即 为中断,请求。, 中断屏蔽方式采用,常规屏蔽方式,即应用时,向8259中断屏蔽寄存器写入适当屏蔽字即可,屏蔽/开放某一级中断。,八,五, 中断源为,固定优先级,即,IR0,中断请求级别最高,,IR7,中断请求级别最低。,采用,常规中断结束方式,即在中断服务子程序结束之前向8259送中断结束命,令。,五286以上的微机,对8259的应用编程,对8259编程分二步进行:,对8259进行初始化编程,系统加电后,由,BIOS,完成,对8259进行应用编程,编写中断程序时,由中断程序完成,有2项内容,八,五,每一个硬件中断服务程序结束前必须向8259送中断,命令字,通知8259本次中断结束,否则8259不能响,应同一中断源的下次中断。,八,五,需要时,向8259中断屏蔽寄存器写入屏蔽字。,8259收到中断结束命令后,把,ISR,中的置1位清0!,9.6,硬件中断,一. 概述,1硬件中断分类:,可屏蔽中断,非屏蔽中断,CPU,有2个接收中断请求信号的引脚。,可屏蔽中断:,输入到,INTR,引脚的中断请求信号,,引发的中断。,八,六,非屏蔽中断:,输入到,NMI,引脚的中断请求信号,,引发的中断。,INTR,NMI,有可屏蔽中断请求,没有,DMA,请求,没有非屏蔽中,断请求,4.响应非屏蔽中断的条件,有非屏蔽中断请求,没有,DMA,请求,一条指令执行完,八,六,3. 响应可屏蔽中断的条件,CPU,一条指令执行完毕,2硬件中断的级别,DMA,请求级别高于非屏蔽中断高于可屏蔽中断。,CPU,处于开中断状态(,I,标=1),二. 可屏蔽中断的硬件结构,IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7,日时钟,键盘,IRQ3,IRQ4,IRQ5,IRQ6,IRQ7,辅串口,主串口,并口2,软盘,并口1,CS,A0,主片片选,地址线,A0,CAS20,INT,INTR,S20,D7D0,CPU,INTA,RD,WR,SP/EN,S20,INTA,IOR,IOW,主8259,总线控制器,+5,V,从8259,INT,从8259,CAS20,从8259相应引脚,可屏蔽中断硬件结构(1),八,六,硬盘,CS,A0,从片片选,地址线,A0,CAS20,INT,D7D0,INTA,RD,WR,SP/EN,从8259,主8259,IR2,主8259,CAS20,主8259相应引脚,可屏蔽中断硬件结构(2),IR1,IR3,IR5,IR7,IR0,IR2,IR4,IR6,实时时钟,IRQ10,IRQ9,IRQ12,IRQ11,用户中断,保留,保留,保留,保留,协处理器,八,六,1. 使用2片8259级连,管理15级中断,八,六,2. 中断源与中断类型,主8259,中断源,中断类型,从8259,中断源,中断类型,IR0,日时钟,08,H,IR0,实时时钟,70,H,IR1,键盘,09,H,IR1,用户中断,71,H,改向0,AH,IR2,从8259,IR2,保留,72,H,IR3,辅串口,0,BH,IR3,保留,73,H,IR4,主串口,0,CH,IR4,保留,74,H,IR5,并行口2,0,DH,IR5,协处理器,75,H,IR6,软盘,0,EH,IR6,硬盘,76,H,IR7,并行口1,0,FH,IR7,保留,77,H,八,六,中断级别,最高,最低,中断源,日时钟中断,键盘中断,从8259,IR0,IR1,IR2,辅串口,主串口,并口2,软盘,并口1,IR7,中断类型码,08,H,09H,70H,71H,改向0,AH,72H,77,H,0BH,0CH,ODH,0EH,0FH,八,六,3. 硬件可屏蔽中断的中断级别,4系统分配的8259口地址,中断屏蔽寄存器,口地址,接收中断结束命令的寄存器口地址,主8259,21,H,20,H,从8259,A1H,A0H,八,六,5中断结束命令,命令字=20,H,接入主8259,IR0,IR7,的中断源,其服务程序结束要向主8259送中断结束命令字,MOV AL,20H,OUT 20H,AL,恢复现场,IRET,八,六,MOV AL,20H,OUT 20H,AL,OUT 0A0H,AL,恢复现场,IRET,八,六,接入从8259的中断源,其服务程序结束应分别向,主、从8259各送一个中断结束命令字 。,三. 关于用户中断,1. 用户中断请求的途径,用户,中断,请求,80,X86,INTR,IR2,INT,IMR,主8259,INT,IR1,IMR,从8259,用户中断请求从,ISA,总线,B4,端子(,IRQ9),引入,,经过主8259,从8259二级中断管理,最后由主8259,向,CPU,提中断。,只有从8259,IMR1,置0,主8259,IMR2,置0,其中断,请求方能送到,CPU。,八,六,B4,2.实现用户中断必须对主、从8259应用编程,(这样,对各种型号的主板都能适应),IN AL,0A1H,AND AL,11111101B,OUT 0A1H,AL ;,开放用户中断,IN AL,21H,AND AL,11111011B,OUT 21H,AL ;,开放从8259中断,3,.,用户中断的中断类型,CPU,响应用户中断后,自动转向“71,H,型”服务程序,八,六,BIOS,为“71,H,型”设计的服务程序如下:,PUSHAX,MOVAL,20H,OUT 0A0H,AL,POPAX,INT0AH,待开发,用户服务程序,IRET,有两个解决方法,:,定义用户中断服务程序为“0,AH,型”,中断程序的准备工作:置换0,AH,型中断向量,即把,用户中断的中断向量4,0,AH,4,0AH+3,单元,定义用户中断服务程序为“71,H,型”,中断程序的准备工作:置换71,H,型中断向量,即把用户,中断的中断向量4,71,H 4,71 H+3,单元,八,六,4. 用户中断服务程序结束,若用户中断定义为0,AH,型,,服务程序结束前只向主8259送结束命令,若用户中断定义为71,H,服务程序结束前,向主从8259各送一中断结束命令,四硬件中断和软件中断的区别,综合以上描述可以看出,CPU,在获得中断类型码,以后,如何转向服务程序,就这一点而言,响应硬件,中断和软件中断的操作是相同的,但是硬件中断和,软件中断有许多不同点:,八,六,中断的引发方式不同,硬件中断是由,CPU,以外的硬设备发出中断请求(接到,引脚,INTR,和,NMI),而引发的。而软件中断是由于,CPU,执行,INT n,指令而引发的。,CPU,获取中断类型码的方式不同:响应硬件可屏蔽中,断后,中断类型码是由8259,A,提供的。响应软件中断,时,中断类型码是由软件中断指令,INT n,本身提供的。,CPU,响应的条件不同:,CPU,只有在开中断时,才能响应,硬件可屏蔽中断,响应软件中断不受此限制。,中断处理程序的结束方式不同。,在硬件可屏蔽中断服务程序中,中断处理结束后,需要,做两件事:,八,六,一是向8259,A,发出中断结束命令,8259,A,收到此命令,后将,ISR,寄存器中的相应位清0,结束中断。二是执行,IRET,指令,中断返回。,而在软件中断服务程序中,中断处理结束后只需执,行,IRET,指令。这些都是设计中断服务程序必须掌握的,基本概念。,9.7,日时钟中断,1.中断源:,系统8254 0#计数器,每55,ms,有一次中断请求,2,.,中断类型,:,8型,八,七,CPU,转入8型中断后,完成下列工作,开中断,保护现场(,DS,压栈),40,H DS,,对“日时钟计数器”加1,测算软驱马达关闭时间,IRET,1,CH,服务程序,八,七,向主8259送中断结束命令,恢复现场,,IRET,执行,INT 1CH,3.,日时钟中断处理流程:,4.什么是,“,日时钟计数器,”,BIOS,系统规定:40,H:6CH40H:6FH,这4个单元,(共32位)为日时钟计数器,每55,ms,加1次,计数,到:001800,B0H,,为24小时,其计数值供系统软件使用。,系统启动时,CPU,执行,BIOS,中的一段程序,读取,CMOS,实,时时钟电路的时间值计数值40,:,6,CH40:6FH,做,为日时钟计数器的计数初值。,八,七,5.,关于1,CH,服务程序,8#服务程序,每隔55,ms,在,DS=40H,的前提下,调用,一次1,CH,服务程序,之后又返回8型!,所以1,CH,中断是日时钟的外扩中断,用户可开发,新的1,CH,中断(完成每55,ms,一次的定时操作)取代,原来的。,9.8,实模式定时中断程序设计,什么是定时中断?,利用中断技术,每隔一定时间完成一次预定的操作,定时操作。,八,八,一.定时中断程序的设计方法,1 . 硬件,:首先要明确谁是定时中断源?,定时源是系统 8254 0#计数器,定时源是,ISA,总线,B4,端子上的外扩定时源,2 .确定中断服务程序的类型,这一问题和中断源有关系,如果中断源是,ISA,总线,B4,端子引入的,则服务程序应定义为0,AH,或71,H,型,按用户中断处理,八,八,有两种可能,如果中断源是系统8254 0#, 而且定时操作周期=,55,ms,整数倍,则定义用户服务程序为,1,CH,型,取代,系统的1,CH,服务程序 。,如果中断源是系统8254 0#,但定时操作周期,55,ms,整数倍,应重新对8254 0#初始化,八,八,重新对系统,8254 0#,初始化,中断计数,满,Nms,定时操作,新8型服务程序,满55,ms?,每隔,Xms,提一次中断,Y,N,N,本次中断结束,转系统原来的,8型服务程序,Y,其中,:,X,是,N,和55,ms,的最大公约数,N,是定时操作的周期,八,八,3.置换中断向量,服务程序的类型确定之后,应置换相应的中断向量。,4,.,开放8259中断,从硬件中断的结构图可知:,用户中断要经过从8259,主8259两级中断管理,其,中断请求才能送到,CPU,为了适应各种类型的主机板,,在中断程序的准备工作中,应将从8259,IMR1,位置零,,主8259,IMR2,位置零,从而打通用户中断请求的通道。,一般说,各种型号的主机板对日时钟中断都是开放,的,用户不必再采取措施。,八,八,5 . 避免“,DOS,重入”,图示,21,H,型服务,程序,IRET,现行程序,INT 21H,INT 21H,转服务程序,有中断请求,DOS,不允许重入,中断服务程序应避免使用,INT 21H,八,八,6,服务程序的执行时间,远远小于定时中断的时间间隔,7. 中断结束向8259发中断结束命令,八,八,二.定时中断程序结构,保护现场,服务程序,定时时间到?,向8259送结束命令,恢复现场,IRET,N,执行定时操作,Y,避免,DOS,重入,特点,:服务程序直接,进行定时操作(注意:,避免,DOS,重入),*,表示视具体情况而言,*,*,关中断,中断源初始化,置换中断向量,其它准备工作,开中断,主程序,等待中断,恢复系统资源,恢复中断向量,返回,DOS,程序结束前,之,一,八,八,关中断,中断源初始化,置换中断向量,其它准备工作,开中断,主程序,恢复系统资源,恢复中断向量,返回,DOS,程序结束前,之二,*,*,其他操作,有无“时间到”标志,执行定时操作,N,Y,特点:,服务程序,不直接进行定时,操作,而是建立,时间到标志。,主程序中判时间,到标志,再进行,定时操作。,服务程序,保护现场,定时时间到?,向8259送结束命令,恢复现场,IRET,设置“时间到”标志,Y,N,“,设置时间到标志”,:利用数据段某单元,或某一空闲寄存器。,八,八,*,三.定时中断程序设计举例,【例8.9.1】,1,CH,型中断的应用,假设微机系统外扩了如下的数码管电路,要求使用,系统定时源并采用中断方式,每隔一秒完成一次8字左,移,循环往复,直到主机键盘按下任意键时停止。,八,八,6位反相驱动器,8位锁存器(位选),空闲,CPU D0D7,CS,(200H,选中),8位同相驱动器,8位锁存器(段选),CPU D0D7,CS,(201H,选中),b,a,d,g,h,c,f,e,a,h,6位反相驱动器,8位锁存器(位选),空闲,CPU D0D7,CS,(200H,选中),8位同相驱动器,8位锁存器(段选),CPU D0D7,CS,(201H,选中),b,a,d,g,h,c,f,e,图中数码管为共阴极,6个数码管的同名段已复接,该电路有两个端口,即段选口201,H,位选口200,H。,a,h,八,八,6位反相驱动器,8位锁存器(位选),空闲,CPU D0D7,CS,(200H,选中),8位同相驱动器,8位锁存器(段选),CPU D0D7,CS,(201H,选中),b,a,d,g,h,c,f,e,针对口地址201,H,执行输出指令时,段选寄存器锁存,数据线,D0D7,的信息,经过同相驱动器,驱动6个数码管,的,ah,阳极段。即数据线,D0,对应于,a,段,数据线,D7,对应于,h,段。,a,h,八,八,6位反向驱动器,8位锁存器(位选),空闲,CPU D0D7,CS,(200H,选中),8位同相驱动器,8位锁存器(段选),CPU D0D7,CS,(201H,选中),b,a,d,g,h,c,f,e,针对口地址200,H,执行输出指令时,位选寄存器锁存,数据线,D0D7,位的信息,经过反相驱动器,驱动第1,第6位数码管的共阴极。当,D0,位为1时,点亮第1位数码,管,D0,位为0时,熄灭第1位数码管,以此类推。,八,八,a,h,设计思路,因为系统定时器每隔55,ms,产生一次日时钟中断,中,断18次为990,ms,接近一秒钟。还由于日时钟中断每次都,要调用1,CH,型中断,因此用户可以设计新的1,CH,型中断服,务程序,对日时钟中断进行计数,计满18次完成一次8字,左移。,对日时钟中断进行,“,中断计数,”,是实现长时间定时,的常用方法。,八,八,关中断,转移系统的1,CH,型中断向量,写入用户的1,CH,型中断向量,第6位数码显示8字,开中断,主程序,有键入?,恢复系统的1,CH,型中断向量,返回,DOS,Y,N,保护现场,重新定义用户数据段,中断计数,N,满18次?,18,中断计数单元,8字左移一位,恢复现场,中断返回,Y,1,CH,型中断服务程序,图8.9 例8.9.1程序框图,八,八,解法1,:借用系统8254 0#计数器,定义服务程序为,1,CH,型。,八,八,程序清单,;,FILENAME:891.ASM,.486,DATA SEGMENT USE16,OLD1C DD ?,ICOUNT DB 18 ;,中断计数初值,ORIGIN DB 20H ;,数码管位选初值,DATA ENDS,CODE SEGMENT USE16,ASSUME CS:CODE,DS:DATA,BEG: MOV AX,DATA,MOV DS,AX,CLI ;,关中断,CALL READ1C,CALL WRITE1C,八,八,MOV DX,201H,MOV AL,7FH,OUT DX,AL ;,输出8的字型码,MOV DX,200H,MOV AL,ORIGIN,OUT DX,AL ;,定位显示,STI ;,开中断,SCAN: MOV AH,1,INT 16H ;,有键入?,JZ SCAN ;,否转,CALL RESET,MOV AH,4CH,INT 21H,八,八,SERVICE PROC,PUSHA ;,保护现场,PUSH DS,MOV AX,DATA,MOV DS,AX ;,重新给,DS,赋值,DEC ICOUNT ;,中断计数,JNZ EXIT ;,不满18次转,MOV ICOUNT,18 ;,满18次重新设置计数初值,SHR ORIGIN,1,JNC NEXT,MOV ORIGIN,20H,NEXT: MOV AL,ORIGIN,MOV DX,200H,OUT DX,AL ;8,字左移一位,EXIT: POP DS ;,恢复现场,POPA,IRET ;,返回系统8型中断服务程序,SERVICE ENDP,八,八,READ1C PROC ;,转移系统1,CH,型中断向量,MOV AX,351CH,INT 21H,MOV WORD PTR OLD1C,BX,MOV WORD PTR OLD1C+2,ES,RET,READ1C ENDP,;-,WRITE1C PROC ;,写入用户1,CH,型中断向量,PUSH DS,MOV AX,CODE,MOV DS,AX,MOV DX,OFFSET SERVICE,MOV AX,251CH,INT 21H,八,八,POP DS,RET,WRITE1C ENDP,;-,RESET PROC ;,恢复系统1,CH,型中断向量,MOV DX,WORD PTR OLD1C,MOV DS,WORD PTR OLD1C+2,MOV AX,251CH,INT 21H,RET,RESET ENDP,CODE ENDS,END BEG,八,八,重点注意3个问题:,进入服务程序后,重新给,DS,赋值,服务程序结束前,没有给8259送结束命令,RESET,子程序中,给,DX,DS,赋值不能颠倒,八,八,解法,2,:借用8254 0#计数器,重新对其初始化,,使之每隔5,ms,有一次中断,定义服务程序为8型。,源程序请见书,P211214,重点解释:,怎样从用户的8型中断服务程序转入系统的8型中,断服务程序?,在代码段中,OLD08 DD ?,;,存放系统8型中断向量,每隔55,ms,执行一条,JMP CS:OLD08 ;(OLD08) IP,;(OLD08+2) CS,八,八,9,9 实时时钟中断,秒,分,时,日,月,年,内部时钟控制电路,1.024,K,HZ,允许周期中断,允许报警中断,报警中断,32,供,INT 1AH 2,6,号功能调用读取,预置,32.768,K,HZ,从8259,IR0,八,九,秒,分,时,日,月,年,内部时钟控制电路,1.024,K,HZ,允许周期中断,允许报警中断,报警中断,32,供,INT 1AH 2,6,号功能调用读取,预置,32.768,K,HZ,从8259,IR0,中断源:主板上实时时钟电路,中断类型:70,H,八,八,秒,分,时,日,月,年,内部时钟控制电路,1.024,K,HZ,允许周期中断,允许报警中断,报警中断,32,供,INT 1AH 2,6,号功能调用读取,预置,32.768,K,HZ,从8259,IR0,实时时钟中断包括,:,周期中断和告警中断2种,统称,实时时钟中断。,八,八,CMOS,内部有若干存储单元,存放实时时钟信息。基准时钟为,32.768,KHZ,,经32分频,产生1.024,KHZ,的方波,每1024个方波,秒单元加1,每60 秒分单元加1,八,八,秒,分,时,日,月,年,内部时钟控制电路,1.024,K,HZ,允许周期中断,允许报警中断,报警中断,32,供,INT 1AH 2,6,号功能调用读取,预置,32.768,K,HZ,从8259,IR0,系统正常工作时,不允许周期中断,不允许告警中断,因此,,正常工作时系统是没有实时时钟中断的!,八,八,秒,分,时,日,月,年,内部时钟控制电路,1.024,K,HZ,允许周期中断,允许报警中断,报警中断,32,供,INT 1AH 2,6,号功能调用读取,预置,32.768,K,HZ,从8259,IR0,如果需要,可以重新对,CMOS,编程,使之产生周期中断或告警,中断。,八,八,秒,分,时,日,月,年,内部时钟控制电路,1.024,K,HZ,允许周期中断,允许报警中断,报警中断,32,供,INT 1AH 2,6,号功能调用读取,预置,32.768,K,HZ,从8259,IR0,八,九,系统启动,,CPU,执行,BIOS,中的一段程序,读取,CMOSRAM,中的实,时时钟计数值40:6,CH40:6FH,做为日时钟计数器的初值。,秒,分,时,日,月,年,内部时钟控制电路,1.024,K,HZ,允许周期中断,允许报警中断,报警中断,32,供,INT 1AH 2,6,号功能调用读取,预置,32.768,K,HZ,从8259,IR0,秒,分,时,日,月,年,内部时钟控制电路,1.024,K,HZ,允许周期中断,允许报警中断,报警中断,32,供,INT 1AH 2,6,号功能调用读取,预置,32.768,K,HZ,从8259,IR0,断电后,实时时钟电路由电池供电,仍连续工作象手表一样计,时,,,所以称为实时时钟电路,初值在整机售出时调整好!,八,九,八,九,一. 实时时钟中断处理流程:70,H,型服务程序,开中断,保护现场,周期中断?,事件等待计数器,减976,s,够减?,禁止周期中断,事件等待标志,置0,用户等待标志,置为80,H,Y,Y,N,N:,等待时间到,报警中断?,INT 4AH,IRET,系统4,AH,型,中断服务程序,向主从8259发中断结束命令,恢复现场,IRET,N,8.12 实时时钟中断处理流程,(BIOS 286 84/1/10,版),八,九,Y,问题:,什么是事件等待计数器?,什么是事件等待标志?,什么是用户等待标志?,1什么是“事件等待标志计数器”,BIOS,规定:系统,RAM 40:9CH40:9FH,这4 个单元,为“事件等待计数器”存放用户预置的“等待时间”。,八,九,2.什么是“用户等待标志”,“用户等待标志”是用户程序,附加段,中自定义的一个,字节型单元,。它是70,H,型服务程序向用户程序传送,信息的单元。,3.什么是“事件等待标志”,“事件等待标志”是,BIOS,程序的一个工作单元,与用,户
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!