




已阅读5页,还剩127页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章中断,.1基本概念,复习查询方式输入,当外设数据未准备好时,要不断查询,CPU效率低,1.中断方式示意(以输入中断为例),2.什么是中断?,CPU暂停执行现行程序,转而处理随机事件,处理完毕后再返回被中断的程序,这一全过程称为中断。,3.中断源能够引发CPU中断的信息源,(1)外部中断源(硬件中断源)。I/O设备如键盘、显示器、打印机。数据通道如磁带、磁盘。时钟如82540#,由此引发的中断。故障源如掉电、存贮器奇偶校验错(2)内部中断源(软件中断源)。执行INT软件中断指令如执行指令INT21H。CPU指令执行产生的异常如被0除、单步执行,4.中断系统为实现中断而采取的硬件,软件措施,5.中断系统应具备的基本功能,对于硬件中断,接口电路中应具备屏蔽和开放的功能,这种功能由程序员通过软件去控制。,能实现中断判优(中断排队),当有多个中断源提出请求时,应能优先响应高级别的中断源。,能够实现中断嵌套,即高级别的中断源能够中断低级别的中断服务程序。,响应中断后,能自动转入中断处理,处理完毕能自动返回断点,为A服务,设“B”级别高于“A”,6.具有中断请求功能的输入接口示意图(教材P169),输入设备,锁存器(8),三态缓冲器(8),CPU数据线,RDQ,+5V,中断请求触发器,QD,中断允许触发器,数据线D0位,地址译码器,INTR,地址总线,IOW,IOR,控制口选中,数据口选中,选通信号,.280X86中断指令,1.开中断指令STI功能:使F寄存器中I标志置1,CPU处于开中断状态。,2.关中断指令CLI功能:使F寄存器中I标志置1,CPU处于关中断状态。,3.软件中断指令INTnn为中断类型码,n为0255之间有定义的无符号整数。功能:无条件转向n型中断服务子程序。,INTn指令的执行过程CPU响应软件中断的过程,F寄存器栈(保存INTn之前的F状态)使F中的T标志置0禁止单步操作I标志置0CPU处于关中断状态,断口地址栈先:断口基地址(CS)栈,后:断口偏移地址(IP)栈,CPU从4n4n+3单元取出n型服务程序入口地址IP:CS,从而转入n型中断服务程序。,4.中断返回指令IRET,功能:依次从栈顶弹出6个元素IP,CS,F如果栈顶是INTn的断口地址,则执行IRET后,返回断点,否则不能。,图示执行INTn栈顶示意图,执行IRET示意图,sp,IRET是中断服务子程序的出口指令,IRET和RET的区别IRET从栈顶弹出6个元素IP,CS,F远程RET,从栈顶弹出4个元素IP,CS近程RET,从栈顶弹出2个元素IP,.中断向量和中断向量表,中断系统是为实现中断而采取的软,硬件措施,中断指令,中断向量和中断向量表是实现中断的重要软件措施。,什么是中断向量中断向量是实模式下,中断服务子程序的入口地址,2.中断向量表:所有中断向量的集合,3.中断向量表的设置CPU规定:在实模式下,中断向量表需设置在系统的RAM最低端的1K单元(03FFH),它由2部分组成:服务程序所在代码段的段基址2个字节服务程序入口的偏移地址2个字节,4.中断向量表的表地址与中断类型的关系,n型中断向量,如:“21H”型中断向量:存放在84H87H单元中问:9CH型中断向量存放在何处?,解:9CH4=1001110000=270H9CH型中断向量存于270H273H单元中,5.中断向量的引导作用CPU响应软件中断的过程,6.中断向量表的初始化,由BIOS设计的中断服务程序(如INT16H,INT10H)其中断向量在加电时由BIOS负责写入中断向量表。,由DOS设计的中断服务程序(如INT21H)其中断向量是在启动DOS时,由DOS负责写入中断向量表。,用户程序开发的中断服务程序,由用户程序写入其中断向量。,方法一、自己编写程序填写中断向量CLIPUSHDSMOVAX,0000HMOVDS,AXMOVBX,4*nMOVAX,OFFSETSERVICEMOVBX,AXMOVAX,SEGSERVICEMOVBX+2,AXPOPDSSTI,方法二、DOS设计2个子程序,专门用于中断向量的读出、写入,INT21H的35H子功能功能:读出n型中断向量入口:AL=中断类型码出口:ES:BX=n型中断向量,INT21H的25H子功能功能:写入n型中断向量入口:DS=中断服务程序所在代码段的段基址DX=中断服务程序入口的偏移地址,例:把用户程序中以“TIMER”命名的中断服务子程序的入口地址41CH41CH+3单元,7.关于中断向量表的说明,在实模式下,系统RAM最低端的1K单元为中断向量表,但是并非每一个表项都是中断向量。BIOS利用某些表项做为“参数指针”,参数指针指向的是一群参数,而不是中断服务程序,因此称它们为“向量”是比较合适的。,例如:1DH型向量,指向屏幕参数表。1EH型向量,指向软盘参数表。1FH型向量,指向图型字符表。41H型向量,指向第一台硬盘参数表。46H型向量,指向第二台硬盘参数表。,用户程序不能改动这些向量,当然也不能执行以1DH,1EH,1FH,41H,46H为中断类型码的软中断指令,否则系统将会瘫痪。,.4系统中断的分类,CPU中断逻辑,CPU中断,软件中断(INTn指令),非屏蔽中断请求,中断控制系统,NMI,可屏蔽中断请求,INTR,一.CPU中断,CPU中断是指:CPU执行某些操作而引发的中断,这类中断使用了0、1、3、4、6、7中断号。,1.除法错中断0型中断,CPU执行DIV或IDIV指令,如果除数为0,或者商数超出寄存器的表示范围,CPU自动调用0型中断服务程序。,DOS为0型中断设计的服务程序并没有为“除法错”采取什么补救措施,仅仅是显示一行错误信息“Divideoverflow”,然后返回DOS。因此,用户程序执行“INT0”指令是毫无意义的。,2.单步中断1型中断,3.断点中断3型中断,八,四,当标志寄存器的T标志为1时,CPU一条指令执行完毕,自动调用1型中断服务程序。但是,DOS为1型中断设计的服务程序只有一条IRET指令。实际上,单步中断是因为DEBUG程序的需要而设计的。在用户程序中执行“INT1”指令是毫无意义的。,CPU执行“INT3”指令后,调用3型中断服务程序,而DOS系统的3型中断服务程序也只有一条IRET指令。断点中断也是因为DEBUG程序的需要而设计的。而在DEBUG程序当中,利用“INT3”指令设置程序断点,当执行到“INT3”指令时,转入3型中断服务程序(该程序应由DEBUG设计),显示断点前程序的执行结果。在用户程序中执行“INT3”指令是毫无意义的。,4.溢出中断4型中断对应的软件中断指令有两种汇编格式,功能稍有不同。INTOINT4,八,四,当FLAG寄存器的溢出标志为1,在这种条件下,执行“INTO”指令,将会调用4型服务程序。否则,如果溢出标志为0,执行“INTO”指令是无效的。,但是和1型、3型中断一样,DOS为4型中断设计的服务程序也只有一条IRET指令。如果用户程序需要对运算过程进行监控,应当在有可能产生溢出的运算操作之后安排一条INTO指令监测溢出标志,同时,还要自行设计溢出处理程序取代原先的4型中断服务程序。,二.软件中断,执行有定义的INTn指令而引发的中断,称为软件中断。在这里,之所以加了“有定义的”这一限制词,是因为并非所有的中断号都有与之配套的中断服务程序。,软件中断使用05H,10HFFH中的若干个中断号。软件中断又可分为BIOS中断、DOS中断。,1.BIOS中断BIOS中断,占用了05H、10H1FH中断号,用户程序执行相关的软中断指令可以调用相应的中断服务程序。,INT05H屏幕打印;INT10H屏幕显示I/O;INT11H设备配置检测;,八,四,INT12H测试内存容量;INT13H磁盘I/O;INT14H串行通信I/O;INT15HBIOS扩展功能;INT16H键盘I/O;INT17H打印机I/O;INT18H启动PC机ROMBASIC(AT机)无;INT19H重新装入引导程序;INT1AH实时时钟管理。,中断号1DH,1EH,1FH,41H,46H也被BIOS占用了。但是,与这些中断号对应的并不是中断服务程序。也就是说,不存在与这些中断号对应的软中断指令,用户程序如果执行INT1DHINT1FH,INT41H,INT46H,必将引起系统瘫痪(参看中断向量表的说明)。,八,四,2.DOS中断DOS中断,又分为DOS专用中断,DOS保留中断,用户可调用的DOS中断以及保留给用户开发的中断。,(1)DOS专用中断,22H型中断程序正常结束时,DOS将自动调用该中断返回父进程。,23H型中断程序非正常结束时(如:用户按下Ctrl_C,或者Ctrl_Break中途停止程序的运行),DOS调用该中断。,24H型中断程序运行发生严重错误时(例如:对软磁盘文件进行操作的时候,驱动器小门没有关闭,或进行打印操作而打印机没有连通),DOS自动调用此类中断,发出错误信息“NotreadyAbort,Retry,Ignore?”,这些中断是DOS专用的,DOS在调用此类中断之前,还要做些准备工作。因此,用户程序不能直接调用这些中断。,八,四,28H3FH型中断也为DOS专用,Microsoft公司没有公开这类中断的功能。但是,一些醉心钻研DOS的专家们,仍然破译出一些有价值的信息。例如:INT33H为鼠标器调用。,(2)用户可调用的DOS中断,20H型中断用户程序执行INT20H指令可结束程序的运行,返回DOS。但必须注意:在执行INT20H之前,必须保证用户程序CS寄存器的内容等于PSP段基址。因此在用户的COM文件中,可以直接使用INT20H返回DOS。INT20H与INT21H的0号功能调用,完成相同的操作。,21H型中断DOS系统的许多功能都集中在21H型中断服务程序中。用户程序把功能号写入AH寄存器,设置相应的入口参数,然后执行INT21H即可调用不同的功能。我们把执行INT21H指令所完成的功能,称为“DOS系统功能调用”。,八,四,25H型中断此类中断在指定的驱动器上,按照扇区号读取信息。,26H型中断在指定的驱动器上,按照扇区号写入信息。INT25H,INT26H称为“绝对磁盘读写调用”。在此类调用中,DOS系统不使用文件控制块,也不使用文件号去管理磁盘文件,而是按照扇区号直接进行磁盘信息的读写。,27H型中断中止并驻留程序于内存之中。用户程序执行INT27H可以中止程序的运行,并且把欲驻留的程序段驻留在内存之中。,八,四,60H66H是保留给用户使用的中断号。DOS没有为它们设计服务程序。启动DOS后,60H66H型“中断向量”均为0值。正因为如此,如果你没有开发出60H66H型中断服务程序,没有改写60H66H型中断向量,千万不可调用此类中断,否则系统瘫痪。,(3)用户可开发的DOS中断,(4)DOS保留的中断,DOS为了自身版本的升级和功能扩充,保留了若干个中断它们是:42H45H,4BH5FH,68H6FH,72H74H,77H7FH。,以上关于软件中断的概念,在设计应用程序时是十分有用的,实际上,如果不涉及BIOS中断,不涉及DOS中断,用户将无法设计应用程序。,八,四,9.58259中断控制器,外部中断是由CPU以外的中断请求而引发的。CPU只有一个引脚接收外部的中断请求,如果有多个中断请求,怎样连接至CPU呢?为此INTEL公司设计了专用的配套芯片8259中断控制器,由8259管理8个中断源,并最后向CPU提中断请求。,八,五,一.8259的内部结构,读/写逻辑,级连/缓冲比较器,SP/EN,A0,控制逻辑,INT,INTA,中断服务寄存器(ISR),优先权电路,中断请求寄存器(IRR),中断屏蔽寄存器(IMR),内部总线,八,五,CS,1.中断请求寄存器(IRR),寄存引脚IR0IR7的中断请求信号,IRRi位置1,表明IRi引脚上有了中断请求信号,2.中断屏蔽寄存器(IMR),寄存程序员写入的中断屏蔽字,屏蔽字某位=1(IMRi位=1),则与该位对应的中断请求信号(IRRi位)就不能送到中断优先权电路。,八,五,优先权电路,Q3,Q4,IR3,IR4,Q3,Q4,IMR,IRR,八,五,如:MOVAL,11111100BOUT屏蔽寄存器口地址,AL;屏蔽IRR7IRR2的请求开放IRR1,IRR0,如:INAL,屏蔽寄存器口地址ANDAL,11110111BOUT屏蔽寄存器口地址,AL;开放IRR3的请求;对其它位的请求不改变;屏蔽/开放的状态,3.优先权电路(排队电路)作用:比较同时送达优先权电路的中断请求,哪一个级别最高。,八,五,比较CPU正为之服务的中断源和刚进入优先权电路的中断源,哪一个级别更高。,通过判优选中其中级别最高的中断源,然后通过控制电路,从INT端向CPU提中断请求。,4.中断控制电路,作用:寄存一组初始化命令字和操作命令字,通过译码产生内部控制信号当判优电路选中一个中断源时向CPU提中断请求(INT),八,五,通过INTA接收CPU送来的中断响应信号,中断响应信号是2个连续的负脉冲。,八,五,5.中断服务寄存器(ISR),ISR:8位寄存器,ISRi位与IRRi位一一对应,作用:记录CPU正为之服务的是哪一个中断源,怎样记录?,八,五,反之,如果ISR0位由10,表明IR0的中断服务程序执行完了。,所以ISR的每一位都是响应中断源的中断服务标志位。,6.数据总线缓冲器,作用:完成与CPU数据线配接,接收初始化命令字,操作命令字,当收到第二个中断响应脉冲时,通过他们向CPU送出被选中的中断源的中断类型码n,在这之后CPU从4n+04n+3单元取出n型中断向量,从而转入n型服务程序。,7.读/写控制模块接收CPU的读/写控制命令字和口地址选择信号。,八,五,8.级连/缓冲比较器,一位8259可以管理8级中断,二片8259“级连”可管理15级中断,级连/缓冲比较器是为完成多片8259级连设置的模块。,二.8259的中断过程CPU响应硬件中断的过程,8259A的中断过程,就是微机系统响应可屏蔽中断的过程,这一过程,简单描述如下:,首先由中断请求寄存器寄存加到引脚IR0IR7上的中断请求。,在中断屏蔽寄存器的管理下,没有被屏蔽的中断请求被送到优先权电路判优。,八,五,经过优先权电路的判别,选中当前级别最高的中断源,然后从引脚INT向CPU发出中断请求信号。,CPU满足一定条件后,向8259A发出2个中断响应信号(负脉冲)。,在实模式下,CPU从4n4n3单元取出该中断源的中断向量IP、CS,从而引导CPU执行该中断源的中断服务程序。,八,五,三.8259的中断管理方式,8259是很复杂的中断控制器,它从5个方面对中断进行管理。,每一种方式又有多种选择,八,五,说明:各种中断管理方式的选择是在初始化编程时,通过初始化命令字设定的。,2.中断系统是全机的核心,只有对中断系统的方方面面全面了解的基础上才能组织初始化命令字。,3.只有系统程序员才具备这方面的知识,所以对8259的初始化编程应由系统程序完成,本书不做介绍,原因是:8259A是中断系统的核心器件,对它的初始化编程要涉及到中断系统软、硬件许多问题,而且一旦完成初始化,所有硬件中断源和中断处理程序(包括已开发和未开发的)都必须受其制约。,八,五,严格地讲,像这样影响深远而且带有决策性质的问题,只有微机系统的设计者才有权威定夺。正因为如此,对系统8259A的初始化编程是在微机启动之后由BIOS自动完成的。从系统安全性考虑,用户在使用过程中不应当再对其初始化,更不能改变对它的初始化设置!,八,五,四.286以上微机,8259的中断管理方式,系统加电后:由BIOS对8259初始化编程,设定的中断管理方式为,中断屏蔽方式采用常规屏蔽方式即应用时,向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引脚的中断请求信号,引发的中断。,有可屏蔽中断请求,没有DMA请求,没有非屏蔽中断请求,4.响应非屏蔽中断的条件有非屏蔽中断请求,没有DMA请求一条指令执行完,八,六,3.响应可屏蔽中断的条件,CPU一条指令执行完毕,2硬件中断的级别DMA请求级别高于非屏蔽中断高于可屏蔽中断。,CPU处于开中断状态(I标=1),二.可屏蔽中断的硬件结构,可屏蔽中断硬件结构(1),八,六,硬盘,CS,A0,从片片选,地址线A0,CAS20,INT,D7D0,INTA,RD,WR,SP/EN,从8259,主8259IR2,主8259CAS20,主8259相应引脚,可屏蔽中断硬件结构(2),IR1,IR3,IR5,IR7,IR0,IR2,IR4,IR6,实时时钟,IRQ10,IRQ9,IRQ12,IRQ11,用户中断,保留,保留,保留,保留,协处理器,八,六,1.使用2片8259级连,管理15级中断,八,六,2.中断源与中断类型,八,六,八,六,3.硬件可屏蔽中断的中断级别,4系统分配的8259口地址,八,六,5中断结束命令,命令字=20H,八,六,八,六,接入从8259的中断源,其服务程序结束应分别向主、从8259各送一个中断结束命令字。,三.关于用户中断,1.用户中断请求的途径,用户中断请求,用户中断请求从ISA总线B4端子(IRQ9)引入,经过主8259,从8259二级中断管理,最后由主8259向CPU提中断。,只有从8259IMR1置0,主8259IMR2置0,其中断请求方能送到CPU。,八,六,2.实现用户中断必须对主、从8259应用编程(这样,对各种型号的主板都能适应),INAL,0A1HANDAL,11111101BOUT0A1H,AL;开放用户中断INAL,21HANDAL,11111011BOUT21H,AL;开放从8259中断,3.用户中断的中断类型CPU响应用户中断后,自动转向“71H型”服务程序,八,六,BIOS为“71H型”设计的服务程序如下:PUSHAXMOVAL,20HOUT0A0H,ALPOPAXINT0AH,有两个解决方法:,定义用户中断服务程序为“0AH型”中断程序的准备工作:置换0AH型中断向量,即把用户中断的中断向量40AH40AH+3单元,定义用户中断服务程序为“71H型”中断程序的准备工作:置换71H型中断向量,即把用户中断的中断向量471H471H+3单元,八,六,4.用户中断服务程序结束若用户中断定义为0AH型,服务程序结束前只向主8259送结束命令,若用户中断定义为71H服务程序结束前,向主从8259各送一中断结束命令,四硬件中断和软件中断的区别,综合以上描述可以看出,CPU在获得中断类型码以后,如何转向服务程序,就这一点而言,响应硬件中断和软件中断的操作是相同的,但是硬件中断和软件中断有许多不同点:,八,六,中断的引发方式不同硬件中断是由CPU以外的硬设备发出中断请求(接到引脚INTR和NMI)而引发的。而软件中断是由于CPU执行INTn指令而引发的。,CPU获取中断类型码的方式不同:响应硬件可屏蔽中断后,中断类型码是由8259A提供的。响应软件中断时,中断类型码是由软件中断指令INTn本身提供的。,CPU响应的条件不同:CPU只有在开中断时,才能响应硬件可屏蔽中断,响应软件中断不受此限制。,中断处理程序的结束方式不同。在硬件可屏蔽中断服务程序中,中断处理结束后,需要做两件事:,八,六,一是向8259A发出中断结束命令,8259A收到此命令后将ISR寄存器中的相应位清0,结束中断。二是执行IRET指令,中断返回。,而在软件中断服务程序中,中断处理结束后只需执行IRET指令。这些都是设计中断服务程序必须掌握的基本概念。,9.7日时钟中断,1.中断源:系统82540#计数器,每55ms有一次中断请求,2.中断类型:8型,八,七,CPU转入8型中断后,完成下列工作开中断,保护现场(DS压栈)40HDS,对“日时钟计数器”加1测算软驱马达关闭时间,八,七,向主8259送中断结束命令恢复现场,IRET,执行INT1CH,3.日时钟中断处理流程:,4.什么是“日时钟计数器”,BIOS系统规定:40H:6CH40H:6FH这4个单元(共32位)为日时钟计数器,每55ms加1次,计数到:001800B0H,为24小时,其计数值供系统软件使用。,系统启动时CPU执行BIOS中的一段程序,读取CMOS实时时钟电路的时间值计数值40:6CH40:6FH做为日时钟计数器的计数初值。,八,七,5.关于1CH服务程序8#服务程序,每隔55ms在DS=40H的前提下,调用一次1CH服务程序,之后又返回8型!,所以1CH中断是日时钟的外扩中断,用户可开发新的1CH中断(完成每55ms一次的定时操作)取代原来的。,9.8实模式定时中断程序设计,什么是定时中断?,利用中断技术,每隔一定时间完成一次预定的操作定时操作。,八,八,一.定时中断程序的设计方法,1.硬件:首先要明确谁是定时中断源?,定时源是系统82540#计数器,定时源是ISA总线B4端子上的外扩定时源,2.确定中断服务程序的类型,这一问题和中断源有关系,如果中断源是ISA总线B4端子引入的则服务程序应定义为0AH或71H型,按用户中断处理,八,八,有两种可能,如果中断源是系统82540#,而且定时操作周期=55ms整数倍,则定义用户服务程序为1CH型,取代系统的1CH服务程序。,如果中断源是系统82540#,但定时操作周期55ms整数倍,应重新对82540#初始化,八,八,重新对系统82540#初始化,中断计数,满Nms,定时操作,新8型服务程序,满55ms?,其中:X是N和55ms的最大公约数N是定时操作的周期,八,八,3.置换中断向量服务程序的类型确定之后,应置换相应的中断向量。,4.开放8259中断,从硬件中断的结构图可知:用户中断要经过从8259,主8259两级中断管理,其中断请求才能送到CPU,为了适应各种类型的主机板,在中断程序的准备工作中,应将从8259IMR1位置零,主8259IMR2位置零,从而打通用户中断请求的通道。一般说,各种型号的主机板对日时钟中断都是开放的,用户不必再采取措施。,八,八,5.避免“DOS重入”,图示,现行程序,INT21H,中断服务程序应避免使用INT21H,八,八,6服务程序的执行时间远远小于定时中断的时间间隔,7.中断结束向8259发中断结束命令,八,八,二.定时中断程序结构,八,八,特点:服务程序不直接进行定时操作,而是建立时间到标志。主程序中判时间到标志,再进行定时操作。,八,八,*,三.定时中断程序设计举例,【例8.9.1】1CH型中断的应用假设微机系统外扩了如下的数码管电路,要求使用系统定时源并采用中断方式,每隔一秒完成一次8字左移,循环往复,直到主机键盘按下任意键时停止。,八,八,图中数码管为共阴极,6个数码管的同名段已复接,该电路有两个端口,即段选口201H,位选口200H。,ah,八,八,针对口地址201H执行输出指令时,段选寄存器锁存数据线D0D7的信息,经过同相驱动器,驱动6个数码管的ah阳极段。即数据线D0对应于a段,数据线D7对应于h段。,ah,八,八,针对口地址200H执行输出指令时,位选寄存器锁存数据线D0D7位的信息,经过反相驱动器,驱动第1第6位数码管的共阴极。当D0位为1时,点亮第1位数码管,D0位为0时,熄灭第1位数码管,以此类推。,八,八,ah,设计思路因为系统定时器每隔55ms产生一次日时钟中断,中断18次为990ms,接近一秒钟。还由于日时钟中断每次都要调用1CH型中断,因此用户可以设计新的1CH型中断服务程序,对日时钟中断进行计数,计满18次完成一次8字左移。,对日时钟中断进行“中断计数”,是实现长时间定时的常用方法。,八,八,关中断转移系统的1CH型中断向量写入用户的1CH型中断向量第6位数码显示8字开中断,主程序,有键入?,恢复系统的1CH型中断向量返回DOS,Y,保护现场重新定义用户数据段中断计数,N,满18次?,18中断计数单元8字左移一位,恢复现场中断返回,Y,1CH型中断服务程序,图8.9例8.9.1程序框图,八,八,解法1:借用系统82540#计数器,定义服务程序为1CH型。,八,八,程序清单;FILENAME:891.ASM.486DATASEGMENTUSE16OLD1CDD?ICOUNTDB18;中断计数初值ORIGINDB20H;数码管位选初值DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXCLI;关中断CALLREAD1CCALLWRITE1C,八,八,MOVDX,201HMOVAL,7FHOUTDX,AL;输出8的字型码MOVDX,200HMOVAL,ORIGINOUTDX,AL;定位显示STI;开中断SCAN:MOVAH,1INT16H;有键入?JZSCAN;否转CALLRESETMOVAH,4CHINT21H,八,八,SERVICEPROCPUSHA;保护现场PUSHDSMOVAX,DATAMOVDS,AX;重新给DS赋值DECICOUNT;中断计数JNZEXIT;不满18次转MOVICOUNT,18;满18次重新设置计数初值SHRORIGIN,1JNCNEXTMOVORIGIN,20HNEXT:MOVAL,ORIGINMOVDX,200HOUTDX,AL;8字左移一位EXIT:POPDS;恢复现场POPAIRET;返回系统8型中断服务程序SERVICEENDP,八,八,READ1CPROC;转移系统1CH型中断向量MOVAX,351CHINT21HMOVWORDPTROLD1C,BXMOVWORDPTROLD1C+2,ESRETREAD1CENDP;-WRITE1CPROC;写入用户1CH型中断向量PUSHDSMOVAX,CODEMOVDS,AXMOVDX,OFFSETSERVICEMOVAX,251CHINT21H,八,八,POPDSRETWRITE1CENDP;-RESETPROC;恢复系统1CH型中断向量MOVDX,WORDPTROLD1CMOVDS,WORDPTROLD1C+2MOVAX,251CHINT21HRETRESETENDPCODEENDSENDBEG,八,八,重点注意3个问题:进入服务程序后,重新给DS赋值服务程序结束前,没有给8259送结束命令RESET子程序中,给DX,DS赋值不能颠倒,八,八,解法2:借用82540#计数器,重新对其初始化,使之每隔5ms有一次中断,定义服务程序为8型。源程序请见书P211214,重点解释:,怎样从用户的8型中断服务程序转入系统的8型中断服务程序?在代码段中OLD08DD?;存放系统8型中断向量每隔55ms执行一条JMPCS:OLD08;(OLD08)IP;(OLD08+2)CS,八,八,99实时时钟中断,中断源:主板上实时时钟电路,中断类型:70H,八,八,实时时钟中断包括:周期中断和告警中断2种,统称实时时钟中断。,八,八,CMOS内部有若干存储单元,存放实时时钟信息。基准时钟为32.768KHZ,经32分频,产生1.024KHZ的方波,每1024个方波秒单元加1,每60秒分单元加1,八,八,系统正常工作时,不允许周期中断,不允许告警中断,因此,正常工作时系统是没有实时时钟中断的!,八,八,如果需要,可以重新对CMOS编程,使之产生周期中断或告警中断。,八,八,八,九,系统启动,CPU执行BIOS中的一段程序,读取CMOSRAM中的实时时钟计数值40:6CH40:6FH做为日时钟计数器的初值。,断电后,实时时钟电路由电池供电,仍连续工作象手表一样计时,所以称为实时时钟电路,初值在整机售出时调整好!,八,九,八,九,一.实时时钟中断处理流程:70H型服务程序,开中断,保护现场,周期中断?,事件等待计数器减976s,够减?,禁止周期中断事件等待标志置0用户等待标志置为80H,Y,Y,N,N:等待时间到,报警中断?,INT4AH,IRET,系统4AH型中断服务程序,向主从8259发中断结束命令恢复现场IRET,N,8.12实时时钟中断处理流程(BIOS28684/1/10版),八,九,Y,问题:什么是事件等待计数器?什么是事件等待标志?什么是用户等待标志?,1什么是“事件等待标志计数器”,BIOS规定:系统RAM40:9CH40:9FH这4个单元为“事件等待计数器”存放用户预置的“等待时间”。,八,九,2.什么是“用户等待标志”,“用户等待标志”是用户程序附加段中自定义的一个字节型单元。它是70H型服务程序向用户程序传送信息的单元。,3.什么是“事件等待标志”“事件等待标志”是BIOS程序的一个工作单元,与用户程序无关。,二.周期中断的开发,欲开发周期中断,需做两项准备工作:,对CMOS重新编程,使之允许周期中断预置等待时间,这两项工作只需成功地调用INT15H的83H子功能即可完成。,八,九,【INT15H83H号子功能】预置等待时间,入口参数:置AL0,表明是预置等待时间;置CX、DX等待时间的微秒数,其中CX为高16位二进数,DX为低16位二进数。置ES:BX用户等待标志的物理地址。,出口参数:C标志置1,表示预置失败,C标志置0,表示预置成功。,说明:用户等待标志是一个字节型单元,该单元要求设置在用户程序的附加段,该单元偏移地址要求写入BX寄存器。,八,九,若成功的执行了INT15H的83H号子功能,意味着:BIOS已经对CMOS重新编程,允许周期中断。打这以后,CMOS才能每隔976s提出一次周期中断请求。CPU响应后转入实时时钟中断处理,对事件等待计数器减976s,不够减时,置“用户等待标志”为80H,通报等待时间到!用户程序查询“用户等待标志”为80H时,转而执行预定的操作。,八,九,例:试验周期中断,编写一个程序,利用周期中断,在程序执行后每隔2秒钟,显示一串字符“TIMETO!”按任意键时停止。,程序清单;FILENAME:8101.ASMDATASEGMENTFLAGDB00H;用户等待标志TTTDD2000000;等待时间(微秒)MESGDBTIMETO!,0DH,0AH,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATABEG:MOVAX,DATAMOVDS,AX,八,九,MOVES,AXAGA:MOVAH,83H;预置等待时间MOVAL,0MOVBX,OFFSETFLAGMOVCX,WORDPTRTTT+2MOVDX,WORDPTRTTTINT15HJCAGASTISCAN:MOVAH,1INT16HJNZEXIT;有键入转CMPFLAG,80HJNZSCAN;用户等待标志没置位转DISP:MOVAH,9MOVDX,OFFSETMESG,八,九,INT21HMOVFLAG,0;用户等待标志复位JMPAGAEXIT:MOVAH,4CHINT21HCODEENDSENDBEG,INT21HMOVFLAG,0;用户等待标志复位JMPAGAEXIT:MOVAH,4CHINT21HCODEENDSENDBEG,八,九,三.报警中断的开发,在CMOS编程允许报警中断的前提下,当实时时钟达到用户预置的报警时间的时候,CMOS发出报警中断。CPU响应后最终转向报警中断处理程序(即4AH型中断服务程序)。,欲开发报警中断需做两项准备工作:,对CMOS重新编程使之允许报警中断。预置报警时间。,这两项工作只需先行调用INT1AH的07H号子功能,然后调用INT1AH的06H子功能,即可完成。,八,九,【INT1AH的07H号子功能】复位报警,为预置报警时间做准备入口参数:无。,【INT1AH的06H号子功能】预置报警时间,入口参数:置CH报警时刻的小时数(023的BCD码数)。置CL报警时刻的分钟数(059的BCD码数)。置DH报警时刻的秒数(059的BCD码数)。,出口参数:C标志置1,表示预置失败,C标志置0表示预置成功。,八,九,例:试验报警中断,设置报警时间,当实时时钟达到报警时间时,喇叭发出三声短促的音响。注意:为了实验方便,我们令程序执行后5秒钟的系统时间为实时时间。,八,九,程序清单;FILENAME:8102.ASMCODESEGMENTASSUMECS:CODEBEG:CLICALLWRITE4ACALLC_ALARM;清除报警时间CALLS_ALARM;设置报警时间CALLSETTIME;设置系统时间STISCAN:MOVAH,1INT16HJZSCAN;等待中断CALLC_ALARM;清除报警时间MOVAH,4CHINT21H,八,九,SERVICEPROCMOVCX,3OPEN:INAL,61HORAL,00000011BOUT61H,AL;接通扬声器CALLDELAY;延时CLOSE:INAL,61HANDAL,11111100BOUT61H,AL;关闭扬声器CALLDELAY;延时LOOPOPENIRETSERVICEENDP,八,九,DELAYPROCPUSHCXMOVAH,86HMOVCX,0MOVDX,50000INT15HPOPCXRETDELAYENDP,八,九,WRITE4APROC;设置4AH型中断向量MOVAX,CODEMOVDS,AXMOVDX,OFFSETSERVICEMOVAX,254AHINT21HRETWRITE4AENDP,八,九,SETTIMEPROC;设置系统时间AGA:MOVAH,03HMOVCX,1030HMOVDX,0INT1AHJCAGARETSETTIMEENDP;-C_ALARMPROC;清除报警时间MOVAH,07HINT1AHRETC_ALARMENDP,八,九,S_ALARMPROC;设置报警时间AGAIN:MOVAH,06HMOVCX,1035HMOVDH,05HINT1AHJCAGAINRETS_ALARMENDPCODEENDSENDBEG,八,九,四.周期中断和报警中断的区别,相同:都是为用户提供一个时间等待的功能。,不同:,时间概念不同,周期中断提供的时间等待功能,其时间概念是“相对时间”,是相对于程序执行时的时间。,而告警中断,提供的时间等待功能,是实时时间。,什么是相对时间?实时时间?,如:你午休时要求同室的同学:我睡一会儿,过10分钟叫醒我,这“10分钟”就是相对时间我睡一会儿,1:30叫醒我,这“1:30”就是实时时间,八,九,“等待时间到”的通报方式不同,对于周期中断:等待时间到,BIOS置用户等待标志为80H,对于告警中断:等待时间到,CPU自动转向“4AH型”服务程序,程序的开发方式不同,对于周期中断,用户程序只能查询等待标志,当其为80H时,转而执行定时操作。,对于告警中断:用户应采用中断方式,设计新的4AH服务程序,八,九,910键盘中断,中断源:主板键盘接口电路中断类型:9一.键盘中断全过程:,八,十,1键盘接口分2部分:一部分装在键盘盒内键盘电路另一部分装在主机板键盘接口电路,2部分之间通过5芯电源连接。,2键盘电路以单片机为核心,加电后固化在单片机内部的键盘扫描程序,不断扫描每一个按健,一旦有键闭合,就把闭合键的扫描码(位置码)键盘接口电路。,3键盘接口电路:,把串行扫描码通过移位寄存器转换成并行扫描码口地址为60H的端口寄存器,八,十,串并转换完毕,向主8259接中断请求,CPU响应后,转9型服务程序,二键盘中断处理流程,开中断,保护现场(DS压栈),40HDS,从60H口地址寄存器取并行扫描码分析,处理转换成2字节键代码存入键盘缓冲区,向8259发中断结束命令,恢复现场IRET,八,十,三键盘缓冲区,BIOS规定:系统RAM40:1EH40:3DH为键盘缓冲区共32个单元,实际使用30个单元,存放15个键的键代码。键盘缓冲区是以“先进先出”的规则存取。,由9型服务程序写入键代码,用户用INT16H访问键盘缓冲区,键盘缓冲区是9型硬中断和INT16H软中断之间交换信息的缓冲区。,注意:CPU执行INT16H时,在16H服务程序中,DS=40H,如果此时响应中断,DS的值用户程序数据段的段基址。,八,十,四键代码生成,1特殊键状态标志,键盘中断处理程序,从键盘接口电路获取按键扫描码,对其进行分析,区分是字符键还是特殊键。,特殊键是:Ins,CapsLock,NumLock,ScrollLock,Alt,Ctrl,左、右Shift,前四个是开关键。,BIOS规定:系统RAM40:17H单元为特殊键的键标志单元。用来记录特殊键的状态。键标志单元位结构如下:,八,十,D7:Ins键奇数次按下置1,偶数次按下置0。D6:CapsLock键奇数次按下置1,偶数次按下置0。D5:NumLock键奇数次按下置1,偶数次按下置0。D4:ScrollLock键奇数次按下置1,偶数次按下置0。D3:Al
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二手车交易合同模板
- 2025云南保山市智源瑞积中学紧缺学科教师招聘2人备考练习试题及答案解析
- 2025重庆渝北区悦港中学招聘教师2人考试参考试题及答案解析
- 2025重庆大足区统计局公开招聘1人备考练习试题及答案解析
- 新闻广播考试题及答案
- 2025年西地兰的试题及答案
- 2025下半年河南洛阳孟津区公益性岗位招聘备考练习题库及答案解析
- 南京市统考试卷及答案
- 3、2025语文六上教学计划【第3版】
- 城中村改造项目交通设施建设方案
- 学校校务公开管理制度及记录台账
- ECMO培训计划方案
- 卫生院、社区卫生服务中心《死亡医学证明书》领用、发放、管理制度
- 企业名称核准申请书范本
- 仓库环保知识培训
- 2025年1月浙江省高二物理学业水平考试试卷试题(含答案详解)
- 广东专插本《管理学》真题及答案(2024-2025)
- 茶马古道文化研究
- 南京工业大学甲醇制氢工艺设计(反应器)
- 医疗废物处理可行性研究报告
- 2025年中考语文阅读复习:理解词语含义(含练习题及答案)
评论
0/150
提交评论