第7章 中断系统 7.1 中断的基本概念 7.2 8086的中断系统 7.3 8259A可编程中断控制器 7.4 DOS和BIOS中断调用7.1 7.1 中断的基本概念中断的基本概念一、中断分类一、中断分类1. 中断中断——是一种使是一种使CPUCPU终止正在执行的程序而转去处理特殊事终止正在执行的程序而转去处理特殊事 件的操作件的操作中断可由外设外设或程序程序产生中断请求,使CPU暂停正在运行的程序,转去执行中断服务程序 中断服务完毕后,返回主程序的被中断处继续执行第第7 7章章 中断技术中断技术 2. 采用中断的优点采用中断的优点 (1)实现同步操作:外设与CPU同步工作 (2)实时处理第第7 7章章 中断技术中断技术 内中断:内中断:由CPU执行软中断指令 INT 而产生的中断外中断:外中断:外部中断源向CPU提出请求的中断(如INTR、NMI引 脚上出现的中断源)2. 中断源中断源——引起中断的事件引起中断的事件 (1)输入/输出设备:键盘、显示器、打印机 (2)数据通道:磁盘等 (3)电源故障 (4)实时控制中的各种参数 (5)中断指令INT 等u中断源产生中断的随机性,使中断服务程序的执行也具有随机中断源产生中断的随机性,使中断服务程序的执行也具有随机性,性,即何时执行中断服务程序不是在程序中安排好的。
即何时执行中断服务程序不是在程序中安排好的二、中断处理过程二、中断处理过程 一个完整的中断处理基本过程包括:1. 中断请求中断请求 硬件中断(INTR或NMI); 软中断:除数为0、溢出…2. 中断判优中断判优 ① 在多个中断源情况下,由设计者将它们事先排队(硬件),当同时到达时,CPU根据优先级处理当前优先级最高的中断源 ② 中断判优的另一作用是决定是否可能实现中断嵌套中断嵌套 第第7 7章章 中断技术中断技术 3. 中断响应中断响应 (1)IF=1且INTR有请求; (2)送出INTA,外设将中断类型码DB; (3)中断类型码×4,找出中断入口地址,转中断服务( 之前,使IF=0)4. 中断处理中断处理 (1)保护现场; (2)开中断(IF=1),以便响应高级中断; (3)执行中断服务程序; (4)关中断(IF=0),恢复现场5. 中断返回中断返回 IRET ① 恢复断点地址CS、IP,返回到主程序; ② 恢复FR内容,实际起了开中断的作用第第7 7章章 中断技术中断技术 7.2 80867.2 8086中断系统中断系统7.2.1 80X86/Pentium中断结构中断结构 Intel 80X86系列微机有一个灵活的中断系统, 可以处理256种中断源, 每个中断源都有对应的中断类型码(0~~255)供CPU识别。
硬件中断(外部中断) 非屏蔽中断非屏蔽中断 NMI 256种中断源 可屏蔽中断可屏蔽中断 INTR INT n 软件中断(内部中断) 除法出错除法出错 单步中断单步中断 INTO 溢处中断溢处中断第第7 7章章 中断技术中断技术 u中断源的优先级顺序为:中断源的优先级顺序为:被被0除中断除中断→软件中断软件中断INT n →INTO → NMI → INTR →单步中断。
单步中断第第7 7章章 中断技术中断技术 1. 非屏蔽中断非屏蔽中断 ◇◇ 由NMI引脚出现 上升沿 触发 ,高电平维持高电平维持2个个T ◇◇ 不受中断允许标志不受中断允许标志IF的限制的限制,中断类型号固定为中断类型号固定为2 ◇◇ CPU在执行完当前指令后立即响应中断请求而进入相应的处理 ◇◇ 在PC机中: MEM或I/O通道有奇偶校验错 或 8087/80287产生异常 都会产生NMI2. 可屏蔽中断可屏蔽中断 ◇◇由外部设备产生,从CPU的INTR端引入 高电平触发高电平触发 ◇◇ 可屏蔽中断受中断标志受中断标志IF的影响,的影响,在IF=1,,INTR=1的情况下, CPU可响应 ◇◇ CPU响应时送出两个INTA脉冲,外设则送出中断类型码CPU一、硬件中断一、硬件中断1. 除法出错中断除法出错中断——0型中断型中断 CPU执行除法指令DIV、IDIV时,若发现除数为0或商超过了存放它的Reg所能表示的范围,则产生0型中断。
其中断处理由操作系统安排由操作系统安排 2. 单步中断单步中断——1型中断型中断 当TF=1,则80X86处于单步工作方式 每执行一条指令产生一次中断,这为程序调试程序调试提供了手段注:注: ① 当执行一条指令使TF=1,则下条指令一结束立即产生1型中断 进入1型中断时,PSW入栈且TF=0,所以 单步中断服务过程中不会再引起单步中断单步中断服务过程中不会再引起单步中断 第第7 7章章 中断技术中断技术 二、软件中断(二、软件中断(又称为内部中断)内部中断) ——CPU根据某条指令或者对标志Reg中某个标志位的设置而产生,或由CPU本身启动(除法出错),与外部硬件无关特例:特例:INT 3——断点中断 ,为单字节指令单字节指令 在程序插入INT 3的地方引起一个中断,好象产生一个断点, 故又称断点中断 在断点处可显示Reg、mem单元内容,以便调试第第7 7章章 中断技术中断技术 3. 溢出中断溢出中断——4型中断型中断 若某个操作使OF=1,则CPU执行INTO指令后立即产生4型中断, 其为程序员提供了一种处理算术运算出现溢出的手段。
② 在X86系统中,没有设置TF或清除TF的专用指令, 可采取其它一些程序段将TF设置或清除如使TF置位: PUSHF POP AX OR AX,0100H PUSH AX POPF以上以上1 1,,2 2,,3 3中断中断类型码自动形成:类型码自动形成:0 0,,1 1,,4 44. 指令中断指令中断——INT n((n为中断类型码) INT n 为两字节指令两字节指令7.2.2 中断向量表中断向量表2. 中断向量表中断向量表 u 256个中断源对应256个中断服务程序,u 将所有这些子程序的入口地址(子程序的入口地址(中断向量中断向量)) 按序排放在一起,形成一个中断向量表 u 中断向量表位于CPU内存区的最低最低1K字节字节 (0段0单元开始)u 每个中断向量占4个字节: 4×256=1024(即00000H~003FFH)u 存放时:存放时:中断程序入口地址的偏移量(IP,16位)在前, 中断处程序入口地址的段地址(CS,16位)在后。
u 显然有:显然有:中断向量地址指针中断向量地址指针=4×中断类型码中断类型码u 例:例:N=8 中断向量地址=4×8=32,即0020H.第第7 7章章 中断技术中断技术 1. 中断类型码中断类型码 X86共有256个中断源,中断类型码:0~255第第7 7章章 中断技术中断技术 一般:一般:若类型码为N,则从 0000:4×N读一个字 IP,从 0000:4×N+2读一个字 CS使用时应选择系统不用而为用户保留的中断类型码7.2.3 中断响应过程中断响应过程一、一、内部中断响应过程内部中断响应过程 1. 当内部中断发生时,当内部中断发生时, 或由或由INT n指令获得中断类型码,指令获得中断类型码, 或是按预定方式得到中断类型码(专用中断:或是按预定方式得到中断类型码(专用中断:0、、1、、3、、4);); 2. 将类型码将类型码×4,作为中断向量表的指针;,作为中断向量表的指针; 3. FR((PSW))入栈保护入栈保护;; 4. 清除清除IF和和TF标志(标志(0→ IF、、0→ TF,,屏蔽新的屏蔽新的INTR中断和单中断和单步中断;步中断; 5. 把把断点断点处的处的IP和和CS值压入堆栈:值压入堆栈:先压入先压入CS值,再压入值,再压入IP值;值; 6. 取中断向量(中断服务程序的入口地址),分别送至取中断向量(中断服务程序的入口地址),分别送至CS和和IP。
按新的地址执行中断服务子程序按新的地址执行中断服务子程序第第7 7章章 中断技术中断技术 内部中断的特点:内部中断的特点:1.进入中断时,不需要执行中断响应周期去获得中断类型码2.除单步中断外,内部中断无法用软件禁止,不受IF的影响3.内部中断没有随机性,由指令在程序中的位置决定4.除单步中断外,内部中断优先级高于硬件中断第第7 7章章 中断技术中断技术 二、外部中断的响应过程二、外部中断的响应过程1. 非屏蔽中断非屏蔽中断NMI的响应的响应 中断类型码为2 当NMI发生时,CPU在执行完当前指令后,转去中断类型码为2的中断服务子程序 响应过程(除中断类型码中断类型码获得方式外)同INT n CPU提供,不是外设提供提供,不是外设提供第第7 7章章 中断技术中断技术 u 在INTR线上的请求信号(高电平)必须保持到当前指令当前指令的结束u当INTR线有效且IF=1,则CPU在当前指令执行完毕后,响应外 部中断请求,转入中断响应周期u 中断响应周期有2个,每个响应周期由4个T组成,中间以空闲状 态(3个)隔开。
u 在每个中断响应周期,CPU都往引脚INTA发一个负脉冲信号,u 请求中断的外设在收到第2个INTA时,将中断类型码→ DB (通常由8259传送)u 获得中断类型码后, 则转入中断处理过程 (同内部中断)u INTR共执行7个总线 周期2. 可屏蔽中断可屏蔽中断INTR的响应的响应第第7 7章章 中断技术中断技术 三、中断的优先级三、中断的优先级 优先级优先级 高高 除法出错 INT n 断点中断 溢出中断 NMI INTR 低低 单步中断IRET指令指令的操作的操作取指令取指令执行指令执行指令执行完毕执行完毕?内部中断内部中断?NMI?INTR?TF=1?IF=1?NYYYYYYYNNNNNNN类型号类型号=0~~255类型号类型号=2中断响应中断响应读取类型号读取类型号类型号类型号=1保护保护FLAGSTEMP←TFTF=IF=0CS、、IP入栈入栈计算向量表地址计算向量表地址低字低字→IP高字高字→CSNMI?转入中断服务程序转入中断服务程序TEMP=1?执行中断执行中断服务程序服务程序恢复恢复CS和和IP恢复恢复FLAGS返回被中断返回被中断的程序的程序图图7-6 中断响应和中断处理流程中断响应和中断处理流程第第7 7章章 中断技术中断技术 uPC机中断分配表机中断分配表第第7 7章章 中断技术中断技术 四、中断过程举例四、中断过程举例 设某输入设备数据准备就绪后向CPU申请可屏蔽中断,中断类型码为80H,中断响应后执行的服务子程序名为INTPROC。
程序开始,首先应对中断向量表进行安排,即先进行中断初先进行中断初始化始化程序如下: …CLIPUSHDSMOVAX,0000H;中断向量指针的段基址MOVDS,AXMOVBX,0200H;中断向量指针的偏移量MOVAX,OFFSET INTPROCMOV[BX],AX;偏移量 中断向量表MOVAX,SEG INTPROCMOV[BX+2],AX;段基址 中断向量表POPDSSTI…第第7 7章章 中断技术中断技术 …CLIPUSHDSMOVAX,0000H;中断向量指针的段基址MOVDS,AXMOVBX,0200H;中断向量指针的偏移量MOVAX,OFFSET INTPROCMOV[BX],AX;偏移量 中断向量表MOVAX,SEG INTPROCMOV[BX+2],AX;段基址 中断向量表POPDSSTI…MOVAX, 2000HADDAX,AXMOV[SI],AX… 开中断后,执行任何指令期间都有可能接收到中断申请 假设执行到程序中的ADD指令时收到中断申请,且IF=1,则CPU响应中断 响应过程如下图所示:第第7 7章章 中断技术中断技术 (1)INTR有效,外设申请中断 … MOV AX,2000H ADDAX,AX (2)当前指令结束后,CPU响应中断,执行中断 响应总线周期,获得中断类型码(80H)1234:5678MOV[SI],AX (3)当前FR内容压栈,IF=TF=0 (4)断点CS(1234H)、IP(5678H)压栈 (5)查中断向量表,中断向量送CS、IP (6)执行中断服务处理程序 INTPROCPROC…… MOV DX,,DPORT INAL,,DX……IRET INTPROCENDP (7)执行IRET指令,恢复断点,恢复FR IP=5678H,CS=1234H,回到断点执行 START::MOV AX,,DATAMOVDS,,AXCLI;;关中断,设置中断向量关中断,设置中断向量SUB AX,,AXMOVES,,AX;;中断向量表的段基址为中断向量表的段基址为0000HMOVDI,,4×60H;;在中断向量表中的偏移量在中断向量表中的偏移量MOVAX,,OFFSET INTSVCLDSTOSW;;写中断向量的偏移量写中断向量的偏移量MOVAX,,SEG INTSVSTOSW ;;写中断向量的段基址写中断向量的段基址STI∶ ∶ INT60H ;;软中断指令软中断指令 ∶ ∶MOVAH,,4CH;;返回返回DOSINT21H定义一个软中断,中断类型号为定义一个软中断,中断类型号为60H,,在中断服务程序中完成在中断服务程序中完成ASCII码码加偶校验位(第加偶校验位(第7位)的工作,位)的工作,ASCII码首地址为码首地址为ASCBUF,,字节数为字节数为COUNT,,加偶校验位后仍放回原处。
加偶校验位后仍放回原处第第7 7章章 中断技术中断技术 INTSV PROC ;;中断服务程序中断服务程序PUSHAX ;;保护现场保护现场PUSHBXPUSHCXMOVCX,,COUNTMOVBX,,OFFSETASCBUFL2:MOVAL,,[BX]ANDAL,,AL;;建立标志建立标志PFJPL1ORAL,,80HMOV[BX],,AL;;加入偶校验后写回加入偶校验后写回L1:INCBXLOOP L2POPCX;;恢复现场恢复现场POPBXPOPAXIRET利用利用DOS功能调用设置中断向量表功能调用设置中断向量表设置中断向量:设置中断向量: 把由AL指定中断类型码的中断向量DS:DX置在中断向量表中 预置 AH=25H, AL=中断类型码 DS:DX=中断向量 执行 INT 21H第第7 7章章 中断技术中断技术读取中断向量:读取中断向量: 把由AL指定中断类型码的中断向量从中断向量表中取到ES:BX中 预置 AH=35H, AL=中断类型码 执行 INT 21H 返回时送: ES:BX=中断向量中断向量第第7 7章章 中断技术中断技术;重新修改中断向量的内容;重新修改中断向量的内容CLI ;;关中断关中断, 设置中断向量新内容设置中断向量新内容PUSH DS MOV AX,,SEG INTPROCMOV DS,,AXMOV DX,,OFFSET INTPROCMOV AH,,25HMOV AL,,0BHINT 21HPOP DS例:例:例:例:;保存原中断向量的内容;保存原中断向量的内容;保存原中断向量的内容;保存原中断向量的内容 ∶ ∶ ∶ ∶ INTSEG DW ? INTSEG DW ? INTOFF DW ? INTOFF DW ? ∶∶∶∶ MOV AH,,35HMOV AL,,0BHINT 21HMOV INTSEG,,ES ;;保存原中断向量的段基址保存原中断向量的段基址MOV INTOFF,,BX ;;保存原中断向量的偏移量保存原中断向量的偏移量u利用利用DOS功能调用设置中断向量表功能调用设置中断向量表7.3 7.3 可编程中断控制器可编程中断控制器8259A8259A7.3.1 8259A7.3.1 8259A的内部结构与引脚的内部结构与引脚一、一、8259A8259A的功能的功能1. 单片8259可以管理8级硬件中断,用9片级联,组成主从方式, 可以管理64级中断。
2. 每一级中断都可以由软件屏蔽或允许3. 能判别芯片的IRi输入端是否收到一个有效的中断请求 若未被屏蔽,判其优先级对优先级高的中断源送INTRCPU 并提供相应的中断向量号CPU4. 几种工作方式可通过编程进行选择第第7 7章章 中断技术中断技术 8259是可编程中断控制器,集: 中断源优先级排队、辨认、提供中断类型码为一体,对其编程,可管理8级中断,级联时共可管理到最多64级中断第第7 7章章 中断技术中断技术 二、二、8259A的引脚的引脚CS:是片选信号,其为低电平时,可对是片选信号,其为低电平时,可对芯片读写芯片读写A0:与与CS及及WR或或RD配合去读写配合去读写8259的的内部寄存器,可直接接内部寄存器,可直接接CPU的某位地址的某位地址线INT::中断请求信号,接中断请求信号,接CPU的的INTRINTA::中断允许线,接中断允许线,接CPU的的INTA第第7 7章章 中断技术中断技术 双列直插式芯片,双列直插式芯片,28个引脚 键键 盘盘保保 留留串串 口口2 硬硬 盘盘软软 盘盘打印机打印机IOW18.2Hz方方 波波A0CS8259A总线总线A0数数 据据 线线 IORRDWR片片选选译译码码IR0IR1IR2IR3IR4IR5IR6IR7A5~A9D0~D7D0~D7VccSP/ENCA0CA1CA2GND+ 5V20~3FH用于多片用于多片8259A级连情况级连情况INTAINT INTA INTR串串 口口1 1. 中断请求寄存器中断请求寄存器(IRR ,,8位锁存器))用来锁存外设送来的IR7~IR0中断请求信号第第7 7章章 中断技术中断技术 三、三、8259A的内部结构(的内部结构(P170))2. 中断屏蔽寄存器中断屏蔽寄存器((IMR ,,8位Reg )) 用来设置中断请求用来设置中断请求屏蔽信号。
屏蔽信号 IMR第i位置1,则与它对应的IRi中断申请被屏蔽3. 中断服务寄存器(中断服务寄存器(ISR,, 8位Reg ))存放当前正在服务的中断级存放当前正在服务的中断级u 由优先权判别电路根据IRR中各请求位优先级别和IMR中屏蔽标志, 将允许中断的最高优先权请求位,选通到ISR中u 在处理某级中断的整个过程中,ISR中与它对应的位始终保持1,只有 服务完,在返回之前,才由中断结束命令由中断结束命令EOI将其清将其清0u 不进行中断服务的ISR各位恒等于04. 优先权分析器优先权分析器 用来识别和管理各中断请求信号的优先级别5. 控制逻辑控制逻辑 控制逻辑电路中,有一组初始化命令字Reg : ICW1~ICW4 一组操作命令字Reg: OCW1~OCW3 系统刚开始时,初始化命令字送8259A,以后过程中将保持不变, 操作命令则用来在过程中控制中断操作。
控制逻辑按编程设定方式管理控制逻辑按编程设定方式管理8259A的全部工作的全部工作第第7 7章章 中断技术中断技术 6. 数据总线缓冲器数据总线缓冲器 ——三态缓冲器8259A与CPU的数据总线接口7. 读读/写控制逻辑写控制逻辑 ——完成来自CPU的读写命令,及与片选信号与片选信号CS与与A0((0或或1)决定访问)决定访问片内某个片内某个Reg 通过OUT指令指令WR有效,把命令字写入ICW和OCW. 通过IN指令指令RD有效,将IRR、ISR或IMR内容通过数据总线读入CPU第第7 7章章 中断技术中断技术 8. 级联缓冲器级联缓冲器/比较器比较器(用于多片用于多片8259之间的连接之间的连接) 主—从结构中,作为主设的8259A,CAS2~CAS0是输出线,作为从设的8259A,CAS2~CAS0是输入线,两者互连 SP/EN——从片编程从片编程/缓冲器允许缓冲器允许信号线,是个双功能引脚 ①缓冲器方式缓冲器方式,输出信号,控制缓冲器传送方向 ②非缓冲器方式非缓冲器方式,它是输入信号,用于规定8259A是主(SP=1)还是从(SP=0)。
在只有一片8259A的系统中,SP/EN接高电平第第7 7章章 中断技术中断技术 2. 当外设发出中断请求后,其对外部中断请求的处理过程如下:当外设发出中断请求后,其对外部中断请求的处理过程如下: ①① 若有若有IRi=1,则,则IRR中相应位中相应位置置1 ②② 若对应若对应IMR中的相应位为中的相应位为0,则,则8259A向向CPUINTR ③③ 若若IF=1,则,则CPU在执行完当前指令后,发在执行完当前指令后,发INTA8259A ④④ ISR中对应当前最高优先权的位为中对应当前最高优先权的位为1,且,且IRR中相应位中相应位清清0 ⑤⑤ CPU发第二个发第二个INTA8259A,,8259ADB上送上送8位的向量号位的向量号N ((即即中断类型号,中断类型号,初始化初始化8259A时已设定好时已设定好) CPU做:做:N×4 从中断向量表中取出中断服务程序的入口地址从中断向量表中取出中断服务程序的入口地址。
⑥⑥ 若若8259A为为AEOI((自动结束中断),自动结束中断), 则在第二个则在第二个INTA尾,尾,ISR中相应的位中相应的位复位复位 否则否则,至中断服务程序结束至中断服务程序结束,发出发出EOI命令使命令使ISR中相应位复位中相应位复位7.3.2 8259A7.3.2 8259A的工作过程的工作过程1. 上电后,由上电后,由CPU执行一段程序对执行一段程序对8259初始化(初始化(通过输入初始化通过输入初始化命令字实现命令字实现)完成初始化后,)完成初始化后,8259A处于处于 就绪状态就绪状态 CPU 进入响应中断的过程,进入响应中断的过程,继而执行中断子程序继而执行中断子程序第第7 7章章 中断技术中断技术 ①① 取中断类型号取中断类型号N②② 当前当前PSW的内容入栈的内容入栈③③ 清清IF、、TF标志为标志为0④④当前当前CS的内容入栈的内容入栈⑤⑤ 当前当前IP的内容入栈的内容入栈⑥⑥ 取内存单元取内存单元( 0 : N ×4 )字内容送字内容送IP 取中断子程取中断子程⑦⑦ 取内存单元取内存单元( 0 : N ×4 + 2 )字内容送字内容送CS 入口地址入口地址 此时此时CS:IP指向中断程序的入口,开始执行中断程序。
指向中断程序的入口,开始执行中断程序保存现场与断点保存现场与断点CPU响应中断过程:响应中断过程:执行完中断子程中最后一条指令执行完中断子程中最后一条指令IRET后,后,返回被中断处,继续执行被中断的程序返回被中断处,继续执行被中断的程序特征特征: ①①中断优先级固定中断优先级固定 IR0 IR1 IR2 IR 3 IR4 IR5 IR6 IR7 高高 低低 ②②响应某中断请求,并服务于该中断源时,与它同级或低级的中响应某中断请求,并服务于该中断源时,与它同级或低级的中 断源的申请被屏蔽,而优先级比它高的中断源的申请可以响应断源的申请被屏蔽,而优先级比它高的中断源的申请可以响应 ③③用用ISR中相应位表示该中断源正在被服务中相应位表示该中断源正在被服务第第7 7章章 中断技术中断技术 ⑵⑵ 特殊全嵌套方式特殊全嵌套方式(适用于8259级联级联的情况的情况) 级联时,级联时,必须采用特殊的全嵌套方式。
必须采用特殊的全嵌套方式CPUCPU主主主主8259A8259AINTINT从从从从8259A8259AIRIR0 0IRIR1 1IRIR7 7IRIR0 0IRIR1 1IRIR7 7…………特殊全嵌套特殊全嵌套特殊全嵌套特殊全嵌套普通全嵌套普通全嵌套普通全嵌套普通全嵌套7.3.3 7.3.3 工作方式(工作方式(可以通过编程来实现)可以通过编程来实现)1. 中断嵌套方式中断嵌套方式⑴⑴ 普通全嵌套方式普通全嵌套方式——常用方式,又称全嵌套方式,适用于单片单片 8259的情况第第7 7章章 中断技术中断技术 ①① 主片编程为特殊全嵌套方式: 当处理一级中断时,如果有同级的中断请求,也会给予响应当处理一级中断时,如果有同级的中断请求,也会给予响应 否则:当从片8259IR2有中断请求,若主片是普通全嵌套方式,则会屏蔽从片上的IR0、IR1(比IR2优先级高)中断请求 因为从片上的因为从片上的8个个IRi变成了主片的同一级。
变成了主片的同一级 而特殊全嵌套方式,对来自同一从片的较高优先级请求不会屏蔽 EOI从从从从ISR是是否全为否全为0 EOI主主NYIRET②② 在从片的中断处理程序快结束时,应给 8259A发EOI(中断结束)命令,方法是: (a) 向从片发EOI; (b) 读从片的ISR内容: 若为若为0,表示从片只有一个中断源申请中断,再向主片发一个EOI命令 若不为若不为0,表示从片存在两个以上的中断源在申请中断,则不应发EOI给主片2. 优先权循环方式优先权循环方式 一个系统的优先权比较复杂,所以一个系统的优先权比较复杂,所以不能总规定不能总规定IR0高高 … IR7低低 8259A设计了两种改变优先权的方法设计了两种改变优先权的方法第第7 7章章 中断技术中断技术 ⑵ ⑵ 特殊循环方式特殊循环方式————适用于中断源的优先级需要任意改变的情况适用于中断源的优先级需要任意改变的情况 通过OCW2命令字设置当前的最低优先级最低优先级IR5,使得有: IR6 IR7 IR0 … IR5。
⑴⑴ 自动循环方式自动循环方式 ——适用于设备的优先权相等情况适用于设备的优先权相等情况 当一个设备受到中断服务后,它的优先级自动降到最低,其相邻的中断请求变成最高的 例如例如: IR0 IR1 IR2 IR 3 IR4 IR5 IR6 IR7 初始 高高 低低 若IR4有中断请求,处理IR4后,IR5成为最高优先级, 优先级次序为:IR5 IR6 IR7 IR0 IR1 IR2 IR3 IR4 IR4左循环至最低优先级左循环至最低优先级 第第7 7章章 中断技术中断技术 3. 3. 结束中断处理方式结束中断处理方式 在中断请求得到响应时,ISR中相应位置1, 中断服务结束时,必须使这个位复位为0以标识中断处理结束 这个中断结束是指8259结束中断,而不是CPU结束执行中断服务程序。
⑵⑵ 非自动中断结束方式非自动中断结束方式 ① 普通中断结束方式(普通中断结束方式(EOIEOI)) ————适用于全嵌套方式适用于全嵌套方式 当8259A工作在全嵌套方式时,则当前服务过的中断源就是中断优先权最高的源,可以用非特殊(普通)的EOI使它在ISR中的相应位清0 这个命令加在中断服务程序的末尾处这个命令加在中断服务程序的末尾处⑴⑴ 自动中断结束方式自动中断结束方式(AEOI)——只能用于不要求中断嵌套的情况只能用于不要求中断嵌套的情况 在第二个INTA的后沿,8259A自动把ISR的对应位清0② 特殊结束中断方式特殊结束中断方式——非全嵌套方式下非全嵌套方式下 当8259A工作在非全嵌套模式时,8259A可能不能确定刚服务的源的等级,需要用特殊的EOI命令,指出要清除哪个ISR位第第7 7章章 中断技术中断技术 不管是普通、还是特殊的中断结束方式,级联系统中的中断结不管是普通、还是特殊的中断结束方式,级联系统中的中断结束必须发送两次束必须发送两次EOI:: 一次给从片,一次给主片。
一次给从片,一次给主片 (向从片发(向从片发EOI后,须检查从片中的所有申请中断的源是否全服务过后,须检查从片中的所有申请中断的源是否全服务过只有都服务过了,才能向主只有都服务过了,才能向主8259送另一个送另一个EOI命令)4. 4. 屏蔽中断源方式屏蔽中断源方式 ———— 通过通过IMRIMR编程可允许或禁止中断编程可允许或禁止中断⑴ ⑴ 普通屏蔽方式普通屏蔽方式 通过命令字OCW1设置IMR某位或某几位为1,则屏蔽其中断请求置0则允许该级中断⑵ ⑵ 特殊屏蔽方式特殊屏蔽方式——用于开放较低级中断请求用于开放较低级中断请求 在8259中,当一个中断请求被响应时,ISR对应位置1在该位未复位时,8259A会禁止所有优先级比它低的中断 用特殊屏蔽方式可以做到: ①① 屏蔽当前中断级(IMR对应位为1); ②② ISR中相应位复位,则较本级低的中断源申请可以得到响应第第7 7章章 中断技术中断技术 5. 中断触发方式中断触发方式 ⑴ ⑴ 边沿触发方式边沿触发方式 引脚IRi上出现上升沿上升沿表示有中断请求。
⑵ ⑵ 电平触发方式电平触发方式 引脚IRi上出现高电平高电平表示有中断请求第第7 7章章 中断技术中断技术 7.3.4 8259A7.3.4 8259A命令字命令字 8259A是可编程中断控制器,对其编程可以分为两部分: ①① 初始化编程:初始化编程:由CPU向8259A送2~4个字节的初始化命令字 ICW(Initialization Command Word)②② 工作方式编程:工作方式编程:由CPU向8259A送三个字节的操作命令字 OCW( Operation Command Word) 8259A必须必须通过ICW初始化,则处于全嵌套工作方式,在8259A工作期间,OCW规定或设置其工作方式,动态地控制动态地控制CPU处理中断的过程处理中断的过程第第7 7章章 中断技术中断技术 7.3.4 8259A7.3.4 8259A命令字命令字 8259A是可编程中断控制器,对其编程可以分为两部分: ①① 初始化编程:初始化编程:由CPU向8259A送2~4个字节的初始化命令字 ICW(Initialization Command Word)。
②② 工作方式编程:工作方式编程:由CPU向8259A送三个字节的操作命令字 OCW( Operation Command Word) 8259A必须必须通过ICW初始化,则处于全嵌套工作方式,在8259A工作期间,OCW规定或设置其工作方式,动态地控制动态地控制CPU处理中断的过程处理中断的过程 8259A内部有内部有9个个 可读写的寄存器可读写的寄存器 1 ×× I3 I4ICW1 芯片控制芯片控制 ICW2 中断类型号中断类型号 ICW3 主从片关系主从片关系 ICW4 方式控制方式控制处理部分处理部分控制部分控制部分000 0 0 0 0 0 ISR在服务在服务寄存器寄存器PR优先权优先权分析器分析器IRR中断请求中断请求寄存器寄存器000 0 0 0 0 0 中断屏蔽寄存器中断屏蔽寄存器 IMROCW2优先级发优先级发EOI 1 0 0 1 0 1 0 0 0 0 0 1 OCW3特殊屏蔽设置特殊屏蔽设置OCW18259A中断控制器中断控制器第第7 7章章 中断技术中断技术 • 4个初始化命令寄存器个初始化命令寄存器 ICW1、ICW2 ICW3、ICW4 • 3个操作命令寄存器个操作命令寄存器 OCW1(IMR) OCW2、OCW3• 在服务寄存器在服务寄存器 ISR• 中断请求寄存器中断请求寄存器 IRR第第7 7章章 中断技术中断技术 8259A有两个有两个I/O端口地址端口地址 A0=0A0=0 偶地址端口偶地址端口 A0=1A0=1 奇地址端口奇地址端口对对 9 9个寄存器的读写个寄存器的读写 均通过这两个端口实现均通过这两个端口实现 写入数据的特征位写入数据的特征位 写入的先后顺序写入的先后顺序 区分是对哪个寄存器区分是对哪个寄存器 进行操作进行操作根据根据 1 ×× I3 I4ICW1 芯片控制芯片控制 ICW2 中断类型号中断类型号 ICW3 主从片关系主从片关系 ICW4 方式控制方式控制处理部分处理部分控制部分控制部分000 0 0 0 0 0 ISR在服务在服务寄存器寄存器PR优先权优先权分析器分析器IRR中断请求中断请求寄存器寄存器000 0 0 0 0 0 中断屏蔽寄存器中断屏蔽寄存器OCW2优先级发优先级发EOI 1 0 0 1 0 1 0 0 0 0 0 1 OCW3特殊屏蔽设置特殊屏蔽设置OCW18259A中断控制器中断控制器D0~D7A0CSRDWR80111A0100A0一、一、8259的初始化命令字的初始化命令字ICW1~ICW4用于接受CPU对8259的初始化命令。
写入次序见流程图ICW1和和ICW2是必须送的,是必须送的,ICW3和和ICW4由工作方式决定由工作方式决定第第7 7章章 中断技术中断技术 1. ICW1((初始化字)初始化字) 特征:特征:A0=0,,ICW1中中D4=1 ICW1ICW1启动了启动了8259A8259A中的初始化顺序,中的初始化顺序,自动发生以下事件:自动发生以下事件: ① 对中断请求信号边沿检测电路复位; ② 清IMR、ISR; ③ 指定IR0优先级最高; ④ 设定为普通屏蔽方式; ⑤ 设定为非自动结束中断方式第第7 7章章 中断技术中断技术 IC4SNGL ADILTIM 1 A5 A6 A7 0A0D7 D6 D5 D4 D3 D2 D1 D0偶偶地地址址 1=需要需要ICW4 0=不需要不需要ICW4 1=单片单片 0=级联级联 调用地址间隔:调用地址间隔: 1=间隔为间隔为4,,80X86中不用中不用 0=间隔为间隔为8 1=电平触发电平触发 0=边沿触发边沿触发 中断向量地址的中断向量地址的A7~~A5 ((只用于只用于8080/8085))取取0识识别别码码ICW1 0 0 00例:例:设8259A端口地址20H、21H MOV AL,13H OUT 20H,AL中断为边沿触发,系统中一片8259A,要设ICW4.ICW1uICW1例:例:设8259A端口地址20H、21H MOV AL,13H OUT 20H,AL中断为边沿触发,系统中一片8259A,要设ICW4.ICW1第第7 7章章 中断技术中断技术 IORIOW总线总线数数 据据 线线D0~D7INTAA0片片选选译译码码A5~A9CSA0RD INTAWRINTD0~D7 ICW1 芯片控制芯片控制 ICW2 中断类型号中断类型号 ICW3 主从片关系主从片关系 ICW4 方式控制方式控制000 0 0 0 0 0 ISR在服务在服务寄存器寄存器IR0IR1IR2IR3IR4IR5IR6IR7OCW1 中断屏蔽寄存器中断屏蔽寄存器 IMR 0 0 OCW2 优先级、发优先级、发EOI OCW3 特殊屏蔽设置特殊屏蔽设置PR优先级优先级裁决器裁决器IRR中断中断请求请求寄存器寄存器100 0 0 0 0 1 1 0 0 1 0 1 0 0INTR2. ICW2((中断类型码字)中断类型码字) 写入时写入时A0=1。
当已知某中断源的中断类型码时,应填入ICW2, 其中高其中高5 5位有效,低位有效,低3 3位系统自动填入位系统自动填入 1 T3 T4 T5 T6 T7A0奇奇地地址址中断类型中断类型自动填入自动填入IR0 000IR1 001…IR7 1113. ICW3((级联控制字)级联控制字) 系统中只有一片8259A,则不用ICW3; 有多片多片8259A级连级连,主8259A和每一片从8259A都必须使用ICW3. 最多允许有一片主8259A和8片从8259A级连,使中断源扩展至64个,这时主片与从片8259A的ICW3是不同的不同的 仅当仅当ICW1ICW1中中D D1 1为为0 0才需写才需写ICWICW3 3 . .第第7 7章章 中断技术中断技术 S0 S1 S2 S3 S4 S5 S6 S7 1主片主片A0D7 D6 D5 D4 D3 D2 D1 D0奇奇地地址址对应每位对应每位Di表示表示IRi中断请求线上有无从片中断请求线上有无从片 1:有:有 0:无:无从片从片ID0ID1ID2 0 0 0 0 0 1A0D7 D6 D5 D4 D3 D2 D1 D0奇奇地地址址无无作用,常取作用,常取00 0 00 0 1…1 1 01 1 1相应于主片相应于主片IRi((i=0~~7))级联级联的从片编码的从片编码第第7 7章章 中断技术中断技术 例:例:ICW3==F0H,,表示表示IR7~~IR4上有从片上有从片, IR3~~IR0上无从片。
上无从片4. ICW4((方式控制字)方式控制字) 定义8259是工作于8080/8085模式,还是80X86模式,及中断服务程序是否需要EOI命令命令(用以清除用以清除ISR,,允许其他中断允许其他中断)等第第7 7章章 中断技术中断技术 μPMAEOI M/SBUFSFNM 0 0 0 1A0D7 D6 D5 D4 D3 D2 D1 D0奇奇地地址址 1=80X86模式模式 0=8080/8085模式模式 1=自动自动EOI 0=普通普通EOI 0 X::非缓冲方式非缓冲方式 1 0:缓冲方式:缓冲方式/从从 1 1:缓冲方式:缓冲方式/主主 1=特殊的全嵌套方式特殊的全嵌套方式 0=普通的全嵌套方式普通的全嵌套方式由由 ICW1决定是否要决定是否要ICW4例:MOV AL,0DH OUT 21H,AL普通全嵌套,普通EOI,缓冲器方式。
工作命令字工作命令字OCW1~OCW3,,写入顺序上无特别要求写入顺序上无特别要求 端口地址有严格规定:端口地址有严格规定:OCW1写入奇地址端口写入奇地址端口(A0=1),, OCW2和和OCW3写入偶地址端口写入偶地址端口((A0=0))1. OCW1((屏蔽控制字)屏蔽控制字) IMRIMR相应位置相应位置1 1,屏蔽;,屏蔽;IMRIMR相应位置相应位置0,0,开放 OCW1可可放置于程序的任何地方,实现对某些中断的屏蔽或开放,也就实现了对优先权的改变 M0 M1 M2 M3 M4 M5 M6 M7 1A0D7 D6 D5 D4 D3 D2 D1 D0奇奇地地址址中断屏蔽中断屏蔽1=置屏蔽置屏蔽0=中断开发中断开发第第7 7章章 中断技术中断技术 二、二、8259的工作命令字的工作命令字OCW在写入在写入ICW1~~ICW4后,后,8259A就绪,可接收中断请求信号,就绪,可接收中断请求信号,若不再写入若不再写入OCW,,则处于则处于全嵌套中断工作方式全嵌套中断工作方式。
2. OCW2((中断结束和优先权循环控制字)中断结束和优先权循环控制字) 设置优先级是否循环,循环的方式,中断结束的方式 L0 L1 L2 0 0EOI SL R 0A0D7 D6 D5 D4 D3 D2 D1 D0偶偶地地址址8259A的几种的几种不同工作方式不同工作方式OCW2标志位标志位0 0 00 0 1…1 1 01 1 1 ①①系统中最系统中最低优先级的低优先级的编码编码②②SL==1时,时,要清除要清除ISR中中的哪一位的哪一位中断优先方式:中断优先方式:1 按左循环方式按左循环方式0 非循环方式非循环方式 IR0(高高)… IR7(低低)决定决定L2L1L0是否有效:是否有效:1 有效,指出最低优先级有效,指出最低优先级0 无效,当前被服务的中无效,当前被服务的中 断源左循环到最低优先断源左循环到最低优先 级级 中断结束命令位:中断结束命令位:1 ISR中相应位复位中相应位复位0 在在ICW4中给出中给出 AEOI第第7 7章章 中断技术中断技术 第第7 7章章 中断技术中断技术 R::中断优先权是否循环中断优先权是否循环 0:优先级固定,IR0最高,IR7最低。
1:优先级左循环,当前刚被服务的中断源 轮为最低优先级SL::特殊循环特殊循环 0:当前被服务的中断源循环到最低优先级,D2~D0无 意义 1:D2~D0有效,指出最低优先级的中断源EOI::中断结束命令中断结束命令 1:使ISR中的相应位复位当ICW4中的AEOI=0 时,必须给出一个EOI 0:在ICW4已给出AEOI.D2~D0:: ① 给定该系统中最低优先级的编码。
② 在OCW2给出特殊的中断结束命令时,指明具体要清除当前 ISR中的哪一位R R,,SLSL,,EOIEOI三位组合可形成三位组合可形成82598259的几种不同的工作方式,见的几种不同的工作方式,见P258.P258. L0 L1 L2 0 0EOI SL R 0A0D7 D6 D5 D4 D3 D2 D1 D0第第7 7章章 中断技术中断技术 第第7 7章章 中断技术中断技术 RIS RR P 1 0SMMESMM 0 0A0D7 D6 D5 D4 D3 D2 D1 D0偶偶地地址址未定义,未定义,常取常取0OCW3标志标志是否工作是否工作于特殊屏蔽于特殊屏蔽模式模式1 中断查询命令中断查询命令0 非查询命令非查询命令 在下一个在下一个RD脉冲脉冲1 0 读读IRR(从(从A0==01 1 读读ISR 端口)端口)决定下一个决定下一个操作是否是操作是否是读操作读操作1 0 复位复位1 1 置置 特殊屏蔽特殊屏蔽3. OCW3((屏蔽和读状态控制字)屏蔽和读状态控制字)⑴⑴ 设置和撤消特殊屏蔽方式设置和撤消特殊屏蔽方式 D6 D5 1 0 复位为普通屏蔽方式复位为普通屏蔽方式 1 1 置为特殊屏蔽方式置为特殊屏蔽方式⑵⑵ 设置中断查询方式设置中断查询方式 查询外部事件是否有中断请求查询外部事件是否有中断请求. i)写)写OCW38259A,,其中其中D2=1 ii)) 读查询字(对同一地址)读查询字(对同一地址)第第7 7章章 中断技术中断技术 D0D1D2 I1:有中断请求:有中断请求0:无中断请求:无中断请求当前请求中断的最高优先级当前请求中断的最高优先级的中断源的编码。
的中断源的编码⑵⑵ 设置中断查询方式设置中断查询方式 查询外部事件是否有中断请求查询外部事件是否有中断请求 i)写)写OCW38259A,,其中其中D2=1 ii)) 读查询字(对同一地址)读查询字(对同一地址)⑶⑶ 设置对设置对8259A内部内部Reg的读出命令(若的读出命令(若D1D0以下组合,则在下一个读以下组合,则在下一个读 命令中,读入命令中,读入内部内部Reg::IRR,,ISR的值)的值) D1 D0= 1 0 读读IRR(从(从A0=0读读,了解未被响应的中断源的情况)了解未被响应的中断源的情况) 1 1 读读ISR(从(从A0=0读读,了解正在服务的中断源的情况)了解正在服务的中断源的情况) 对任何奇地址(对任何奇地址(A0=1))的读出都是的读出都是IMR(无需设置无需设置OCW3,,随时可读随时可读)第第7 7章章 中断技术中断技术 与系统的连线与系统的连线+5V CLKRESETREADYMN/MXVCCRDQS0QS1LOCKTESTHIGHNMIGNDGND地址锁存器地址锁存器8282(两片两片)STB 数据收发器数据收发器OE 8286T T MRDC 8288 MWTC 总线总线 IORC控制器控制器 IOWC INTA8259A及有关电路及有关电路DT/RDENALE地址总线地址总线数据总线数据总线控制总线控制总线PC总总线线A15~A8S6~S3/A19~A16AD7~AD08088CPUS0S1S2INTRRQ/GT0RQ/GT1内内存存I/O接口接口注意:注意:8259A在连线中的位置在连线中的位置第第7 7章章 中断技术中断技术 ①① 8259A的片选地址范围为的片选地址范围为 20 ~ 3F H 偶、奇端口地址通常取用偶、奇端口地址通常取用20H、、21H方方 波波键键 盘盘保保 留留串串 口口2 硬硬 盘盘软软 盘盘打印机打印机IOW18.2HzA0CS8259A总线总线A0数数 据据 线线 IORRDWR片片选选译译码码IR0IR1IR2IR3IR4IR5IR6IR7A5~A9D0~D7D0~D7VccSP/ENCA0CA1CA2GND+ 5V20~3FH用于多片用于多片8259A级连情况级连情况INTAINT INTA INTR串串 口口1 第第7 7章章 中断技术中断技术 18.2Hz时钟信号时钟信号 ② ② 8259A的的8个中断申请与外设的连接个中断申请与外设的连接IR0 接一个频率为接一个频率为18.2Hz的方波;的方波; 若若CPU对该申请给予响应对该申请给予响应, 则每秒执行则每秒执行18.2次该申请对应的中断子程序。
次该申请对应的中断子程序 IR1接键盘接口发出的中断申请;接键盘接口发出的中断申请; 每按下一键,若每按下一键,若CPU对该申请给予响应对该申请给予响应, 则执行一次该申请对应的中断子程则执行一次该申请对应的中断子程 IR2~IR7通过系统总线引出,通过系统总线引出, 对应引脚信号为对应引脚信号为IRQ2~IRQ7第第7 7章章 中断技术中断技术 8088INTR主主 板板IF键键 盘盘18.2Hz 方波方波8259AINT中断屏蔽寄存器中断屏蔽寄存器键盘键盘中断申请中断申请IR1IR2~IR7IR0当前当前中断中断服务服务寄存器寄存器键盘键盘接口接口IRQ2~IRQ7PC总总线线外外设设接接口口外外设设08h09h0Ah~0FhIBM PC/XT微机可屏蔽中断响应过程示意图微机可屏蔽中断响应过程示意图第第7 7章章 中断技术中断技术 IBM PC/XT总线插槽引脚信号总线插槽引脚信号GNDRESET +5VIRQ2-5VDRQ2-12V+12VGNDMEMWMEMRIOWIORDACK3DRQ3DACK1DRQ1DACK0CLOCKIRQ7IRQ6IRQ5IRQ4IRQ3DACK2T/CALE+5VOSCGNDI/O CH CKD7D6D5D4D3D2D1D0I/O CH RDYAENA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0 2..BIOS初始化程序对初始化程序对8259A的设置的设置①① IR0~IR7 中断申请信号为中断申请信号为上升沿触发方式上升沿触发方式;;②② IR0~IR7 对应的中断类型对应的中断类型号分别为号分别为08H~0FH;;③③ 优先级优先级IR0最高最高, IR7最低;最低;④④ 采用采用非自动结束方式非自动结束方式,, 需向需向OCW2发发EOI中断结中断结束命令束命令, 清除清除ISR中的记录。
中的记录第第7 7章章 中断技术中断技术 ((1))8259A初始化编程初始化编程 MOV AL,,00010011B OUT 20H,,AL((ICW1) MOV AL,,00001000B OUT 21H,,AL ((ICW2) MOV AL,,00001101B OUT 21H,,AL((ICW4)((2))8259A操作方式编程操作方式编程 IN AL,,21h ((读出读出IMR)) AND AL,,0FCH(只允许(只允许IR0、、IR1中断,其余不变)中断,其余不变) OUT 21H,,AL ((写入写入OCW1)) ((3)给)给8259发发EOI命令命令 MOV AL,,20H OUT 20H,,AL((写入写入OCW2)) …. ((恢复现场)恢复现场) IRET((4))设置设置OCW3,,读出读出IRR、、ISR MOV AL,,0AH ;写入;写入OCW3,读,读IRR命令命令 OUT 20H,,AL NOP IN AL,,20H;读出;读出IRR从从8259AIRQ8IRQ9IRQ10IRQ11IRQ12IRQ13 IRQ14IRQ15主主8259AIRQ0IRQ1IRQ3IRQ4IRQ5 IRQ6IRQ7INT至至CPUINT中中断断路路由由器器IRQ7IRQ6IRQ5IRQ4 IRQ3IRQ2ISA总线总线PCI总总线线PCI总总线线系统时钟系统时钟键盘键盘芯片组芯片组Pentium机中机中8259A的连线的连线第第7 7章章 中断技术中断技术 ((1))8259A初始化编程初始化编程对主片对主片8259A的初始化:的初始化: MOV AL,,11H ;ICW1 OUT 20H,,AL JMP INTR1 INTR1: MOV AL,,08H ;ICW2 OUT 21H,,AL JMP INTR2INTR2: MOV AL,,04H ;ICW3 OUT 21H,,AL JMP INTR3JNTR3: MOV AL,,11H ;ICW4 主片特殊全嵌套主片特殊全嵌套 OUT 21H,,AL 对从片对从片8259A的初始化:的初始化: MOV AL,,11H OUT 0A0H,,AL JMP INTR5 INTR5: MOV AL,,70H OUT 0A1H,,AL JMP INTR6 INTR6: MOV AL,,02H OUT 0A1H,,AL JMP INTR7 INTR7: MOV AL,,01H OUT 0A1H,,AL ;;从片普通全嵌套从片普通全嵌套((2)级联工作编程)级联工作编程读读ISR的内容:的内容: MOV AL,,0BH OUT 0A0H,,AL NOP IN AL,,0A0H 从片发从片发EOI命令:命令: MOV AL,,20H OUT 0A0H,,AL ;端口端口A0H主片发主片发EOI命令:命令: MOV AL,,20H OUT 20H,,AL ;端口端口20H第第7 7章章 中断技术中断技术 硬中断程序设计举例硬中断程序设计举例 START: MOV AX,,DATA MOV DS,,AX MOV AX,,3508H;;保存原中断向量内容保存原中断向量内容 INT 21H MOVINTSEG,,ES MOVINTOFF,,BX CLI ;;关中断关中断 PUSH DS ;;设置中断向量表新内容设置中断向量表新内容 MOV AX,,SEG INTPROC MOV DS,,AX MOV DX,,OFFSET INTPROC MOV AX,,2508H INT 21H POP DS 8259A的的IRQ0中断请求来自定时器中断请求来自定时器,,它每隔它每隔55ms产生一次中断,并产生一次中断,并提供了完成日时钟计时功能的中断服务程序。
提供了完成日时钟计时功能的中断服务程序 本程序将替换系统计时程序,使得每次中断显示一串信息即每隔本程序将替换系统计时程序,使得每次中断显示一串信息即每隔55ms显示一串信息,显示显示一串信息,显示10次后中止,程序返回次后中止,程序返回DOS 第第7 7章章 中断技术中断技术 IN AL,,21H ;;读出读出IMR MOV INTIMR,,AL ;;保存原保存原IMR内容内容 AND AL,,0FEH ;;允许允许IRQ0,,其它不变其它不变 OUT 21H,,AL ;;设置新设置新IMR内容内容 MOV COUNTER,,0 ;;设置中断次数初值设置中断次数初值 STI ;;开中断开中断L1: CMP COUNTER,,10 ;;循环等待中断循环等待中断 JB L1 ;;中断中断10次退出次退出 CLI ;;关中断关中断 MOV AL,,INTIMR ;;恢复恢复IMR OUT 21H,,AL MOV DX,,INTOFF ;;恢复中断向量内容恢复中断向量内容 MOV AX,,INTSEG MOV DS,,AX MOV AX,,2508H INT 21H STI ;;开中断开中断 MOV AX,,4C00H ;;返回返回DOS INT 21H ;;主程序结束主程序结束第第7 7章章 中断技术中断技术 框图:框图:框图:框图: 暂停暂停Y Y 初始化初始化 返回返回DOSDOS 开中断开中断恢复原中断向量恢复原中断向量 关中断关中断保存原中断向量保存原中断向量设置新中断向量设置新中断向量 开放开放IMRIMR中断次数到中断次数到N N中断服务用户程序用户程序磁盘管理模块磁盘管理模块(DOS(DOS内核内核) )MSDOS.SYS MSDOS.SYS 系统功能系统功能基本输入基本输入/输出输出 BIOS 模模 块块IO.SYS 设备驱动设备驱动ROM BIOS ROM BIOS 基本基本I/OI/O系系 统统 硬硬 件件装入装入命令处理模块命令处理模块COMMAN D.COM用户命令用户命令DOS系统层次结构系统层次结构第第4 4章章 汇编语言程序设计汇编语言程序设计7.4 DOS7.4 DOS和和BIOSBIOS中断调用中断调用 层次特点:层次特点:u ROM BIOS中的中断子程序中的中断子程序 使用使用IN/OUT指令直接控制外设,指令直接控制外设, 实现与外设之间的输入实现与外设之间的输入/输出操作,输出操作, 以软件形式向其上层提供服务。
以软件形式向其上层提供服务u IO.SYS中的中断子程序中的中断子程序 ( 称基本输入称基本输入/输出输出BIOS模块模块) 调用调用ROM BIOS的基本的基本I/O功能,功能, 向向 MSDOS.SYS提供设备驱动服务提供设备驱动服务u MSDOS.SYS中的中断子程序中的中断子程序 ( 称称DOS内核模块内核模块 ) 调用调用IO.SYS,,实现对外设的控制实现对外设的控制 与标准外设有两层隔离与标准外设有两层隔离 :: IO.SYS和和ROM BIOS其中,其中,21H类型的中断子程序类型的中断子程序提提供供了了丰丰富富的的系系统统服服务务,,称称21类类型型的的中中断调用为断调用为DOS系统系统(功能功能)调用用户程序用户程序磁盘管理模块磁盘管理模块(DOS内核内核)MSDOS.SYS 系统功能系统功能基本输入基本输入/输出输出 BIOS 模模 块块IO.SYS 设备驱动设备驱动ROM BIOS 基本基本I/O系系 统统 硬硬 件件装装入入命令处理模块命令处理模块COMMAN D.COM用户命令用户命令第第4 4章章 汇编语言程序设计汇编语言程序设计用户程序用户程序磁盘管理模块磁盘管理模块(DOS内核内核)MSDOS.SYS 系统功能系统功能基本输入基本输入/输出输出 BIOS 模模 块块IO.SYS 设备驱动设备驱动ROM BIOS 基本基本I/O系系 统统 硬硬 件件装装入入命令处理模块命令处理模块COMMAN D.COM用户命令用户命令第第4 4章章 汇编语言程序设计汇编语言程序设计u 用户编程原则用户编程原则①① 尽尽可可能能使使用用DOS的的系系统统功功能调用,提高程序可移植性。
能调用,提高程序可移植性②② 在在DOS功功能能不不能能实实现现情情况况下,考虑用下,考虑用BIOS功能调用功能调用③③ 在在DOS和和BIOS的的中中断断子子程程序序不不能能解解决决问问题题时时,,使使用用IN/OUT指令直接控制硬件指令直接控制硬件 在汇编语言程序设计中,用户在汇编语言程序设计中,用户可通过使用可通过使用BIOSBIOS和及和及基本基本DOSDOS系统系统提供的这些功能模块子程序(中提供的这些功能模块子程序(中断子程序调用),来编制直接管断子程序调用),来编制直接管理和控制计算机硬件设备的底层理和控制计算机硬件设备的底层软件,主要是完成软件,主要是完成I/OI/O操作第第4 4章章 汇编语言程序设计汇编语言程序设计v 在所有DOS功能调用中,将INT 2lH软中断命令实现的所有 子程序调用称为DOS系统功能调用,它体现了系统功能调用,它体现了DOS的核心功的核心功 能能, 对应100多个子程序常用如下:① ① 单字符输入单字符输入 ( 01H、、07H、、08H功能功能 )② ② 显示单字符显示单字符 ( 02H、、05H功能功能 )③ ③ 单字符输入单字符输入 或显示或显示( 06H功能功能 )④ ④ 字符串输入字符串输入 ( 0AH功能功能 )⑤ ⑤ 显示字符串显示字符串 ( 09H功能功能 )⑥ ⑥ 检测键盘状态检测键盘状态 ( 0BH功能功能 )⑦ ⑦ 保存中断向量保存中断向量 ( 35H功能功能 ) ⑧⑧ 设置中断向量设置中断向量 ( 25H功能功能 )设置入口参数设置入口参数在在AH设置功能号设置功能号m执行中断指令执行中断指令INT N分析、应用出口参数分析、应用出口参数。