《微机技术第08章中断控制接口.ppt》由会员分享,可在线阅读,更多相关《微机技术第08章中断控制接口.ppt(89页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第 8 8 章章第第8 8章章 中断控制接口中断控制接口教学重点n 8088 CPU的中断系统的中断系统n 8259A的中断工作过程和工作方式的中断工作过程和工作方式n 中断服务程序的编写中断服务程序的编写8.1 8088中断系统n8088的中断系统采用向量中断机制的中断系统采用向量中断机制n能够处理能够处理256个中断个中断n用中断向量号用中断向量号0255区别区别n可可屏屏蔽蔽中中断断还还需需要要借借助助专专用用中中断断控控制制器器Intel 8259A实现优先权管理实现优先权管理8.1.1 8088的中断类型非屏蔽中断源非屏蔽中断源中断逻辑中断逻辑INTO指令指令单步单步中断中断除法除
2、法错误错误INT N指令指令CPUINTRNMI可屏蔽中断源可屏蔽中断源8259A中断中断控制器控制器IR0IR1IR2IR3IR4IR5IR6IR7外外设设中中断断源源 INTAn内部中断内部中断n除法错中断除法错中断n指令中断指令中断n溢出中断溢出中断n单步中断单步中断n外部中断外部中断n非屏蔽中断非屏蔽中断n可屏蔽中断可屏蔽中断1.内部中断n内内部部中中断断是是由由于于8088内内部部执执行行程程序序出出现现异异常引起常引起的程序中断的程序中断n利利用用内内部部中中断断,微微处处理理器器为为用用户户提提供供了了发发现现、调调试试并并解解决决程程序序执执行行时时异异常常情情况况的的有有效途
3、径效途径n例例如如,ROM-BIOS和和DOS系系统统利利用用内内部部中中断为程序员提供了各种功能调用断为程序员提供了各种功能调用内部中断的中断向量号已定内部中断的中断向量号已定 除法错中断n在在执执行行除除法法指指令令时时,若若除除数数为为0或或商商超超过过了了寄寄存存器器所所能能表表达达的的范范围围,则则产产生生一一个个向向量量号为号为0的内部中断,称为除法错中断的内部中断,称为除法错中断例如:例如:mov bl,0idiv bl;除数;除数BL0,产生除法错中断,产生除法错中断mov ax,200hmov bl,1div bl;商;商200H,不能用,不能用AL表达表达;产生除法错中断;
4、产生除法错中断 指令中断n在在执执行行中中断断调调用用指指令令INT n时时产产生生的的一一个个向向量量号号为为n(0 255)的的内内部部中中断断,称称为为指令中断指令中断n其其中中向向量量号号为为3的的指指令令中中断断比比较较特特别别(生生成成一一个个字字节节的的指指令令代代码码:11001100),常常用用于程序调试,被称为断点中断于程序调试,被称为断点中断例如:例如:DEBUG.EXE调试程序的运行命令调试程序的运行命令G设置设置的断点,就是利用的断点,就是利用INT 3指令实现的指令实现的 溢出中断n在在执执行行溢溢出出中中断断指指令令INTO时时,若若溢溢出出标标志志OF为为1,则
5、则产产生生一一个个向向量量号号为为4的的内内部部中中断断,被称为溢出中断被称为溢出中断例如:例如:mov ax,2000hadd ax,7000h;2000H7000H9000H,溢出:,溢出:OF1into;因为;因为OF1,所以产生溢出中断,所以产生溢出中断单步中断n若若单单步步中中断断TF为为1,则则在在每每条条指指令令执执行行结结束束后后产产生生一一个个向向量量号号为为1的的内内部部中中断断,称称为为单步中断单步中断例如:例如:DEBUG.EXE调试程序的单步命令调试程序的单步命令T就利就利用单步中断实现对程序的单步调试用单步中断实现对程序的单步调试2.外部中断n外外部部中中断断是是由
6、由于于8088外外部部提提出出中中断断请请求求引引起起的程序中断的程序中断n利利用用外外部部中中断断,微微机机系系统统可可以以实实时时响响应应外外部部设设备备的的数数据据传传送送请请求求,能能够够及及时时处处理理外外部意外或紧急事件部意外或紧急事件n外外部部中中断断的的原原因因是是处处理理器器外外部部随随机机产产生生的的,所以是真正的所以是真正的中断中断(Interrupt)n内内部部中中断断的的原原因因是是处处理理器器执执行行程程序序出出现现异异常,所以经常被称为常,所以经常被称为异常异常(Exception)非屏蔽中断n通通过过非非屏屏蔽蔽中中断断请请求求信信号号向向微微处处理理器器提提出
7、出的的中中断断请请求求,微微处处理理器器无无法法禁禁止止,将将在在当当前前指指令令执执行行结结束束予予以响应,这个中断被称为非屏蔽中断以响应,这个中断被称为非屏蔽中断n8088的的非非屏屏蔽蔽中中断断的的向向量量号号为为2,非非屏屏蔽蔽中中断断请请求求信号为信号为NMIn非屏蔽中断主要用于处理系统的意外或故障。例如:非屏蔽中断主要用于处理系统的意外或故障。例如:n电源调电前的数据保护电源调电前的数据保护n存储器读写错误的处理存储器读写错误的处理 可屏蔽中断n外外部部通通过过可可屏屏蔽蔽中中断断请请求求信信号号向向微微处处理理器器提提出出的的中中断断,微微处处理理器器在在允允许许可可屏屏蔽蔽中中
8、断断的的条条件件下下,在在当当前前指指令令执执行行结结束束予予以以响响应应,同同时时输输出出可可屏屏蔽蔽中中断响应信号,这个中断就是可屏蔽中断断响应信号,这个中断就是可屏蔽中断n8088的的可可屏屏蔽蔽中中断断请请求求和和响响应应信信号号分分别别是是INTR和和INTA*;由由IF标标志志控控制制可可屏屏蔽蔽中中断断是是否否允允许许响响应应;向量号来自外部中断控制器向量号来自外部中断控制器n8088通通常常需需要要配配合合中中断断控控制制器器8259A共共同同处处理理可可屏屏蔽中断蔽中断n可屏蔽中断主要用于主机与外设交换数据可屏蔽中断主要用于主机与外设交换数据IF控制可屏蔽中断的响应控制可屏蔽
9、中断的响应中断标志IF的状态nIF0:可屏蔽中断不会被响应:可屏蔽中断不会被响应n关中断、禁止中断、中断屏蔽关中断、禁止中断、中断屏蔽n系统复位,使系统复位,使IF0n任何一个中断被响应,使任何一个中断被响应,使IF0n执行指令执行指令CLI,使,使IF0nIF1:可屏蔽中断会被响应:可屏蔽中断会被响应n开中断、允许中断、中断开放开中断、允许中断、中断开放n执行指令执行指令STI,使,使IF1n执行指令执行指令IRET恢复原恢复原IF状态状态明确明确IF标志的状态是关键标志的状态是关键8.1.2 8088的中断响应过程NMIN软件中断软件中断INTRTF=1中断响应周期中断响应周期读中断向量号
10、读中断向量号下条指令下条指令现行指令现行指令IF1NNNNYYYYY查询中断的顺序,查询中断的顺序,决定了各种中断源的优先权决定了各种中断源的优先权n软件中断软件中断n除法错中断除法错中断n指令中断指令中断n溢出中断溢出中断n非屏蔽中断非屏蔽中断n可屏蔽中断可屏蔽中断n单步中断单步中断高高低低8.1.2 8088的中断响应过程(续)Y还有还有NMITEMP1标志寄存器入栈标志寄存器入栈TEMPTF,IFTF0CS:IP入栈入栈获取中断向量获取中断向量执行服务程序执行服务程序弹出弹出CS:IP弹出标志寄存器弹出标志寄存器返回被中断程序返回被中断程序(1)(2)(3)(4)(5)NNY(6)n80
11、88各种中断源的优先权,各种中断源的优先权,实际上是指被识别出来的先后实际上是指被识别出来的先后n多种中断同时请求时,多种中断同时请求时,最先响应的则可能是最先响应的则可能是单步中断或单步中断或NMI中断中断8.1.3 8088的中断向量表n中断向量:中断服务程序的入口地址(首地址)中断向量:中断服务程序的入口地址(首地址)n逻辑地址含有段地址逻辑地址含有段地址CS和偏移地址和偏移地址IP(32位)位)n每每个个中中断断向向量量的的低低字字是是偏偏移移地地址址、高高字字是是段段地地址址,需占用需占用4个字节个字节n8088微微处处理理器器从从物物理理地地址址000H开开始始,依依次次安安排排各
12、各个中断向量,向量号也从个中断向量,向量号也从0开始开始n256个中断占用个中断占用1KB区域,就形成区域,就形成中断向量表中断向量表向量号为向量号为N的中断向量的的中断向量的物理地址物理地址N48.2 内部中断服务程序n编写内部中断服务程序与编写子程序类似编写内部中断服务程序与编写子程序类似n利用过程定义伪指令利用过程定义伪指令PROC/ENDPn第第1条指令通常为开中断指令条指令通常为开中断指令STIn最后用中断返回指令最后用中断返回指令IRETn通常采用寄存器传递参数通常采用寄存器传递参数n主程序需要调用中断服务程序主程序需要调用中断服务程序n调用前,需要设置中断向量调用前,需要设置中断
13、向量n利用利用INT n指令调用中断服务程序指令调用中断服务程序例8.1 内部中断服务程序n编写编写80H号中断服务程序号中断服务程序n功能:显示以功能:显示以“0”结尾字符串的功能结尾字符串的功能n利用显示器功能调用利用显示器功能调用INT 10Hn字符串缓冲区首地址为入口参数字符串缓冲区首地址为入口参数nDS:DX(段地址:偏移地址)传递参数(段地址:偏移地址)传递参数数据段intoffdw?intsegdw?intmsg db A Instruction Interrupt!db 0dh,0ah,0例8.1以以“0”结尾结尾回车、换行回车、换行保存中断向量mov ax,3580hint
14、21hmov intoff,bx;保存偏移地址保存偏移地址mov intseg,es;保存段基地址保存段基地址例8.1获取中断向量(获取中断向量(DOS功能调用功能调用INT 21H)功能号:功能号:AH35H入口参数:入口参数:AL中断向量号中断向量号出口参数:出口参数:ES:BX中断向量(段地址:偏移地址)中断向量(段地址:偏移地址)设置中断向量push dsmov dx,offset new80hmov ax,seg new80hmov ds,axmov ax,2580hint 21hpop ds例8.1设置中断向量(设置中断向量(DOS功能调用功能调用INT 21H)功能号:功能号:A
15、H25H入口参数:入口参数:AL中断向量号中断向量号DS:DX中断向量(段地址:偏移地址)中断向量(段地址:偏移地址)调用中断服务程序;设置入口参数:;设置入口参数:DS段地址(已设置)段地址(已设置)DX偏移地址偏移地址mov dx,offset intmsgint 80h;调用;调用80H中断服务程序中断服务程序例8.1A Instruction Interrupt!;80H号内部中断服务程序:号内部中断服务程序:;显示字符串(以;显示字符串(以“0”结尾)结尾);入口参数:;入口参数:DS:DX缓冲器首地址缓冲器首地址new80h procsti;开中断开中断push ax;保护寄存器保
16、护寄存器push bxpush si例8.1进入中断服务程序A Instruction Interrupt!显示字符串mov si,dxnew1:mov al,sicmp al,0jz new2mov bx,0mov ah,0ehint 10hinc sijmp new1例8.1A Instruction Interrupt!退出中断服务程序new2:pop si;恢复寄存器恢复寄存器pop bxpop axiret;中断返回中断返回new80h endp例8.1A Instruction Interrupt!主程序结束mov dx,intoffmov ax,intsegmov ds,axmo
17、v ax,2580hint 21hmov ax,4c00hint 21h例8.1A Instruction Interrupt!8.3 8259A中断控制器nIntel 8259A是可编程中断控制器是可编程中断控制器PICn可可用用于于管管理理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断的可屏蔽中断n8259A的基本功能的基本功能n一片一片8259A可以管理可以管理8级中断,可扩展至级中断,可扩展至64级级n每一级中断都可单独被屏蔽或允许每一级中断都可单独被屏蔽或允许n在中断响应周期,可提供相应的中断向量号在中断响应周期,可提供相应的中断向量号n825
18、9A设计有多种工作方式,可通过编程选择设计有多种工作方式,可通过编程选择8.3.1 8259A的内部结构和引脚D7D0INTAINT中中断断请请求求寄寄存存器器中断屏蔽寄存器中断屏蔽寄存器数据数据总线总线缓冲器缓冲器IR0IR7读读/写写控制控制逻辑逻辑级联级联缓冲器缓冲器比较器比较器RDWRA0CSCAS0CSA1CAS2SP/EN优优先先权权判判别别电电路路中中断断服服务务寄寄存存器器控制逻辑控制逻辑1.中断控制n中断请求寄存器中断请求寄存器IRRn保存保存8条外界中断请求信号条外界中断请求信号IR0IR7的请求状态的请求状态nDi位为位为1表示表示IRi引脚有中断请求;为引脚有中断请求;
19、为0表示无请求表示无请求n中断服务寄存器中断服务寄存器ISRn保存正在被保存正在被8259A服务着的中断状态服务着的中断状态nDi位为位为1表示表示IRi中断正在服务中;为中断正在服务中;为0表示没有被服务表示没有被服务n中断屏蔽寄存器中断屏蔽寄存器IMRn保存对中断请求信号保存对中断请求信号IR的屏蔽状态的屏蔽状态nDi位为位为1表示表示IRi中断被屏蔽(禁止);为中断被屏蔽(禁止);为0表示允许表示允许2.与处理器接口 A0 RD*WR*CS*功能功能 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1写入写入ICW1、OCW2和和OCW3写入写入ICW2ICW
20、4和和OCW1读出读出IRR、ISR和查询字和查询字读出读出IMR数据总线高阻状态数据总线高阻状态数据总线高阻状态数据总线高阻状态3.中断级连n一一个个系系统统中中,8259A可可以以级级连连,有有一一个个主主8259A,若干个(最多若干个(最多8个)从个)从8259An级级连连时时,主主8259A的的三三条条级级连连线线CAS0CAS2作作为输出线,连至每个从为输出线,连至每个从8259A的的CAS0CAS2n每每个个从从8259A的的中中断断请请求求信信号号INT,连连至至主主8259A的一个中断请求输入端的一个中断请求输入端IRn主主8259A的的INT线连至线连至CPU的中断请求输入端
21、的中断请求输入端nSP*/EN*在在非非缓缓冲冲方方式式下下,规规定定该该8259A是是主主片片(SP*1)还是从片()还是从片(SP*0)动画动画示例示例8.3.2 8259A的中断过程CAS0CAS2D0D7SP/ENIR0IR7CPU响应周期响应周期8259A工作波形工作波形INT第一个周期第一个周期T1 T2 T3 T4ALECLK 第二个周期第二个周期T1 T2 T3 T4第一个前保持为高电平第一个前保持为高电平 INTALOCK动画动画8.3.3 8259A的工作方式普通全嵌套方式普通全嵌套方式特殊全嵌套方式特殊全嵌套方式自动循环方式自动循环方式特殊循环方式特殊循环方式优先权固定方
22、式优先权固定方式优先权循环方式优先权循环方式设置优先权方式设置优先权方式普通中断结束方式普通中断结束方式特殊中断结束方式特殊中断结束方式自动中断结束方式自动中断结束方式非自动中断结束方式非自动中断结束方式结束中断处理方式结束中断处理方式屏蔽中断源方式屏蔽中断源方式普通屏蔽方式普通屏蔽方式特殊屏蔽方式特殊屏蔽方式中断触发方式中断触发方式边沿触发方式边沿触发方式电平触发方式电平触发方式数据线连接方式数据线连接方式缓冲方式缓冲方式非缓冲方式非缓冲方式1.设置优先权方式n普通全嵌套方式普通全嵌套方式n8259A的的中中断断优优先先权权顺顺序序固固定定不不变变,从从高高到到低低依依次次为为IR0、IR1
23、、IR2、IR7n中中断断请请求求后后,8259A对对当当前前请请求求中中断断中中优优先先权权最最高高的的中中断断IRi予予以以响响应应,将将其其向向量量号号送送上上数数据据总总线线,对对应应ISR的的Di位置位,至到中断结束(位置位,至到中断结束(ISR的的Di位复位)位复位)n在在ISR的的Di位位置置位位期期间间,禁禁止止再再发发生生同同级级和和低低级级优优先先权权的中断的中断,但允许高级优先权中断的嵌套,但允许高级优先权中断的嵌套n特殊全嵌套方式特殊全嵌套方式n优先权自动循环方式优先权自动循环方式n优先权特殊循环方式优先权特殊循环方式2.结束中断处理方式什么是什么是8259A的中断结束
24、?的中断结束?8259A利用中断服务寄存器利用中断服务寄存器ISR判断:判断:n某位为某位为1,表示正在进行中断服务;,表示正在进行中断服务;n该位为该位为0,就是该中断结束服务。,就是该中断结束服务。这里说明如何使这里说明如何使ISR某位为某位为0,不反映不反映CPU的工作状态。的工作状态。2.结束中断处理方式n自动中断结束方式自动中断结束方式n普通中断结束方式普通中断结束方式n配合全嵌套优先权方式使用配合全嵌套优先权方式使用n当当CPU用用输输出出指指令令往往8259A发发出出普普通通中中断断结结束束EOI命命令令时时,8259A就就会会把把所所有有正正在在服服务务的的中中断中优先权最高的
25、断中优先权最高的ISR位复位位复位n特殊中断结束方式特殊中断结束方式n配合循环优先权方式使用配合循环优先权方式使用nCPU在在程程序序中中向向8259A发发送送一一条条特特殊殊中中断断结结束束命令,这个命令中指出了要清除哪个命令,这个命令中指出了要清除哪个ISR位位3.屏蔽中断源方式n普通屏蔽方式普通屏蔽方式n将将IMR的的Di位位置置1,则则对对应应的的中中断断IRi被被屏屏蔽蔽,该中断请求不能从,该中断请求不能从8259A送到送到CPUn如果如果IMR的的Di位置位置0,则允许,则允许IRi中断产生中断产生n特殊屏蔽方式特殊屏蔽方式n将将IMR的的Di位位置置1,对对应应的的中中断断IRi
26、被被屏屏蔽蔽的同时,使的同时,使ISR的的Di位置位置04.中断触发方式n边沿触发方式边沿触发方式n8259A将将中中断断请请求求输输入入端端出出现现的的上升沿作为中断请求信号上升沿作为中断请求信号n电平触发方式电平触发方式n中中断断请请求求端端出出现现的的高高电电平平是是有有效的中断请求信号效的中断请求信号5.数据线连接方式n缓冲方式缓冲方式n8259A的数据线需加缓冲器予以驱动的数据线需加缓冲器予以驱动n8259A把把SP*/EN*引引脚脚作作为为输输出出端端,输输出出允允许信号,用以锁存或开启缓冲器许信号,用以锁存或开启缓冲器n非缓冲方式非缓冲方式nSP*/EN*引脚为输入端引脚为输入端
27、n若若8259A级连,由其确定是主片或从片级连,由其确定是主片或从片 8.3.4 8259A的编程n初始化编程初始化编程n8259A开始工作前,必须进行初始化编程开始工作前,必须进行初始化编程n给给8259A写入写入初始化命令字初始化命令字ICWn中断操作编程中断操作编程n在在8259A工作期间工作期间n可可以以写写入入操操作作命命令令字字OCW将将选选定定的的操操作作传传送给送给8259A,使之按新的要求工作,使之按新的要求工作n还还可可以以读读取取8259A的的信信息息,以以便便了了解解他他的的工工作状态作状态1.初始化命令字ICWn初始化命令字初始化命令字ICW最多有最多有4个个n825
28、9A在开始工作前必须写入在开始工作前必须写入n必须按照必须按照ICW1ICW4顺序写入顺序写入nICW1和和ICW2是必须送的是必须送的nICW3和和ICW4由工作方式决定由工作方式决定流程流程D7D6D5D4D3D2D1D0ICW11LTIMSNGLIC4D7D6D5D4D3D2D1D0表示可以任意表示可以任意为为1为为0都可以(建议为都可以(建议为0)1只能为只能为1,作为标志,作为标志中断触发方式:中断触发方式:LTIM1,电平触发方式,电平触发方式LTIM0,边沿触发方式,边沿触发方式 规定单片或级连方式:规定单片或级连方式:SNGL1,单片方式,单片方式SNGL0,级连方式,级连方式
29、是否写入是否写入ICW4IC41,要写入,要写入ICW4IC40,不写入,不写入ICW4,即,即ICW4规定的位全为规定的位全为0ICW2T7T6T5T4T3D7D6D5D4D3D2D1D0设置中断向量号设置中断向量号nT7T3为中断向量号的高为中断向量号的高5位位n低低3位由位由8259A自动确定:自动确定:nIR0为为 000、IR1为为 001、IR7为为111ICW3S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0级连命令字级连命令字n主主片片8259A:Si1对对应应IRi接接有有从从片片;否则否则IRi没有连接从片没有连接从片n从从片片825
30、9A:ID0ID2编编码码说说明明从从片片INT引脚接到主片哪个引脚接到主片哪个IR引脚引脚ICW4000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:嵌套方式:n特殊全嵌套方式(特殊全嵌套方式(SFNM1)n普通全嵌套方式(普通全嵌套方式(SFNM0)数据线的缓冲方式:数据线的缓冲方式:n缓冲方式(缓冲方式(BUF1)n非缓冲方式(非缓冲方式(BUF0)主片主片/从片选择:从片选择:n主片(主片(M/S=1)n从片(从片(M/S=0)中断结束方式:中断结束方式:n自动中断结束(自动中断结束(AEOI1)n非自动中断结束(非自动中断结束(AEOI0)微处理器类型:微
31、处理器类型:n16位位80 x86(PM1)n8位位8080/8085(PM0)2.操作命令字OCWn8259A工工作作期期间间,可可以以随随时时接接受受操操作作命命令字令字OCWnOCW共有共有3个:个:OCW1OCW3n写写入入时时没没有有顺顺序序要要求求,需需要要哪哪个个OCW就写入那个就写入那个OCWD7D6D5D4D3D2D1D0OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字屏蔽命令字内容写入中断屏蔽寄存器内容写入中断屏蔽寄存器IMRDiMi对应对应IRi,为,为1禁止禁止IRi中断;中断;为为0允许允许IRi中断。各位互相独立。中断。各位互相独立
32、。OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和和EOI配配合合使使用用产产生生中中断断结结束束EOI命命令和改变优先权顺序令和改变优先权顺序L2L0的的3位编码位编码指定指定IR引脚引脚 OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM设置中断屏蔽方式设置中断屏蔽方式P、RR和和RIS规规定定随随后后读读取取的的状态字状态字含义含义3.读取状态字nCPU可读出可读出IRR、ISR、IMR和查询字和查询字nA0为为低低,由由OCW3中中RR和和RIS位位设设定定读读取取IRR或或ISR,由由OCW3中中P位位设设定定读读取
33、取查询字查询字n而而A0引脚为高电平时读取的都是引脚为高电平时读取的都是IMRn查询字反映查询字反映8259A是否有中断请求是否有中断请求D7D6D5D4D3D2D1D0查询字IW2W1W0D7D6D5D4D3D2D1D0中断位中断位I位为位为1,有外设请求中断有外设请求中断W2W0的编码的编码当当前前中中断断请请求求的的最高优先级最高优先级4.命令字和状态字的区别方法 利利用用读读写写信信号号区区别别写写入入的的控控制制寄寄存存器器和和读读出的状态寄存器出的状态寄存器 利用地址信号区别不同利用地址信号区别不同I/O地址的寄存器地址的寄存器 由控制字中的标志位说明是哪个寄存器由控制字中的标志位
34、说明是哪个寄存器 由由芯芯片片内内顺顺序序控控制制逻逻辑辑按按一一定定顺顺序序识识别别不不同的寄存器同的寄存器 由前面的控制字决定后续操作的寄存器由前面的控制字决定后续操作的寄存器接口电路中常用的方法接口电路中常用的方法初始化主片8259Amov al,11h;写入写入ICW1out 20h,aljmp intr1intr1:mov al,08h;写入写入ICW2out 21h,aljmp intr2intr2:mov al,04h;写入写入ICW3out 21h,aljmp intr3intr3:mov al,1h;写入写入ICW4out 21h,al中断控制器的初始化程序段初始化从片825
35、9Amov al,11h;写入写入ICW1out 0a0h,aljmp intr5intr5:mov al,70h;写入写入ICW2out 0a1h,aljmp intr6intr6:mov al,02h;写入写入ICW3out 0a1h,aljmp intr7intr7:mov al,01h;写入写入ICW4out 0a1h,al中断控制器的初始化程序段8.4 8259A在IBM PC系列机上的应用CAS02CAS02+5V主主8259A8228880286 CPUINTRD0D7SP/ENINTD0D7日时钟日时钟键盘键盘串行口串行口2串行口串行口1并行口并行口2软盘软盘并行口并行口1A0
36、INTR1CS IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 A0 CS 从从8259AD0D7INTSP/EN实时钟实时钟改向改向0AH中断中断保留保留保留保留保留保留协处理器协处理器硬盘硬盘保留保留A0INTR2CS IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 A0 CS系统总线系统总线B25B24B23B22B21系统总线系统总线B4D3D4D5D6D7INTARDWRINTAIORIOWINTARDWR8.4 8259A在IBM PC系列机上的应用CAS02 从从8259AD0D7INTSP/EN实时钟实
37、时钟改向改向0AH中断中断保留保留保留保留保留保留协处理器协处理器硬盘硬盘保留保留A0INTR2CS IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 A0 CS系统总线系统总线B4D3D4D5D6D7INTARDWR对比在对比在IBM PC/XT机的应用机的应用应用注意事项n利用上升沿做为中断请求利用上升沿做为中断请求IRQ的有效信号的有效信号nIRQ0IRQ7的的中中断断向向量量号号依依次次为为08H0FH,IRQ8IRQ15依次为依次为70H77Hn采采用用普普通通全全嵌嵌套套优优先先权权方方式式,中中断断优优先先权权从从高高到到低低顺顺序序为为
38、IRQ0IRQ2、IRQ8IRQ15、IRQ3IRQ7,且不能改变,且不能改变n采采用用普普通通中中断断结结束束EOI方方式式,需需要要在在中中断断服服务务程程序最后发送普通序最后发送普通EOI命令命令n一一般般采采用用普普通通屏屏蔽蔽方方式式,通通过过写写入入IMR允允许许中中断断,但注意不要破坏原屏蔽状态但注意不要破坏原屏蔽状态8.5 外部中断服务程序编写外部可屏蔽中断服务程序,需注意:编写外部可屏蔽中断服务程序,需注意:n发送中断结束命令发送中断结束命令n一般只能采用存储单元传递参数一般只能采用存储单元传递参数n不要使用不要使用DOS系统功能调用系统功能调用n中断服务程序尽量短小中断服务
39、程序尽量短小8.5 外部中断服务程序(续)编写主程序,需注意:编写主程序,需注意:n修改中断向量修改中断向量n控制控制CPU的中断允许标志的中断允许标志n设置设置8259A的中断屏蔽寄存器的中断屏蔽寄存器例题8.2 可屏蔽中断服务程序n8259A的的IRQ0(向向量量号号为为08H)中中断断请请求求来自定时器来自定时器8253,每隔,每隔55ms产生一次产生一次n本本程程序序的的08H号号中中断断服服务务程程序序,每每次次中中断断显显示一串信息,显示示一串信息,显示10次次n用用内内存存单单元元(共共享享变变量量)在在主主程程序序与与外外部部中断服务程序之间传递参数:中断次数中断服务程序之间传
40、递参数:中断次数n显示信息也安排在共同的数据段中显示信息也安排在共同的数据段中数据段intmsg db A 8259A Interrupt!db 0dh,0ah,0counter db 0例8.2保存中断向量mov ax,3508hint 21hpush bx;保存偏移地址保存偏移地址push es;保存段基地址保存段基地址例8.2设置中断向量clipush dsmov dx,offset new08hmov ax,seg new08hmov ds,axmov ax,2508hint 21hpop ds例8.2设置中断寄存器in al,21hpush axand al,0feh;允许允许IRQ
41、0out 21h,almov counter,0;设置中断次数初值设置中断次数初值sti;开中断开中断例8.2循环等待中断start1:cmp counter,10jb start1;中断中断10次退出次退出例8.2中断中断就在主程序循环当中就在主程序循环当中new08h procsti;开中断开中断push ax;保护寄存器保护寄存器push bxpush dsmov ax,datamov ds,ax;设置数据段设置数据段DS例8.2进入中断服务程序中断处理inc countermov si,offset intmsg;显示信息显示信息call dpstri例8.2显示字符串dpstripr
42、oc;显示字符串子程序显示字符串子程序push axpush bxdps1:lodsbcmp al,0jz dps2例8.2显示字符串(续)mov bx,0mov ah,0ehint 10hjmp dps1dps2:pop bxpop axretdpstriendp例8.2退出中断服务程序mov al,20hout 20h,alpop ds;恢复寄存器恢复寄存器pop bxpop axiret;中断返回中断返回new08h endp例8.2主程序结束clipop axout 21h,alpop dxpop dsmov ax,2508hint 21hstimov ax,4c00hint 21h例
43、8.2A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!A 8259A Interrupt!8.6 驻留中断服务程序驻留驻留TSR(Terminate and Stay Resident)程序)程序n用用户户程程序序运运行行后后仍仍然然保保存存在在主主存存中中,可可以以让其他程序使用让其他程序使用n利用利用DOS功能调用功能
44、调用31H代替代替4CH终止程序终止程序n小型驻留程序常编写成小型驻留程序常编写成COM程序程序n驻留程序也可以编写成驻留程序也可以编写成EXE程序程序n需要驻留内存的程序段要写在前面需要驻留内存的程序段要写在前面例题8.3 报时中断驻留服务程序n系统系统08H号中断服务程序调用号中断服务程序调用1CH中断中断n每每隔隔55ms调调用用这这个个报报时时中中断断,中中断断65543次次就是时间过了一个小时就是时间过了一个小时n本本例例编编写写一一个个驻驻留留内内存存的的1CH内内部部中中断断服服务程序务程序n实现每过一小时就显示信息实现每过一小时就显示信息n执执行行此此程程序序后后,报报时时中中
45、断断服服务务程程序序将将驻驻留留内存内存new1ch procsti;开中断开中断push si;保护寄存器保护寄存器push dsmov si,csmov ds,si;设置数据段设置数据段DSadd countl,1adc counth,0例8.3进入中断服务程序中断处理cmp countl,hourljnz n1ch1cmp counth,hourhjnz n1ch1mov countl,0mov counth,0mov si,offset intmsgcall dpstri例8.3退出中断服务程序n1ch1:pop ds;恢复寄存器恢复寄存器pop siiret;中断返回中断返回coun
46、tldw 0counth dw 0intmsg db One Hour Has Passed!db 0dh,0ah,0new1ch endp例8.3One Hour Has Passed!显示字符串dpstriproc;显示字符串子程序显示字符串子程序push axpush bxdps1:lodsbcmp al,0jz dps2例8.3显示字符串(续)mov bx,0mov ah,0ehint 10hjmp dps1dps2:pop bxpop axretdpstriendp例8.3主程序开始start:mov ax,csmov ds,axmov dx,offset new1chclimov
47、ax,251chint 21hstimov dx,offset tsrmsgmov ah,09hint 21h例8.3主程序结束mov dx,offset startadd dx,15mov cl,4shr dx,cladd dx,10hmov ax,3100h;程序驻留程序驻留int 21htsrmsg db INT 1CH Program Installed!db 0dh,0ah,$end start例8.3INT 1CH Program Installed!第第8 8章教学要求章教学要求1.熟熟悉悉8088的的中中断断类类型型、中中断断响响应应过过程、中断向量表程、中断向量表2.掌握内部
48、中断服务程序的编写掌握内部中断服务程序的编写3.理理解解8259A的的内内部部结结构构、寄寄存存器器作作用、中断过程用、中断过程4.掌掌握握8259A的的普普通通全全嵌嵌套套优优先先权权、普通中断结束、边沿触发方式普通中断结束、边沿触发方式第第8 8章教学要求章教学要求(续)(续)5.了了解解的的8259A的的ICW和和OCW,注意命令字和状态字的区别方法注意命令字和状态字的区别方法6.了了解解8259A在在IBM PC系系列列机机上上的应用情况的应用情况7.掌握外部中断服务程序的编写掌握外部中断服务程序的编写习题习题8(第(第 211 页)页)8.4 8.6 8.9 8.11 8.13实验实验2 2 中断实验中断实验n 不用实验台,实现例题程序不用实验台,实现例题程序n例例8.1 内部中断服务程序内部中断服务程序n例例8.2 可屏蔽中断服务程序可屏蔽中断服务程序n例例8.3 驻留中断服务程序驻留中断服务程序n 然后,按照实验要求进行然后,按照实验要求进行 提提示示