微机技术第07章8259_第1页
微机技术第07章8259_第2页
微机技术第07章8259_第3页
微机技术第07章8259_第4页
微机技术第07章8259_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

1、第第7 7章章 中断控制接口中断控制接口教学重点n 8088 CPU的中断系统的中断系统n 8259A的中断工作过程和工作方式的中断工作过程和工作方式n 中断服务程序的编写中断服务程序的编写7.1 8088中断系统n8088的中断系统采用向量中断机制的中断系统采用向量中断机制n能够处理能够处理256个中断个中断n用中断向量号用中断向量号0255区别区别n可屏蔽中断还需要借助专用中断控制可屏蔽中断还需要借助专用中断控制器器Intel 8259A实现优先权管理实现优先权管理7.1.1 8088的中断类型非屏蔽中断源非屏蔽中断源中断逻辑中断逻辑INTO指令指令单步单步中断中断除法除法错误错误INT

2、N指令指令CPUINTRNMI可屏蔽中断源可屏蔽中断源8259A中断中断控制器控制器IR0IR1IR2IR3IR4IR5IR6IR7外外设设中中断断源源 INTAn内部中断内部中断n除法错中断除法错中断n指令中断指令中断n溢出中断溢出中断n单步中断单步中断n外部中断外部中断n非屏蔽中断非屏蔽中断n可屏蔽中断可屏蔽中断1. 内部中断n内部中断是由于内部中断是由于8088内部执行程序出现异内部执行程序出现异常引起常引起的程序中断的程序中断n利用内部中断,微处理器为用户提供了发利用内部中断,微处理器为用户提供了发现、调试并解决程序执行时异常情况的有现、调试并解决程序执行时异常情况的有效途径效途径n例

3、如,例如,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为

5、为1,则产生一个向量号为,则产生一个向量号为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可屏蔽中断主要用于主机与外设交换数据可屏蔽中断主要用于主机与外

9、设交换数据IF控制可屏蔽中断的响应控制可屏蔽中断的响应中断标志IF的状态nIF0:可屏蔽中断不会被响应:可屏蔽中断不会被响应n关中断、禁止中断、中断屏蔽关中断、禁止中断、中断屏蔽n系统复位,使系统复位,使IF0n任何一个中断被响应,使任何一个中断被响应,使IF0n执行指令执行指令CLI,使,使IF0nIF1:可屏蔽中断会被响应:可屏蔽中断会被响应n开中断、允许中断、中断开放开中断、允许中断、中断开放n执行指令执行指令STI,使,使IF1n执行指令执行指令IRET恢复原恢复原IF状态状态明确明确IF标志的状态是关键标志的状态是关键7.1.2 8088的中断响应过程NMIN软件中断软件中断INTR

10、TF=1中断响应周期中断响应周期读中断向量号读中断向量号下条指令下条指令现行指令现行指令IF1NNNNYYYYY查询中断的顺序,查询中断的顺序,决定了各种中断源的优先权决定了各种中断源的优先权n软件中断软件中断n除法错中断除法错中断n指令中断指令中断n溢出中断溢出中断n非屏蔽中断非屏蔽中断n可屏蔽中断可屏蔽中断n单步中断单步中断高高低低7.1.2 8088的中断响应过程(续)Y还有还有NMITEMP1标志寄存器入栈标志寄存器入栈TEMPTF,IFTF0CS:IP入栈入栈获取中断向量获取中断向量执行服务程序执行服务程序弹出弹出CS:IP弹出标志寄存器弹出标志寄存器返回被中断程序返回被中断程序(1

11、)(2)(3)(4)(5)NNY(6)n8088各种中断源的优先权,各种中断源的优先权,实际上是指被识别出来的先后实际上是指被识别出来的先后n多种中断同时请求时,多种中断同时请求时,最先响应的则可能是最先响应的则可能是单步中断或单步中断或NMI中断中断7.1.3 8088的中断向量表n中断向量:中断服务程序的入口地址(首地址)中断向量:中断服务程序的入口地址(首地址)n逻辑地址含有段地址逻辑地址含有段地址CS和偏移地址和偏移地址IP(32位)位)n每个中断向量的低字是偏移地址、高字是段地址,每个中断向量的低字是偏移地址、高字是段地址,需占用需占用4个字节个字节n8088微处理器从物理地址微处理

12、器从物理地址000H开始,依次安排各开始,依次安排各个中断向量,向量号也从个中断向量,向量号也从0开始开始n256个中断占用个中断占用1KB区域,就形成中断向量表区域,就形成中断向量表向量号为向量号为N的中断向量的的中断向量的物理地址物理地址N47.2 内部中断服务程序n编写内部中断服务程序与编写子程序类似编写内部中断服务程序与编写子程序类似n利用过程定义伪指令利用过程定义伪指令PROC/ENDPn第第1条指令通常为开中断指令条指令通常为开中断指令STIn最后用中断返回指令最后用中断返回指令IRETn通常采用寄存器传递参数通常采用寄存器传递参数n主程序需要调用中断服务程序主程序需要调用中断服务

13、程序n调用前,需要设置中断向量调用前,需要设置中断向量n利用利用INT n指令调用中断服务程序指令调用中断服务程序例7.1 内部中断服务程序n编写编写80H号中断服务程序号中断服务程序n功能:显示以功能:显示以“0”结尾字符串的功能结尾字符串的功能n利用显示器功能调用利用显示器功能调用INT 10Hn字符串缓冲区首地址为入口参数字符串缓冲区首地址为入口参数nDS:DX(段地址:偏移地址)传递参数(段地址:偏移地址)传递参数数据段intoffdw ?intsegdw ?intmsg db A Instruction Interrupt !db 0dh,0ah,0例7.1以以“0”结尾结尾回车、换

14、行回车、换行保存中断向量mov ax,3580hint 21hmov intoff,bx;保存偏移地址保存偏移地址mov intseg,es;保存段基地址保存段基地址例7.1获取中断向量(获取中断向量(DOS功能调用功能调用INT 21H)功能号:功能号:AH35H入口参数:入口参数:AL中断向量号中断向量号出口参数:出口参数:ES:BX中断向量(段地址:偏移地址)中断向量(段地址:偏移地址)设置中断向量push dsmov dx,offset new80hmov ax,seg new80hmov ds,axmov ax,2580hint 21hpop ds例7.1设置中断向量(设置中断向量(

15、DOS功能调用功能调用INT 21H)功能号:功能号:AH25H入口参数:入口参数:AL中断向量号中断向量号DS:DX中断向量(段地址:偏移地址)中断向量(段地址:偏移地址)调用中断服务程序;设置入口参数:;设置入口参数:DS段地址(已设置)段地址(已设置)DX偏移地址偏移地址mov dx,offset intmsgint 80h ;调用;调用80H中断服务程序中断服务程序例7.1A Instruction Interrupt !;80H号内部中断服务程序:号内部中断服务程序:;显示字符串(以;显示字符串(以“0”结尾)结尾);入口参数:;入口参数:DS:DX缓冲器首地址缓冲器首地址new80

16、h procsti;开中断开中断push ax;保护寄存器保护寄存器push bxpush si例7.1进入中断服务程序A Instruction Interrupt !显示字符串mov si,dxnew1:mov al,sicmp al,0jz new2mov bx,0mov ah,0ehint 10hinc sijmp new1例7.1A Instruction Interrupt !退出中断服务程序new2:pop si;恢复寄存器恢复寄存器pop bxpop axiret ;中断返回中断返回new80h endp例7.1A Instruction Interrupt !主程序结束mov

17、 dx,intoffmov ax,intsegmov ds,axmov ax,2580hint 21hmov ax,4c00hint 21h例7.1A Instruction Interrupt !7.3 8259A中断控制器nIntel 8259A是可编程中断控制器是可编程中断控制器PICn可用于管理可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断的可屏蔽中断n8259A的基本功能的基本功能n一片一片8259A可以管理可以管理8级中断,可扩展至级中断,可扩展至64级级n每一级中断都可单独被屏蔽或允许每一级中断都可单独被屏蔽或允许n在中断响应周期

18、,可提供相应的中断向量号在中断响应周期,可提供相应的中断向量号n8259A设计有多种工作方式,可通过编程选择设计有多种工作方式,可通过编程选择7.3.1 8259A的内部结构和引脚D7D0INTAINT中断请求寄存器中断请求寄存器中断屏蔽寄存器中断屏蔽寄存器数据数据总线总线缓冲器缓冲器IR0IR7读读/写写控制控制逻辑逻辑级联级联缓冲器缓冲器比较器比较器RDWRA0CSCAS0CSA1CAS2SP/EN优先权判别电路优先权判别电路中断服务寄存器中断服务寄存器控制逻辑控制逻辑1. 中断控制n中断请求寄存器中断请求寄存器IRRn保存保存8条外界中断请求信号条外界中断请求信号IR0IR7的请求状态的

19、请求状态nDi位为位为1表示表示IRi引脚有中断请求;为引脚有中断请求;为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

20、0 1 1 0 1写入写入ICW1、OCW2和和OCW3写入写入ICW2ICW4和和OCW1读出读出IRR、ISR和查询字和查询字读出读出IMR数据总线高阻状态数据总线高阻状态数据总线高阻状态数据总线高阻状态3. 中断级连n一个系统中,一个系统中,8259A可以级连,有一个主可以级连,有一个主8259A,若干个(最多若干个(最多8个)从个)从8259An级连时,主级连时,主8259A的三条级连线的三条级连线CAS0CAS2作作为输出线,连至每个从为输出线,连至每个从8259A的的CAS0CAS2n每个从每个从8259A的中断请求信号的中断请求信号INT,连至主,连至主8259A的一个中断请求输

21、入端的一个中断请求输入端IRn主主8259A的的INT线连至线连至CPU的中断请求输入端的中断请求输入端nSP*/EN*在非缓冲方式下,规定该在非缓冲方式下,规定该8259A是主片是主片(SP*1)还是从片()还是从片(SP*0)动画动画示例示例7.3.2 8259A的中断过程CAS0CAS2D0D7SP/ENIR0IR7CPU响应周期响应周期8259A工作波形工作波形INT第一个周期第一个周期T1 T2 T3 T4ALECLK 第二个周期第二个周期T1 T2 T3 T4第一个前保持为高电平第一个前保持为高电平 INTALOCK动画动画7.3.3 8259A的工作方式普通全嵌套方式普通全嵌套方

22、式特殊全嵌套方式特殊全嵌套方式自动循环方式自动循环方式特殊循环方式特殊循环方式优先权固定方式优先权固定方式优先权循环方式优先权循环方式设置优先权方式设置优先权方式普通中断结束方式普通中断结束方式特殊中断结束方式特殊中断结束方式自动中断结束方式自动中断结束方式非自动中断结束方式非自动中断结束方式结束中断处理方式结束中断处理方式屏蔽中断源方式屏蔽中断源方式普通屏蔽方式普通屏蔽方式特殊屏蔽方式特殊屏蔽方式中断触发方式中断触发方式边沿触发方式边沿触发方式电平触发方式电平触发方式数据线连接方式数据线连接方式缓冲方式缓冲方式非缓冲方式非缓冲方式1. 设置优先权方式n普通全嵌套方式普通全嵌套方式n8259A

23、的中断的中断优先权顺序固定不变优先权顺序固定不变,从高到低依次为,从高到低依次为IR0、IR1、IR2、IR7n中断请求后,中断请求后,8259A对对当前请求中断中优先权最高的当前请求中断中优先权最高的中断中断IRi予以予以响应响应,将其向量号送上数据总线,对应,将其向量号送上数据总线,对应ISR的的Di位置位,至到中断结束(位置位,至到中断结束(ISR的的Di位复位)位复位)n在在ISR的的Di位置位期间,位置位期间,禁止再发生同级和低级优先权禁止再发生同级和低级优先权的中断的中断,但允许高级优先权中断的嵌套,但允许高级优先权中断的嵌套n特殊全嵌套方式特殊全嵌套方式n优先权自动循环方式优先权

24、自动循环方式n优先权特殊循环方式优先权特殊循环方式2. 结束中断处理方式什么是什么是8259A的中断结束?的中断结束?8259A利用中断服务寄存器利用中断服务寄存器ISR判断:判断:n某位为某位为1,表示正在进行中断服务;,表示正在进行中断服务;n该位为该位为0,就是该中断结束服务。,就是该中断结束服务。这里说明如何使这里说明如何使ISR某位为某位为0,不反映不反映CPU的工作状态。的工作状态。2. 结束中断处理方式n自动中断结束方式自动中断结束方式n普通中断结束方式普通中断结束方式n配合全嵌套优先权方式使用配合全嵌套优先权方式使用n当当CPU用输出指令往用输出指令往8259A发出普通中断结束

25、发出普通中断结束EOI命令命令时,时,8259A就会把所有正在服务的中就会把所有正在服务的中断中优先权最高的断中优先权最高的ISR位复位位复位n特殊中断结束方式特殊中断结束方式n配合循环优先权方式使用配合循环优先权方式使用nCPU在程序中向在程序中向8259A发送一条特殊中断结束发送一条特殊中断结束命令,这个命令中指出了要清除哪个命令,这个命令中指出了要清除哪个ISR位位3. 屏蔽中断源方式n普通屏蔽方式普通屏蔽方式n将将IMR的的Di位置位置1,则对应的中断,则对应的中断IRi被屏被屏蔽蔽,该中断请求不能从,该中断请求不能从8259A送到送到CPUn如果如果IMR的的Di位置位置0,则允许,

26、则允许IRi中断产生中断产生n特殊屏蔽方式特殊屏蔽方式n将将IMR的的Di位置位置1,对应的中断,对应的中断IRi被屏蔽被屏蔽的同时,使的同时,使ISR的的Di位置位置04. 中断触发方式n边沿触发方式边沿触发方式n8259A将中断请求输入端出现的将中断请求输入端出现的上升沿作为中断请求信号上升沿作为中断请求信号n电平触发方式电平触发方式n中断请求端出现的高电平是有中断请求端出现的高电平是有效的中断请求信号效的中断请求信号5. 数据线连接方式n缓冲方式缓冲方式n8259A的数据线需加缓冲器予以驱动的数据线需加缓冲器予以驱动n8259A把把SP*/EN*引脚作为输出端,输出允引脚作为输出端,输出

27、允许信号,用以锁存或开启缓冲器许信号,用以锁存或开启缓冲器n非缓冲方式非缓冲方式nSP*/EN*引脚为输入端引脚为输入端n若若8259A级连,由其确定是主片或从片级连,由其确定是主片或从片 7.3.4 8259A的编程n初始化编程初始化编程n8259A开始工作前,必须进行初始化编程开始工作前,必须进行初始化编程n给给8259A写入写入初始化命令字初始化命令字ICWn中断操作编程中断操作编程n在在8259A工作期间工作期间n可以写入可以写入操作命令字操作命令字OCW将选定的操作传将选定的操作传送给送给8259A,使之按新的要求工作,使之按新的要求工作n还可以读取还可以读取8259A的信息,以便了

28、解他的的信息,以便了解他的工作状态工作状态1. 初始化命令字ICWn初始化命令字初始化命令字ICW最多有最多有4个个n8259A在开始工作前必须写入在开始工作前必须写入n必须按照必须按照ICW1ICW4顺序写入顺序写入nICW1和和ICW2是必须送的是必须送的nICW3和和ICW4由工作方式决定由工作方式决定流程流程D7D6D5D4D3D2D1D0ICW11LTIMSNGLIC4D7D6D5D4D3D2D1D0表示可以任意表示可以任意为为1为为0都可以(建议为都可以(建议为0) 1只能为只能为1,作为标志,作为标志中断触发方式:中断触发方式:LTIM1,电平触发方式,电平触发方式LTIM0,边

29、沿触发方式,边沿触发方式 规定单片或级连方式:规定单片或级连方式:SNGL1,单片方式,单片方式SNGL0,级连方式,级连方式是否写入是否写入ICW4IC41,要写入,要写入ICW4IC40,不写入,不写入ICW4,即,即ICW4规定的位全为规定的位全为0ICW2T7T6T5T4T3D7D6D5D4D3D2D1D0设置中断向量号设置中断向量号nT7T3为中断向量号的高为中断向量号的高5位位n低低3位由位由8259A自动确定:自动确定:nIR0为为000、IR1为为001、IR7为为111ICW3S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0级连命令字级

30、连命令字n主片主片8259A:Si1对应对应IRi接有从片;接有从片;否则否则IRi没有连接从片没有连接从片n从片从片8259A:ID0ID2编码说明从片编码说明从片INT引脚接到主片哪个引脚接到主片哪个IR引脚引脚ICW4000SFNMBUFM/SAEOIPMD7D6D5D4D3D2D1D0嵌套方式:嵌套方式:n特殊全嵌套方式(特殊全嵌套方式(SFNM1)n普通全嵌套方式(普通全嵌套方式(SFNM0)数据线的缓冲方式:数据线的缓冲方式:n缓冲方式(缓冲方式(BUF1)n非缓冲方式(非缓冲方式(BUF0) 主片主片/从片选择:从片选择:n主片(主片(M/S=1)n从片(从片(M/S=0)中断结

31、束方式:中断结束方式:n自动中断结束(自动中断结束(AEOI1)n非自动中断结束(非自动中断结束(AEOI0)微处理器类型:微处理器类型:n16位位80 x86( PM1)n8位位8080/8085( PM0)初始化主片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中断控制器的初始化程序段初始化从片8259A

32、mov 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中断控制器的初始化程序段2. 操作命令字OCWn8259A工作期间,可以随时接受操作命工作期间,可以随时接受操作命令字令字OCWnOCW共有共有3个:个:OCW1OCW3n写入时没有顺序要求,需要哪个写入时没有顺序要求,需要哪个OCW就写入那个就写入那个OCW

33、D7D6D5D4D3D2D1D0OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字屏蔽命令字内容写入中断屏蔽寄存器内容写入中断屏蔽寄存器IMRDiMi对应对应IRi,为,为1禁止禁止IRi中断;中断;为为0允许允许IRi中断。各位互相独立。中断。各位互相独立。OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和和EOI配合使配合使用用产生中断结束产生中断结束EOI命命令和改变优先权顺序令和改变优先权顺序L2L0的的3位编码位编码指定指定IR引脚引脚 OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM

34、设置中断屏蔽方式设置中断屏蔽方式P、RR和和RIS规定随后读取的规定随后读取的状态字状态字含义含义3. 读取状态字nCPU可读出可读出IRR、ISR、IMR和查询字和查询字nA0为低,由为低,由OCW3中中RR和和RIS位设定读位设定读取取IRR或或ISR,由,由OCW3中中P位设定读取位设定读取查询字查询字n而而A0引脚为高电平时读取的都是引脚为高电平时读取的都是IMRn查询字反映查询字反映8259A是否有中断请求是否有中断请求D7D6D5D4D3D2D1D0查询字IW2W1W0D7D6D5D4D3D2D1D0中断位中断位I位为位为1,有外设请求中断有外设请求中断W2W0的编码的编码当前中断

35、请求的当前中断请求的最高优先级最高优先级4. 命令字和状态字的区别方法 利用读写信号区别写入的控制寄存器和利用读写信号区别写入的控制寄存器和读出的状态寄存器读出的状态寄存器 利用地址信号区别不同利用地址信号区别不同I/O地址的寄存器地址的寄存器 由控制字中的标志位说明是哪个寄存器由控制字中的标志位说明是哪个寄存器 由芯片内顺序控制逻辑按一定顺序识别由芯片内顺序控制逻辑按一定顺序识别不同的寄存器不同的寄存器 由前面的控制字决定后续操作的寄存器由前面的控制字决定后续操作的寄存器接口电路中常用的方法接口电路中常用的方法7.4 8259A在IBM PC系列机上的应用CAS02CAS02+5V主主825

36、9A8228880286 CPUINTRD0D7SP/ENINTD0D7日时钟日时钟键盘键盘串行口串行口2串行口串行口1并行口并行口2软盘软盘并行口并行口1A0INTR1CS IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 A0 CS 实时钟实时钟改向改向0AH中断中断保留保留保留保留保留保留协处理器协处理器硬盘硬盘保留保留A0INTR2CS IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 A0 CS系统总线系统总线B25B24B23B22B21系统总线系统总线B4D3D4D5D6D7INTARDWRINTAIORIO

37、W7.4 8259A在IBM PC系列机上的应用CAS02 从从8259AD0D7INTSP/EN实时钟实时钟改向改向0AH中断中断保留保留保留保留保留保留协处理器协处理器硬盘硬盘保留保留A0INTR2CS IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 A0 CS系统总线系统总线B4D3D4D5D6D7INTARDWR对比在对比在IBM PC/XT机的应用机的应用应用注意事项n利用上升沿做为中断请求利用上升沿做为中断请求IRQ的有效信号的有效信号nIRQ0IRQ7的中断向量号依次为的中断向量号依次为08H0FH,IRQ8IRQ15依次为依次为70H

38、77Hn采用普通全嵌套优先权方式,中断优先权从高到采用普通全嵌套优先权方式,中断优先权从高到低顺序为低顺序为IRQ0IRQ2、IRQ8IRQ15、IRQ3IRQ7,且不能改变,且不能改变n采用普通中断结束采用普通中断结束EOI方式,需要在中断服务程方式,需要在中断服务程序最后发送普通序最后发送普通EOI命令命令n一般采用普通屏蔽方式,通过写入一般采用普通屏蔽方式,通过写入IMR允许中断,允许中断,但注意不要破坏原屏蔽状态但注意不要破坏原屏蔽状态7.5 外部中断服务程序编写外部可屏蔽中断服务程序,需注意:编写外部可屏蔽中断服务程序,需注意:n发送中断结束命令发送中断结束命令n一般只能采用存储单元

39、传递参数一般只能采用存储单元传递参数n不要使用不要使用DOS系统功能调用系统功能调用n中断服务程序尽量短小中断服务程序尽量短小7.5 外部中断服务程序(续)编写主程序,需注意:编写主程序,需注意:n修改中断向量修改中断向量n控制控制CPU的中断允许标志的中断允许标志n设置设置8259A的中断屏蔽寄存器的中断屏蔽寄存器例题7.2 可屏蔽中断服务程序n8259A的的IRQ0(向量号为(向量号为08H)中断请求)中断请求来自定时器来自定时器8253,每隔,每隔55ms产生一次产生一次n本程序的本程序的08H号中断服务程序,每次中断号中断服务程序,每次中断显示一串信息,显示显示一串信息,显示10次次n

40、用内存单元(共享变量)在主程序与外部用内存单元(共享变量)在主程序与外部中断服务程序之间传递参数:中断次数中断服务程序之间传递参数:中断次数n显示信息也安排在共同的数据段中显示信息也安排在共同的数据段中数据段intmsg db A 8259A Interrupt !db 0dh,0ah,0counter db 0例7.2保存中断向量mov ax,3508hint 21hpush bx;保存偏移地址保存偏移地址push es;保存段基地址保存段基地址例7.2设置中断向量clipush dsmov dx,offset new08hmov ax,seg new08hmov ds,axmov ax,2

41、508hint 21hpop ds例7.2设置中断寄存器in al,21hpush axand al,0feh;允许允许IRQ0out 21h,almov counter,0 ;设置中断次数初值设置中断次数初值sti;开中断开中断例7.2循环等待中断start1:cmp counter,10jb start1;中断中断10次退出次退出例7.2中断中断就在主程序循环当中就在主程序循环当中new08h procsti;开中断开中断push ax;保护寄存器保护寄存器push bxpush dsmov ax,datamov ds,ax ;设置数据段设置数据段DS例7.2进入中断服务程序中断处理inc

42、 countermov si,offset intmsg ;显示信息显示信息call dpstri例7.2显示字符串dpstriproc ;显示字符串子程序显示字符串子程序push axpush bxdps1:lodsbcmp al,0jz dps2例7.2显示字符串(续)mov bx,0mov ah,0ehint 10hjmp dps1dps2:pop bxpop axretdpstriendp例7.2退出中断服务程序mov al,20hout 20h,alpop ds;恢复寄存器恢复寄存器pop bxpop axiret ;中断返回中断返回new08h endp例7.2主程序结束clipo

43、p axout 21h,alpop dxpop dsmov ax,2508hint 21hstimov ax,4c00hint 21h例7.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 ! 7.6 驻留中断服务程序驻留驻留TSR(Terminate a

44、nd Stay Resident)程序)程序n用户程序运行后仍然保存在主存中,可以用户程序运行后仍然保存在主存中,可以让其他程序使用让其他程序使用n利用利用DOS功能调用功能调用31H代替代替4CH终止程序终止程序n小型驻留程序常编写成小型驻留程序常编写成COM程序程序n驻留程序也可以编写成驻留程序也可以编写成EXE程序程序n需要驻留内存的程序段要写在前面需要驻留内存的程序段要写在前面例题7.3 报时中断驻留服务程序n系统系统08H号中断服务程序调用号中断服务程序调用1CH中断中断n每隔每隔55ms调用这个报时中断,中断调用这个报时中断,中断65543次次就是时间过了一个小时就是时间过了一个小

45、时n本例编写一个驻留内存的本例编写一个驻留内存的1CH内部中断服内部中断服务程序务程序n实现每过一小时就显示信息实现每过一小时就显示信息n执行此程序后,报时中断服务程序将驻留执行此程序后,报时中断服务程序将驻留内存内存new1ch procsti;开中断开中断push si;保护寄存器保护寄存器push dsmov si,csmov ds,si ;设置数据段设置数据段DSadd countl,1adc counth,0例7.3进入中断服务程序中断处理cmp countl,hourljnz n1ch1cmp counth,hourhjnz n1ch1mov countl,0mov counth,

46、0mov si,offset intmsgcall dpstri例7.3退出中断服务程序n1ch1: pop ds;恢复寄存器恢复寄存器pop siiret ;中断返回中断返回countldw 0counth dw 0intmsg db One Hour Has Passed ! db 0dh,0ah,0new1ch endp例7.3One Hour Has Passed ! 显示字符串dpstriproc ;显示字符串子程序显示字符串子程序push axpush bxdps1:lodsbcmp al,0jz dps2例7.3显示字符串(续)mov bx,0mov ah,0ehint 10hjm

温馨提示

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

评论

0/150

提交评论