第7章中断与程序设计_第1页
第7章中断与程序设计_第2页
第7章中断与程序设计_第3页
第7章中断与程序设计_第4页
第7章中断与程序设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、7.1 中断概念7.2 INT 21H 如何实现?7.3 常用的BIOS/DOS 中断调用7.4 中断过程7.5 PC机中断系统第第7 7章中断与程序设计章中断与程序设计l外 部 中 断外 部 中 断 - 接 口 讲接 口 讲(8259)l内部中断内部处理、内部中断内部处理、BIOS/DOS中断本节中断本节讲讲7.1 7.1 中断概念中断概念子程序调用与中断服务程序子程序调用与中断服务程序 主程序主程序 CALL SUBP 子程序子程序SUBP RETDOS/BIOSDOS/BIOS调用调用 源程序源程序 INT n DOS/BIOS DOS/BIOS 例行驻留例行驻留 程序程序 IRETl中

2、断的定义:中断的定义:是指是指CPU在正常运行程序时,由于内部在正常运行程序时,由于内部/外部外部事件或由用户程序,而转到为中断事件服务的程序中去,服务事件或由用户程序,而转到为中断事件服务的程序中去,服务完毕再返回执行原程序,这一过程称为中断完毕再返回执行原程序,这一过程称为中断l中断的特征:中断的特征:具有随机性具有随机性l中断源:中断源:发出中断请求的外设或引起中断的内部原因称为中发出中断请求的外设或引起中断的内部原因称为中断源,包括外部硬件、内部硬件故障、指令和程序性中断源断源,包括外部硬件、内部硬件故障、指令和程序性中断源lINT软中断软中断:是用户在程序里发出中断指令是用户在程序里

3、发出中断指令INT nH产生产生(ROM BIOS和和DOS中断)。中断)。nH为软中断的中断类型号为软中断的中断类型号;CPUCPU执行执行INT Nh INT Nh 后立即产生中断,并调用系统中与后立即产生中断,并调用系统中与INT INT nH nH 相对应的程序,完成指定功能,相对应的程序,完成指定功能,n n为中断类型号为中断类型号( (中断中断 号号).).比如:比如:INT 21HINT 21H内部中断内部中断: :由软件或由软件或CPUCPU内部产生已知的中断,中断号内部产生已知的中断,中断号由软件程序或内部给出由软件程序或内部给出 CPU中断中断逻辑逻辑INTR:可屏蔽中断申

4、请可屏蔽中断申请NMI:不可屏蔽中断:不可屏蔽中断中断控中断控制器制器IR0IR1IR2INTA:中断应答中断应答(获取中获取中断类型号断类型号)INT n指令指令INTO溢出溢出IR15外部外部中断中断内部中断内部中断 CPU中断中断逻辑逻辑INTR:可屏蔽中断申请可屏蔽中断申请NMI:不可屏蔽中断:不可屏蔽中断中断控中断控制器制器IR0IR1IR2INTA:中断应答中断应答(获取中获取中断类型号断类型号)INT n指令指令INTO溢出溢出IR15外部外部中断中断内部中断内部中断外部中断外部中断: :由中断控制器处理外部中断由中断控制器处理外部中断16位系统中位系统中断编号:断编号:为为一个

5、字节,一个字节,0255。 00 - 01异常处理异常处理 被被0除、单步除、单步02不可屏蔽中断不可屏蔽中断奇偶校验错误等奇偶校验错误等03 - 07异常处理异常处理 断点、溢出等断点、溢出等08IRQ0系统计时器系统计时器09IRQ1键盘中断键盘中断0AIRQ2中断控制器级联中断控制器级联0B 0CIRQ3、IRQ4串行端口串行端口0D 0FIRQ5 - IRQ7声卡、软驱、并行接口声卡、软驱、并行接口10 - 6F指令中断指令中断 常用的常用的21H70 - 77IRQ8 IRQ15时钟及扩展到时钟及扩展到ISA总线总线78 - FF指令中断指令中断 7.2 INT 21H 7.2 IN

6、T 21H 如何实现?如何实现?u中断类型号与中断程序的联系中断类型号与中断程序的联系中断向量中断向量u中断向量,即中断服务程序的入口地址中断向量,即中断服务程序的入口地址, 4, 4个字节个字节CS:IPCS:IPu中断向量表:中断向量表:存放中断向量存放中断向量,256,256个中断的服务程序入口地址个中断的服务程序入口地址中断向量中断向量:长度和方向长度和方向利用利用DOS功能调用(功能调用(21H)存取中断向量)存取中断向量 利用利用PC机已经定义的中断号完成新的中断服务,机已经定义的中断号完成新的中断服务,需需要将原中断信息保留要将原中断信息保留,设置新的中断向量设置新的中断向量,完

7、成新的完成新的中断处理后中断处理后再恢复既有的中断信息再恢复既有的中断信息。 调用调用INT21H的的35号和号和25号功能存取中断向量号功能存取中断向量 分三步分三步: 用用35H号功能,获取原中断向量。号功能,获取原中断向量。 用用25H号功能,设置新中断向量,取代原中号功能,设置新中断向量,取代原中 断向量。断向量。 新服务程序执行完毕后,利用新服务程序执行完毕后,利用25H号功能恢号功能恢 复原中断向量。复原中断向量。INT 21H的的35号和号和25号功能号功能 中断号中断号 功功 能能 调调 用用 参参 数数21H 从中断向量表读取中断向量 入口参数:AH=35H,AL=中断号出口

8、参数:ES:BX=读取向量段基址:偏移量21H 向中断向量表写入中断向量 入口参数:AH=25H,AL=中断号出口参数:DS:DX=写入向量段基址:偏移量例:修改中断号为60H的中断向量第第步:步:MOV AHMOV AH,35H35H;取原中断向量;取原中断向量MOV ALMOV AL,60H60H;60H60H为原中断号为原中断号INT 21HINT 21HMOV OLD_SEGMOV OLD_SEG,ESES ;保存原中断向量;保存原中断向量MOV OLD_OFFMOV OLD_OFF,BXBX例:修改中断号为60H的中断向量第第步:步:MOV AHMOV AH,25H25H ;设置新中

9、断向量;设置新中断向量MOV ALMOV AL,60H 60H ;程序使用的中断号;程序使用的中断号MOV DXMOV DX,SEG IRn ;IRnSEG IRn ;IRn是新中断是新中断CS:IPCS:IPMOV DSMOV DS,DXDX ;DSDS新中断新中断CSCSMOV DXMOV DX,OFFSET IRn OFFSET IRn ;DXDX新中断新中断IPIPINT 21HINT 21H例:修改中断号为60H的中断向量第第步:步:MOV AHMOV AH,25H25H ;恢复旧的中断向量;恢复旧的中断向量MOV ALMOV AL,60H 60H ;中断号;中断号MOV DXMOV

10、 DX,OLD_SEGOLD_SEGMOV DSMOV DS,DXDX ;DSDS指向旧中断程序段址指向旧中断程序段址MOV DXMOV DX,OLD_OFF OLD_OFF ;DXDX指向旧中断程序偏移地址指向旧中断程序偏移地址INT 21HINT 21H在在PCPC机环境下,中断服务程序的编写格式机环境下,中断服务程序的编写格式1 1、在数据段中定义、在数据段中定义DATA SEGMENTDATA SEGMENT OLD_SEG DW OLD_SEG DW?;原中断服务程序的段地址?;原中断服务程序的段地址 OLD_OFF DWOLD_OFF DW?;原中断服务程序的偏移地址?;原中断服务

11、程序的偏移地址DATA ENDSDATA ENDS在在PCPC机环境下,中断服务程序的编写格式机环境下,中断服务程序的编写格式2 2、在代码段写程序、在代码段写程序 MOV AHMOV AH,35H35H ;取原中断向量;取原中断向量 MOV ALMOV AL,60H60H ;程序使用;程序使用60H60H中断号中断号 INT 21HINT 21H MOV OLD_SEG MOV OLD_SEG,ESES ;保存原中断向量;保存原中断向量 MOV OLD_OFFMOV OLD_OFF,BXBX MOV AH MOV AH,25H25H ;设置新中断向量;设置新中断向量 MOV ALMOV AL

12、,60H 60H ;中断号;中断号 MOV DXMOV DX,SEG IRn SEG IRn ;IRIR是新中断程序的入口是新中断程序的入口 MOV DSMOV DS,DXDX ;DSDS指向新中断程序段地址指向新中断程序段地址 MOV DXMOV DX,OFFSET IRn OFFSET IRn ;DXDX指向新中断程序偏移地址指向新中断程序偏移地址 INT 21HINT 21H在在PCPC机环境下,中断服务程序的编写格式机环境下,中断服务程序的编写格式 ;程序主体;程序主体 MOV AH,25H ;恢复旧的中断向量;恢复旧的中断向量 MOV AL,60H ;中断号;中断号 MOV DX,O

13、LD_SEG MOV DS,DX ;DS指向旧中断程序段址指向旧中断程序段址 MOV DX,OLD_OFF ;DX指向旧中断程序偏移地址指向旧中断程序偏移地址 INT 21H MOV AH,4CH INT 21HIR PROC PUSHAX ;中断服务程序的主体;中断服务程序的主体 POP AX IRETCODE ENDS DATASEGMENTOLD_SEG DW ? ;保存旧中断向量;保存旧中断向量OLD_OFF DW ?HELLO DB EFI,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXM

14、OV AH,35H ;取原中断向量取原中断向量MOV AL,5H ;5H为原中断号为原中断号INT 21HMOV OLD_SEG,ES ;保存原中断向量保存原中断向量MOV OLD_OFF,BXMOV AH,25H ;设置新中断向量设置新中断向量MOV AL,5H MOV DX,SEG IRSER ;IRn=新新CS:IPMOV DS,DX ;DS=新新CSMOV DX,OFFSET IRSER ;DX=新新IPINT 21HMOV AX,DATAMOV DS,AXMOV CX,10 ;程序主体;程序主体L1: INT 5HLOOP L1MOV AH,25H MOV AL,5H MOV DX,

15、OLD_SEG ;恢复原中断向量恢复原中断向量MOV DS,DX MOV DX,OLD_OFF INT 21HMOV AH,4CHINT 21HIRSER PROC FAR ;中断服务程序中断服务程序PUSH AXPUSH DXLEA DX,HELLOMOV AH,9INT 21HPOP DXPOP AXIRETIRSER ENDPCODE ENDSEND START微机中断程序设计举例:利用中断号5来设计一个中断处理程序,能输出字符串“EFI”。7.3 常用的常用的BIOS/DOS 中断调用中断调用 调用方法:调用方法:1、将、将调用参数调用参数装入装入指定的指定的寄存器中;寄存器中;2、B

16、IOS或或DOS功能号功能号装入装入AH;3、如需、如需子功能号子功能号,把它装入,把它装入AL;4、按中断号、按中断号调用调用DOS或或BIOS中断中断(INT);5、检查或取得、检查或取得返回参数返回参数。 (1 1)BIOSBIOS键盘中断键盘中断 ( )AH AH 功能功能 返回参数返回参数 0 0 从键盘读一字符从键盘读一字符 AL=AL=字符码,字符码,AH=AH=扫描码扫描码 1 1 读键盘缓冲区的字符读键盘缓冲区的字符 如如ZF=0ZF=0,AL=AL=字符码,字符码, AH=AH=扫描码扫描码 如如ZF=1ZF=1,缓冲区空缓冲区空 2 2 取键盘状态字节取键盘状态字节 AL

17、=AL=键盘状态字节键盘状态字节 字符数字键字符数字键 字符码为字符码为ASCII ASCII 码码 功能键、控制键功能键、控制键 字符码为字符码为0 0对应一个扫描码对应一个扫描码(2 2)DOSDOS键盘中断键盘中断 ( ) 功功 能能 调用参数调用参数 返回参数返回参数 从键盘输入一个字符并回显在屏幕上从键盘输入一个字符并回显在屏幕上 AL=字符字符 读键盘字符,不回显读键盘字符,不回显 DL= 0FFH 若有字符可取,若有字符可取,AL=字符,字符,ZF=0 若无字符可取,若无字符可取,AL=0,ZF=1 从键盘输入一个字符,不回显从键盘输入一个字符,不回显 AL=字符字符 从键盘输入

18、一个字符,不回显,从键盘输入一个字符,不回显, AL=字符字符 检测检测Ctrl-Break A 输入字符到缓冲区输入字符到缓冲区 DS:DX = 缓冲区首址缓冲区首址 读键盘状态读键盘状态 AL=0FFH有键入,有键入,AL=00无键入无键入 清除键盘缓冲区,清除键盘缓冲区, AL=键盘功能号键盘功能号 并调用一种键盘功能并调用一种键盘功能 (1,6,7,8或或A) 例:DOS调用:键盘输入,显示输出MOVMOV AHAH, 01, 01;DOS;DOS功能号功能号: :键盘输入键盘输入 INTINT 21H 21H ;DOS;DOS调用调用MOV CHAR, MOV CHAR, AL AL

19、 ; ; 键入字符的键入字符的ASCIIASCII码码在在ALAL中中MOV MOV DLDL, , A A ; ; 输出字符输出字符A AMOVMOV AHAH, 02, 02 ;DOS ;DOS功能号功能号: : 显示输出显示输出INTINT 21H 21H ;DOS;DOS调用调用7.4 7.4 中断过程中断过程l 中断识别:寻找中断源的操作过程只有外部硬件中断需要进行识别,其余不需要识别中断识别由中断控制器完成(8259) 中断识别的目的:形成该中断服务程序的入口地址7.4 7.4 中断过程中断过程l CPU识别中断的方法向量中断程序查询中断l 向量中断:在CPU响应中断后,由中断控制

20、器将服务程序入口地址送到CPUl 查询中断:采用软件查询方法来确定发出中断请求的设备7.4 7.4 中断过程中断过程优先级与嵌套优先级与嵌套l 优先级/嵌套:由于多个中断源同时申请中断时,CPU在一个时刻只能响应和处理一个中断,因此必须进行优先级排队。l 当CPU正处理某个中断时,出现更高级中断源的申请,CPU必须暂停该中断服务,转而去处理更高级中断,处理完后,再返回到被中断的服务程序继续执行。高级中断可中断低级中断响应1响应2中断服务2返回返回主程序中断服务17.4 7.4 中断过程中断过程1.中断请求外设向CPU发中断请求,CPU检查中断请求输入线,并决定是否响应中断。 若允许申请,用ST

21、I指令打开中断触发器IF; 若禁止申请,用CLI指令关闭中断触发器IF,称为中断屏蔽。 中断请求中断响应中断服务中断返回7.4 7.4 中断过程中断过程2.2.中断响应中断响应l CPUCPU在当前指令执行结束时,响应中断,进入中在当前指令执行结束时,响应中断,进入中断的响应周期。断的响应周期。l 发出二个中断回答信号发出二个中断回答信号INTAINTA完成中断响应周期。完成中断响应周期。l 进行断点及标志保存。进行断点及标志保存。l 读取中断类型号,找到中断源。读取中断类型号,找到中断源。l 装入中断服务程序的入口地址。装入中断服务程序的入口地址。中断请求中断请求中断响应中断响应中断服务中断

22、服务中断返回中断返回7.4 7.4 中断过程中断过程3.3.中断服务中断服务l 中止当前的程序,转去执行一个中中止当前的程序,转去执行一个中断服务子程序(如图)。断服务子程序(如图)。l 中断服务程序必须的内容:中断服务程序必须的内容: 保护现场:将可能使用的寄存器内保护现场:将可能使用的寄存器内容进栈,由一系列的容进栈,由一系列的PUSHPUSH指令完成指令完成 开中断:由开中断:由STISTI指令实现,目的是指令实现,目的是为了能实现中断的嵌套。为了能实现中断的嵌套。 恢复现场:将入栈的寄存器内容弹恢复现场:将入栈的寄存器内容弹出,由出,由POPPOP指令完成。指令完成。中断请求中断请求中

23、断响应中断响应中断服务中断服务中断返回中断返回7.4 7.4 中断过程中断过程4.4.中断返回中断返回l 自动将保存在堆栈中的标志、断点恢复自动将保存在堆栈中的标志、断点恢复l 回到中断前的地址开始继续执行。回到中断前的地址开始继续执行。l 返回使用中断返回指令返回使用中断返回指令IRETIRET。不能使用一般的子。不能使用一般的子程序返回指令程序返回指令RETRET,因为,因为RETRET指令不能恢复标志寄指令不能恢复标志寄存器的值存器的值中断请求中断请求中断响应中断响应中断服务中断服务中断返回中断返回7.5 PC7.5 PC机中断系统机中断系统 示意图:INT INT n n指令指令中断逻

24、辑中断逻辑非屏蔽中断请求非屏蔽中断请求中中断断控控制制系系统统可可屏屏蔽蔽中中断断请请求求INT3INT3指令指令INT4INT4指令指令单步单步中断中断除除0 0中断中断NMINMIINTRINTR软件中断软件中断硬件中断硬件中断7.5 PC7.5 PC机中断系统机中断系统可屏蔽中断可屏蔽中断INTRINTRl 可屏蔽中断是硬件中断,由可屏蔽中断是硬件中断,由INTRINTR引脚引入,它受引脚引入,它受中断允许标志的影响,可以被中断允许标志的影响,可以被CPUCPU用指令用指令CLICLI来禁来禁止,由指令止,由指令STISTI允许。允许。l 只有当只有当IFIF1 1时,可屏蔽中断才能响应

25、,反之时,可屏蔽中断才能响应,反之IFIF0 0时中断请求不允许,可屏蔽中断可有多个,时中断请求不允许,可屏蔽中断可有多个,一般是通过优先级排队,从多个中断源中选出一一般是通过优先级排队,从多个中断源中选出一个进行处理。个进行处理。7.5 PC7.5 PC机中断系统机中断系统- -硬、软中断的比较硬、软中断的比较硬中断的特点:硬中断的特点:l由外部事件引起,由外部事件引起,CPUCPU需发中断回答命令需发中断回答命令l中断号由中断控制器提供,中断是可屏蔽的中断号由中断控制器提供,中断是可屏蔽的软软中断的特点:中断的特点:l由执行中断指令(由执行中断指令(INT nHINT nH)产生,)产生,CPUCPU不需发中不需发中断回答命令断回答命令l中断号由指令中直接给出中断号由指令中直接给出l不可用指令去屏蔽不可用指令去屏蔽7.5 PC7.5 PC机中断系统机中断系统INTA2INTA2信号的作用信号的作用当当CPUCPU收到中断请求收到中断请求INTINT后,如果当前指令执行完毕后,如果当前指令执行完毕,并且中断标志,并且中断标志IF=1,IF=1,那么那么CPUCPU进入中断响应周期,进入中断响

温馨提示

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

最新文档

评论

0/150

提交评论