微机原理与接口技术第9章.ppt
第九章 中 断,.1 基本概念,复习CPU与外设信息交换的控制方式种类以查询方式输入为例,当外设数据未准备好时,CPU需要不断查询外设是否准备好的状态,效率低,1.中断方式示意(以输入中断为例),中断概念,2.什么是中断?,CPU暂停执行现行程序,转而处理随机事件,处理完毕后再返回被中断的程序,这一全过程称为中断。,3.中断源 能够引发CPU中断的信息源,(1)外部中断源(硬件中断源)I/O设备 如键盘、显示器、打印机 数据通道 如磁带、磁盘 时钟 如8254 0#,由此引发的中断 故障源 如掉电、存贮器奇偶校验错(2)内部中断源(软件中断源)执行INT软件中断指令 如执行指令INT 21H CPU指令执行产生的异常 如被0除、单步执行,中断概念,选通信号,4.具有中断请求功能的输入接口示意图,输入设备,锁存器(8),三态缓冲器(8),CPU 数据线,R D Q,+5 V,中断请求触发器,Q D,中断允许触发器,数据线D0位,地址译码器,INTR,地址总线,IOW,IOR,控制口选中,数据口选中,中断概念,5.中断系统 为实现中断而采取的硬件,软件措施,6.中断系统应具备的基本功能,对于硬件中断,接口电路应具备屏蔽和开放的功能,这种功能由程序员通过软件去控制。,能实现中断判优(中断排队),当有多个中断源提出请求时,应能优先响应高级别的中断源。,中断概念,能够实现中断嵌套,即高级别的中断源能够中断低级别的中断服务程序。,响应中断后,能自动转入中断处理,处理完毕能自动返回断点。,设“B”级别高于“A”,中断概念,.2 80X86 中断指令,1.开中断指令 STI功能:使F寄存器中I标志置1,CPU处于开中断状态。,2.关中断指令 CLI功能:使F寄存器中I标志置1,CPU处于关中断状态。,3.软件中断指令 INT nn为中断类型码,n为0255之间有定义的无符号整数。功能:无条件转向n型中断服务子程序。,INT n 指令的执行过程CPU响应软件中断的过程,F寄存器栈(保存INT n 之前的F状态)使F中的T标志置0禁止单步操作 I标志置0CPU处于关中断状态,断口地址栈先:断口基地址(CS)栈,后:断口偏移地址(IP)栈,CPU从4n 4n+3单元取出n型服务程序入口地址 IP:CS,从而转入n型中断服务程序。,中断指令,4.中断返回指令 IRET,功能:依次从栈顶弹出6个元素 IP,CS,F 如果栈顶是INT n 的断口地址,则执行 IRET后,返回断点,否则不能。,图示 执行INT n 栈顶示意图,执行IRET 示意图,sp,中断指令,IRET 是中断服务子程序的出口指令,IRET和RET的区别 IRET从栈顶弹出6 个元素 IP,CS,F 远程RET,从栈顶弹出4个元素 IP,CS 近程RET,从栈顶弹出2个元素 IP,.中断向量和中断向量表,中断系统是为实现中断而采取的软、硬件措施,中断指令、中断向量和中断向量表是实现中断的重要软件措施。,什么是中断向量中断向量是实模式下,中断服务子程序的 入口地址,2.中断向量表:所有中断向量的集合,3.中断向量表的设置CPU规定:在实模式下,中断向量表需设置在系统的RAM最低端的1K单元(0 3FFH),它由2部分组成:服务程序所在代码段的段基址 2 个字节服务程序入口的偏移地址 2 个字节,中断向量,4.中断向量表的表地址与中断类型的关系,n 型中断向量,如:“21H”型中断向量:存放在84H 87H单元中问:9CH型中断向量存放在何处?,解:9CH 4=1001110000=270H 9CH型中断向量存于 270H 273H单元中,中断向量,5.中断向量的引导作用,CPU响应软件中断的过程,中断向量,6.中断向量表的初始化,由BIOS设计的中断服务程序(如INT 16H,INT 10H)其中断向量在加电时由BIOS负责写入中断向量表。,由DOS设计的中断服务程序(如 INT 21H)其中断向量是在启动DOS时,由DOS负责写入中断向量表。,用户程序开发的中断服务程序,由用户程序写入其中断向量。,中断向量,问题:用户如何写入中断向量?,方法一、用户自己编写程序填写中断向量CLIPUSH DSMOVAX,0000HMOVDS,AXMOVBX,4*nMOVAX,OFFSET SERVICEMOVBX,AXMOVAX,SEG SERVICEMOVBX+2,AXPOP DSSTI,中断向量,方法二、DOS设计2个子程序,专门用于中断向量的读出、写入,INT 21H 的35H子功能 功能:读出n型中断向量入口:AL=中断类型码出口:ES:BX=n型中断向量,INT 21H 的25H子功能 功能:写入n型中断向量入口:DS=中断服务程序所在代码段的段基址 DX=中断服务程序入口的偏移地址,中断向量,例:把用户程序中以“TIMER”命名的中断服务子程序的入口地址 4 1CH 4 1CH+3单元,中断向量,7.关于中断向量表的说明,在实模式下,系统RAM最低端的1K单元为中断向量表,但是并非每一个表项都是中断向量。BIOS利用某些表项做为“参数指针”,参数指针指向的是一群参数,而不是中断服务程序,因此称它们为“向量”是比较合适的。,例如:1DH 型向量,指向屏幕参数表。1EH 型向量,指向软盘参数表。1FH 型向量,指向图型字符表。41H 型向量,指向第一台硬盘参数表。46H 型向量,指向第二台硬盘参数表。,用户程序不能改动这些向量,当然也不能执行以1DH,1EH,1FH,41H,46H为中断类型码的软中断指令,否则系统将会瘫痪。,中断向量,.4 系统中断的分类,CPU中断逻辑,CPU中断,软件中断(INT n指令),非屏蔽中断请求,中断控制系统,NMI,可屏蔽中断请求,INTR,系统中断的分类,一.CPU中断,CPU中断是指:CPU执行某些操作而引发的中断,这类中断使用了0、1、3、4、6、7中断号。,1.除法错中断 0型中断,CPU执行DIV或IDIV指令,如果除数为0,或者商数超出寄存器的表示范围,CPU自动调用0型中断服务程序。,系统中断的分类,2.单步中断 1型中断,3.断点中断 3型中断,当标志寄存器的T标志为1时,CPU一条指令执行完毕,自动调用1型中断服务程序。但是,DOS为1型中断设计的服务程序只有一条IRET指令。,CPU执行“INT 3”指令后,调用3型中断服务程序,而DOS系统的3型中断服务程序也只有一条IRET指令。,注意:单步和断点中断是因为DEBUG程序的需要而设计,系统中断的分类,4.溢出中断 4型中断 对应的软件中断指令有两种汇编格式,功能稍有不同。INTO INT 4,当FLAG寄存器的溢出标志为1,在这种条件下,执行“INTO”指令,将会调用4型服务程序。否则,如果溢出标志为0,执行“INTO”指令是无效的。,DOS为4型中断设计的服务程序也只有一条IRET指令,系统中断的分类,二.软件中断,执行有定义的INT n指令而引发的中断,称为软件中断。在这里,之所以加了“有定义的”这一限制词,是因为并非所有的中断号都有与之配套的中断服务程序。,软件中断使用05H,10HFFH中的若干个中断号。软件中断又可分为BIOS中断、DOS中断。,1.BIOS中断 BIOS中断,占用了05H、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 实时时钟管理。,中断号1DH,1EH,1FH,41H,46H也被BIOS占用了。但是,与这些中断号对应的并不是中断服务程序。也就是说,不存在与这些中断号对应的软中断指令,用户程序如果执行INT 1DHINT 1FH,INT 41H,INT 46H,必将引起系统瘫痪(参看中断向量表的说明)。,系统中断的分类,2.DOS中断 DOS中断,又分为DOS专用中断,DOS保留中断,用户可调用的DOS中断以及保留给用户开发的中断。,(1)DOS专用中断,22H型中断 程序正常结束时,DOS将自动调用该中断返回父进程。,23H型中断 程序非正常结束时(如:用户按下Ctrl_C,或者Ctrl_Break中途停止程序的运行),DOS调用该中断。,24H型中断 程序运行发生严重错误时(例如:对软磁盘文件进行操作的时候,驱动器小门没有关闭,或进行打印操作而打印机没有连通),DOS自动调用此类中断,发出错误信息“Not readyAbort,Retry,Ignore?”,这些中断是DOS专用的,DOS在调用此类中断之前,还要做些准备工作。因此,用户程序不能直接调用这些中断。,系统中断的分类,28H3FH型中断 也为DOS专用,Microsoft公司没有公开这类中断的功能。但是,一些醉心钻研DOS的专家们,仍然破译出一些有价值的信息。例如:INT 33H为鼠标器调用。,(2)用户可调用的DOS中断,20H型中断 用户程序执行INT 20H指令可结束程序的运行,返回DOS。但必须注意:在执行INT 20H之前,必须保证用户程序CS寄存器的内容等于PSP段基址。因此在用户的COM文件中,可以直接使用INT 20H返回DOS。INT 20H 与INT 21H 的0号功能调用,完成相同的操作。,21H型中断 DOS系统的许多功能都集中在21H型中断服务程序中。用户程序把功能号写入AH寄存器,设置相应的入口参数,然后执行INT 21H即可调用不同的功能。我们把执行INT 21H指令所完成的功能,称为“DOS系统功能调用”。,系统中断的分类,25H型中断 此类中断在指定的驱动器上,按照扇区号读取信息。,26H型中断 在指定的驱动器上,按照扇区号写入信息。INT 25H,INT 26H称为“绝对磁盘读写调用”。在此类调用中,DOS系统不使用文件控制块,也不使用文件号去管理磁盘文件,而是按照扇区号直接进行磁盘信息的读写。,27H型中断 中止并驻留程序于内存之中。用户程序执行INT 27H可以中止程序的运行,并且把欲驻留的程序段驻留在内存之中。,系统中断的分类,60H66H是保留给用户使用的中断号。DOS没有为它们设计服务程序。启动DOS后,60H 66H型“中断向量”均为0值。正因为如此,如果你没有开发出60H66H型中断服务程序,没有改写60H 66H型中断向量,千万不可调用此类中断,否则系统瘫痪。,(3)用户可开发的DOS中断,(4)DOS保留的中断,DOS为了自身版本的升级和功能扩充,保留了若干个中断它们是:42H45H,4BH5FH,68H6FH,72H74H,77H7FH。,以上关于软件中断的概念,在设计应用程序时是十分有用的,实际上,如果不涉及BIOS中断,不涉及DOS中断,用户将无法设计应用程序。,系统中断的分类,9.5 8259中断控制器,外部中断是由CPU以外的中断请求而引发的。如果有多个中断请求,怎样连接至CPU呢?,8259A,一.8259的内部结构,1.中断请求寄存器(IRR),寄存引脚IR0IR7的中断请求信号,IRRi位置1,表明IRi引脚上有了中断请求信号,8259内部结构,2.中断屏蔽寄存器(IMR),寄存程序员写入的中断屏蔽字,屏蔽字某位=1(IMRi位=1),则与该位对应的中断请求信号(IRRi位)就不能送到中断优先权电路。,8259内部结构,8259内部结构,如:MOV AL,11111100B OUT 屏蔽寄存器口地址,AL;屏蔽IRR7 IRR2的请求开放IRR1,IRR0,如:IN AL,屏蔽寄存器口地址 AND AL,11110111B OUT 屏蔽寄存器口地址,AL;开放IRR3的请求;对其它位的请求不改变屏蔽/开放的状态,3.优先权电路(排队电路),比较CPU正为之服务的中断源和刚进入优先权电路 的中断源,哪一个级别更高。,通过判优选中其中级别最高的中断源,然后通过控制电路,从INT端向CPU提中断请求。,8259内部结构,作用:比较同时送达优先权电路的中断请求,哪一个 级别最高。,4.中断控制电路,8259内部结构,作用:寄存一组初始化命令字和操作命令字,通过译码产 生内部控制信号当判优电路选中一个中断源时向CPU提中断请求(INT),8259内部结构,5.中断服务寄存器(ISR),8259内部结构,ISR:8位寄存器,ISRi位与IRRi位一一对应,作用:记录CPU正为之服务的是哪一个中断源,怎样记录?,反之,如果ISR0位由1 0,表明IR0的中断服务程序执行完了。,所以ISR的每一位都是响应中断源的中断服务标志位。,8259内部结构,6.数据总线缓冲器,作用:完成与CPU数据线配接,接收初始化命令字,操作命令字,当收到第二个中断响应脉冲时,通过他们向CPU送出被选中的中断源的中断类型码n,在这之后CPU从4n+04n+3单元取出n型中断向量,从而转入n型服务程序。,8259内部结构,7.读/写控制模块功能:接收片选信号CS、端口选择信号A0和读写控制信号RD、WR。一片8259A在系统中占用两个口地址,用末位地址线A0选择端口,其它地址线通过译码产生8259A的片选信号。PC/XT系统中,使用一片8259A,有两个口地址:偶 地址20H,奇地址21H。PC/AT系统中,使用两片8259A,主8259A口地址 为20H、21H,从8259A口地址为A0H、A1H。,8259内部结构,8.级连/缓冲比较器,一位8259可以管理8级中断,二片8259“级连”可管理15级中断,级连/缓冲比较器是为完成多片8259级连设置的模块。,8259内部结构,8259的引脚,IR0IR7:外部中断请求信号输入INT:输出,提向CPU的INTR端INTA:输入,接收CPU发来的中断响应信号D0D7:输入/输出,数据总线CS:片选信号A0:地址线A0,用于选择内部端口WR、RD:读/写控制信号CAS0CAS2:用于8259级联SP/EN:用于8259级联,二.8259的中断过程CPU响应硬件中断的过程,8259A的中断过程,就是微机系统响应可屏蔽中断的过程,这一过程,简单描述如下:,首先由中断请求寄存器寄存加到引脚IR0IR7上的 中断请求。,在中断屏蔽寄存器的管理下,没有被屏蔽的中断请求 被送到优先权电路判优。,经过优先权电路的判别,选中当前级别最高的中断源,然后从引脚INT向CPU发出中断请求信号。,CPU满足一定条件后,向8259A发出2个中断响应信 号(负脉冲)。,在实模式下,CPU从4n4n3单元取出该中断 源的中断向量IP、CS,从而引导CPU执行该中断 源的中断服务程序。,8259内部结构,三.8259的中断管理方式,8259是很复杂的中断控制器,它从5个方面对中断进行管理。,每一种方式又有多种选择,说明:各种中断管理方式的选择是在初始化编程时,通 过初始化命令字设定的。,2.中断系统是全机的核心,只有对中断系统的方方面 面全面了解的基础上才能组织初始化命令字。,3.只有系统程序员才具备这方面的知识,所以对8259 的初始化编程应由系统程序完成,不做详细介绍,原因是:8259A是中断系统的核心器件,对它的初始化编程要涉 及到中断系统软、硬件许多问题,而且一旦完成初始化,所 有硬件中断源和中断处理程序(包括已开发和未开发的)都 必须受其制约。,四.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,主8259 IR2,主8259 CAS20,主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应用编程(这样,对各种型号的主板都能适应),IN AL,0A1HAND AL,11111101BOUT 0A1H,AL;开放用户中断IN AL,21HAND AL,11111011BOUT 21H,AL;开放从8259中断,中断的引发方式不同 硬件中断是由CPU以外的硬设备发出中断请求(接到 引脚INTR和NMI)而引发的。而软件中断是由于CPU 执行INT n指令而引发的。,CPU获取中断类型码的方式不同:响应硬件可屏蔽中 断后,中断类型码是由8259A提供的。响应软件中断 时,中断类型码是由软件中断指令INT n本身提供的。,CPU响应的条件不同:CPU只有在开中断时,才能响应 硬件可屏蔽中断,响应软件中断不受此限制。,中断处理程序的结束方式不同。在硬件可屏蔽中断服务程序中,中断处理结束后,需要 做两件事:,四硬件中断和软件中断的区别,一是向8259A发出中断结束命令,8259A收到此命令后将ISR寄存器中的相应位清0,结束中断。二是执行IRET指令,中断返回。,而在软件中断服务程序中,中断处理结束后只需执行IRET指令。这些都是设计中断服务程序必须掌握的基本概念。,9.7 硬件可屏蔽中断例,1.中断源:系统8254 0#计数器,每55ms有一次中断请求,2.中断类型:8型,一日时钟中断,CPU转入8型中断后,完成下列工作 开中断,保护现场(DS压栈)40H DS,对“日时钟计数器”加1 测算软驱马达关闭时间,向主8259送中断结束命令恢复现场,IRET,执行INT 1CH,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一次的定时操作)取代 原来的中断服务子程序。,2.用户中断的中断类型 CPU响应用户中断后,自动转向“71H型”服务程序,二用户中断,1.中断源:系统总线插槽B4端引入的用户设计的硬件中断请求信号,BIOS为“71H型”设计的服务程序如下:PUSHAXMOVAL,20HOUT 0A0H,ALPOPAXINT0AH,用户定义的中断服务程序有两个设计方法:,定义用户中断服务程序为“71H型”中断程序的准备工作:置换71H型中断向量,即把用户 中断的中断向量471H 471 H+3单元,定义用户中断服务程序为“0AH型”中断程序的准备工作:置换0AH型中断向量,即把 用户中断的中断向量40AH 40AH+3单元,3.实现用户中断必须对主、从8259应用编程,保证中断申请由8259中断控制器提向CPU,IN AL,0A1HAND AL,11111101BOUT 0A1H,AL;开放用户中断IN AL,21HAND AL,11111011BOUT 21H,AL;开放从8259中断,4.用户中断服务程序结束 若用户中断定义为0AH型,服务程序结束前只向主8259送结束命令,若用户中断定义为71H 服务程序结束前,向主从8259各送一中断结束命令,9.8 实模式下的定时中断程序设计,什么是定时中断?,利用中断技术,每隔一定时间完成一次预定的操作定时操作。,一.定时中断程序的设计方法,1.硬件:首先要明确谁是定时中断源?,定时源是系统 8254 0#计数器,定时源是ISA总线B4端子上的外扩定时源,2.确定中断服务程序的类型,这一问题和中断源有关系,如果中断源是ISA总线B4端子引入的 则服务程序应定义为0AH或71H型,按用户中断处理,有两种可能,如果中断源是系统8254 0#,而且定时操作周期=55ms整数倍,则定义用户服务程序为1CH型,取代 系统的1CH服务程序。,如果中断源是系统8254 0#,但定时操作周期 55ms整数倍,应重新对8254 0#初始化,3.置换中断向量 服务程序的类型确定之后,应置换相应的中断向量。,4.开放8259中断,从硬件中断的结构图可知:用户中断要经过从8259,主8259两级中断管理,其 中断请求才能送到CPU,为了适应各种类型的主机板,在中断程序的准备工作中,应将从8259 IMR1位置零,主8259IMR2位置零,从而打通用户中断请求的通道。一般说,各种型号的主机板对日时钟中断都是开放 的,用户不必再采取措施。,5.避免“DOS重入”,图示,现行程序,INT 21H,中断服务程序应避免使用INT 21H,6服务程序的执行时间 远远小于定时中断的时间间隔,7.中断结束向8259发中断结束命令,二.定时中断程序结构,特点:服务程序不直接进行定时操作,而是建立时间到标志。主程序中判时间到标志,再进行定时操作。,*,三.定时中断程序设计举例,Eg:采用定时中断,使系统每隔1S在屏幕上显示一行 I AM A STUDENT!共显示10行。,设计思路 1 定时中断的实现 因为没有外扩定时源,采用系统定时中断,即用8254的 0号计数器 2 日时钟中断请求信号提向主8259的IR0,执行08H型中断 服务程序 3 定时时间1S的实现 1S不是55MS的整数倍,须对8254的0号计数器重新初始 化 55MS是最长时间,如何实现长时间定时?中断计数,4 怎样从用户的8型中断服务程序转入系统的8型中 断服务程序?在代码段中 OLD08 DD?;存放系统8型中断向量每隔55ms执行一条 JMP CS:OLD08;(OLD08)IP;(OLD08+2)CS,重新对系统8254 0#初始化,中断计数,满Nms,定时操作,新8型服务程序,满55ms?,其中:X是N和55ms的最大公约数N是定时操作的周期,其中:X是N和55ms的最大公约数N是定时操作的周期,5ms,设计要点:置换08H型中断向量 在数据段定义两个计数值 ICOUNT1:用于中断计数 LCOUNT:用于行计数 数据段设置一中断标志TIMETO 主程序判断该标志 TIMETO=-1时,表明200次中断满 TIMETO=0 时,表明200次中断未满 主程序结束后,恢复8254的计数值 恢复08H中断向量 中断服务程序完成对中断进行计数,判断ICOUNT,满11执行老08H型服务程序,满200将TIMETO置为-1,否则提前中断返回,.486DATA SEGMENT USE16COUNT1 DB 200;秒中断计数初值COUNT2 DB 11;55ms中断计数初值TIMETO DB 0 LCOUNT DB 10MESG DB I AM A STUDENT!,0DH,0AH,$DATA ENDSCODE SEGMENT USE16OLD08 DD?;存放系统8型中断向量 ASSUME CS:CODE,DS:DATABEG:MOV AX,DATA MOV DS,AX,程序清单:,MOVAX,2 INT 10H;清屏 CLI;关中断 CALL I8254 CALL READ08 CALL WRITE08 STI;开中断,程序清单:,SCAN:NOP CMP TIMETO,-1 JNZ SCAN,200次中断到?MOV TIMETO,0 MOV DX,OFFSET MESG MOV AH,9 INT 21H DEC LCOUNT JNZ SCAN CALL RESET MOV AH,4CH INT 21H,程序清单:,SERVICE PROC PUSHA;保护现场 PUSH DS;DS可能是用户数据段段基址 MOV AX,DATA;也可能是40H MOV DS,AX;重新给DS赋值 DEC COUNT1;中断计数 JNZ NEXT2;不满1秒钟转 MOV COUNT1,200;重新设置计数初值 MOV TIMETO,-1NEXT2:DEC COUNT2;中断计数 JNZ EXIT;不满55ms转 MOV COUNT2,11;重新设置计数初值 POP DS;恢复现场 POPA;恢复现场 JMP CS:OLD08;转系统8型中断服务程序EXIT:MOV AL,20H;中断结束命令 OUT 20H,AL;主8259 POP DS;恢复现场 POPA;恢复现场 IRET;返回被中断程序SERVICE ENDP,程序清单:,I8254 PROC;系统定时器初始化 MOV AL,36H OUT 43H,AL MOV AX,5965;每隔5ms OUT 40H,AL MOV AL,AH OUT 40H,AL;提一次中断请求 RETI8254 ENDP;-READ08 PROC;转移系统8型中断向量 MOV AX,3508H INT 21H MOV WORD PTR OLD08,BX MOV WORD PTR OLD08+2,ES RETREAD08 ENDP,程序清单:,WRITE08 PROC;写入用户8型中断向量 PUSH DS MOV AX,CODE MOV DS,AX MOV DX,OFFSET SERVICE MOV AX,2508H INT 21H POP DS RETWRITE08 ENDP,程序清单:,RESET PROC;恢复系统资源 MOV AL,0 OUT 40H,AL OUT 40H,AL MOV DX,WORD PTR OLD08 MOV DS,WORD PTR OLD08+2 MOV AX,2508H INT 21H RETRESET ENDPCODE ENDS END BEG,程序清单:,重点注意3个问题:进入服务程序后,重新给DS赋值,SERVICE PROC PUSHA PUSH DS MOV AX,DATA MOV DS,AX,服务程序结束前,需要给8259送结束命令,写中断向量子程序中,注意DX,DS的赋值顺序,99 键盘中断,中断源:主板键盘接口电路中断类型:9一.键盘中断全过程:,1 键盘接口分2部分:一部分装在键盘盒内键盘电路 另一部分装在主机板键盘接口电路,2 部分 之间通过5芯电源连接。,2 键盘电路以单片机为核心,加电后固化在单片机 内部的键盘扫描程序,不断扫描每一个按健,一 旦有键闭合,就把闭合键的扫描码(位置码)键盘接口电路。,3 键盘接口电路:,把串行扫描码通过移位寄存器转换成并行扫描码 口地址为60H的端口寄存器,串并转换完毕,向主8259接中断请求,CPU响应后,转9型服务程序,二键盘中断处理流程,开中断,保护现场(DS压栈),40H DS,从60H口地址寄存器取并行扫描码分析,处理转 换成2字节键代码存入键盘缓冲区,向8259发中断结束命令,恢复现场 IRET,三键盘缓冲区,BIOS规定:系统RAM 40:1EH 40:3DH为键盘缓冲区共32个单元,实际使用30个单元,存放15个键的键代码。键盘缓冲区是以“先进先出”的规则存取。,由9型服务程序写入键代码,用户用INT 16H访问键盘缓冲区,键盘缓冲区是9型硬中断和INT 16H软中断之间交换信息的缓冲区。,第九章掌握要点1。中断基本概念(中断、中断源、中断系统及其功能、中断指令、中断向量、中断向量表及其作用)2。PC系统中断分类(CPU中断、软件中断及响应过程、硬件中断(可屏蔽与非屏蔽中断的概念与区别,响应条件)3。系统响应可屏蔽中断的过程4。PC/AT系统的可屏蔽中断结构(几个重要的中断源、中断类型码和中断响应过程)5。中断程序的设计,