微机原理与接口技术第9章.ppt_第1页
微机原理与接口技术第9章.ppt_第2页
微机原理与接口技术第9章.ppt_第3页
微机原理与接口技术第9章.ppt_第4页
微机原理与接口技术第9章.ppt_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

第九章 中 断,.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 n n为中断类型码,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负责写入中断向量表。,用户程序开发的中断服务程序,由用户程序写入其 中断向量。,中断向量,问题:用户如何写入中断向量?,方法一、用户自己编写程序填写中断向量 CLI PUSH DS MOV AX, 0000H MOV DS, AX MOV BX, 4*n MOV AX, OFFSET SERVICE MOV BX, AX MOV AX, SEG SERVICE MOV BX+2, AX POP DS STI,中断向量,方法二、 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 1DH INT 1FH,INT 41H,INT 46H,必将引起系统瘫痪(参看中断向量 表的说明)。,系统中断的分类,2. DOS中断 DOS中断,又分为DOS专用中断,DOS保留中断,用户可调用的 DOS中断以及保留给用户开发的中断。,(1) DOS专用中断, 22H型中断 程序正常结束时,DOS将自动调用该中断返回 父进程。, 23H型中断 程序非正常结束时(如:用户按下Ctrl_C,或者 Ctrl_Break中途停止程序的运行),DOS调用该中断。, 24H型中断 程序运行发生严重错误时(例如:对软磁盘文件 进行操作的时候,驱动器小门没有关闭,或进行打印操作而打印 机没有连通),DOS自动调用此类中断,发出错误信息“Not ready Abort,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,0A1H AND AL,11111101B OUT 0A1H,AL ;开放用户中断 IN AL,21H AND AL,11111011B OUT 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型”设计的服务程序如下: PUSH AX MOV AL,20H OUT 0A0H,AL POP AX INT 0AH,用户定义的中断服务程序有两个设计方法:,定义用户中断服务程序为“71H型” 中断程序的准备工作:置换71H型中断向量,即把用户 中断的中断向量471H 471 H+3单元, 定义用户中断服务程序为“0AH型” 中断程序的准备工作:置换0AH型中断向量,即把 用户中断的中断向量40AH 40AH+3单元,3.实现用户中断必须对主、从8259应用编程,保证中断申请由8259中断控制器提向CPU,IN AL,0A1H AND AL,11111101B OUT 0A1H,AL ;开放用户中断 IN AL,21H AND AL,11111011B OUT 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,否则提前中断返回,.486 DATA SEGMENT USE16 COUNT1 DB 200 ;秒中断计数初值 COUNT2 DB 11 ;55ms中断计数初值 TIMETO DB 0 LCOUNT DB 10 MESG DB I AM A STUDENT!,0DH,0AH,$ DATA ENDS CODE SEGMENT USE16 OLD08 DD ? ;存放系统8型中断向量 ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX,程序清单:,MOV AX,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,-1 NEXT2: 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

温馨提示

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

评论

0/150

提交评论