版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章
中断系统
5.1中断的基本概念中断
CPU暂停执行现行的程序,转而处理随机事件,处理完毕后再返回被中断的程序处继续执行,这一全过程称为中断。中断源能够引发CPU中断的信息源称为中断源。常见的中断源为:一般I/O设备,如CRT终端、打印机等。数据通道,如磁盘、磁带等。实时时钟,如定时器芯片8253产生的定时中断请求信号。故障信号,如电源掉电等。软件中断,如为调试程序而设置的中断。中断系统系统为实现中断而采用的硬件和软件措施。计算机采用中断系统的目的维持系统的正常工作,提高系统效率。实时处理。为故障处理作准备。中断系统应具备的基本功能对于硬设备的中断请求,要具备屏蔽和开放功能,使得程序员能灵活控制。能实现“中断判优”,即中断源排队,当有多个中断源提出请求时,高级别的中断请求能被优先响应。能实现中断嵌套,即高级别的中断源能够中断低级别的中断服务程序。系统响应中断后,能自动转入中断处理。中断处理结束,能自动返回。5.2 8086中断系统8086系统的中断分类8086系统共有256种类型的中断,对应的中断类型号为:0~255。可分为软件中断和硬件中断两大类。软件中断由CPU执行某些指令引起的中断称为软件中断(亦称内部中断)。它包括:除法出错中断-0类型中断在作除法时,若除数为0或商超出了有关寄存器能表示的数值范围,则产生除法出错中断。例如 movbl,0 idivbl ;除数BL=0,产生除法错中断 movax,200h movbl,1 divbl ;商=200H,不能用AL表达 ;产生除法错中断单步中断-1类型中断在单步标志TF=1且中断允许标志IF=1时,每执行一条指令就引起一次中断。断点中断-3类型中断主要用在除错调试程序中,利用“INT3”设置断点,目的是显示断点前程序的执行结果。当溢出标志OF=1时,执行指令INTO,则产生溢出中断。溢出中断-4类型中断例如MOV AX,2000HADD AX,7000HINTO ;2000H+7000H=9000H,溢出:OF=1
;因为OF=1,所以产生溢出中断中断指令INTnINTn是中断指令,n是中断类型号(0~255)。磁盘操作系统、基本输入输出系统的功能即是用INTn指令中断调用。硬件中断由CPU外部中断请求引脚NMI和INTR引起的中断称为硬件中断(亦称为外部中断)非屏蔽中断通过CPU的NMI(Non-MaskableInterrupt)引脚进入,NMI被响应时,自动产生2号类型中断。它不受中断允许标志的屏蔽,微处理器无法禁止,将在当前指令执行结束予以响应;8086的非屏蔽中断的类型号为2;非屏蔽中断主要用于处理系统的意外或故障。例如:电源调电前的数据保护存储器读写错误的处理中断请求信号通过CPU的INTR(打断)引脚进入;中断响应信号从INTA引脚发出;且中断允许标志IF=1时,CPU响应中断;若IF=0,则中断请求被屏蔽;通常可屏蔽中断源经过中断控制器8259A管理再向CPU发INTR请求。可屏蔽中断中断标志IF的状态IF=0:可屏蔽中断不会被响应关中断、禁止中断、中断屏蔽统复位,使IF=0任何一个中断被响应,使IF=0执行指令CLI,使IF=0IF=1:可屏蔽中断会被响应开中断、允许中断、中断开放执行;指令STI,使IF=1执行指令IRET恢复原IF状态5.2中断处理过程中断过程中断请求:
中断源向CPU发出请求中断信号。中断信号将被锁存,直到CPU响应中断后,中断请求信号才被清除。中断响应:CPU在执行每条指令的最后一个时钟周期检测中断请求信号。若发现中断请求信号有效,在允许中断的条件下,CPU响应中断。CPU会自动完成3项任务:关闭中断,以禁止其它中断请求。断点(IP和CS)和标志寄存器内容入栈保护。获得中断服务程序入口地址,转中断服务程序。中断处理:保护现场
相关工作寄存器的内容压栈保护。开中断
若要响应高级别的中断,则需要打开中断。执行中断服务程序关中断
使得不被中断,可顺利恢复现场。恢复现场
将压栈保护的内容顺序出栈给相关寄存器。中断返回中断服务程序的最后一条指令是中断返回指令IRET,执行后IRET后CPU自动从堆栈中弹出IP、CS和FLAGS的内容,返回主程序继续执行。NMIN软件中断INTRTF=1中断响应周期读中断向量号下条指令现行指令IF=1NNNNYYYYY查询中断的顺序,决定了各种中断源的优先权软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断高低Y还有NMITEMP=1标志寄存器入栈TEMP=TF,IF=TF=0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序(1)(2)(3)(4)(5)NNY(6)8086各种中断源的优先权,实际上是指被识别出来的先后;多种中断同时请求时,最先响应的则可能是单步中断或NMI中断。中断响应过程
中断向量中断向量中断服务程序的入口地址亦称中断向量。它由两部分组成:中断服务程序所在段的段基址(2个字节)。中断服务程序入口的偏移地址(2个字节)。中断向量表一种类型的中断向量为4个字节,256种中断的中断向量总共占用1024个字节。在8086系统中,所有的中断向量按类型顺序存放于内存的最低地址(00000H~003FFH)的1K单元中。存放中断向量的这1K单元称为中断向量表。N型中断向量在中断向量表中的位置:存放地址=N×4~(n×4+3)N×4字单元存放偏移地址;N×4+2的字单元存放段基址。例5.15型中断向量存放在:5×4~5×4+3=14H~17H的4个单元中,其中14H、15H单元存放中断服务程序入口的偏移地址;16H、17H单元存放中断服务程序入口的段基址。例5.2
CPU执行INT21H指令时,中断向量的引导过程。假设21H型服务程序被放在地址为:XX:YY开始的内存区,其中断向量XX:YY存放在4×21H~4×21H+3的单元中。CPU取出INT21H指令后,CS:IP等于下一指令(标号NEXT:)存放单元的物理地址。CPU执行INT21H之后:FAGS、CS、IP的当前值被压栈保护。CPU从4×21H~4×21H+3的单元中取得中断向量并写入IP,
CS之中。CPU根据CS:IP值转向21H型中断服务程序。当中断程序执行完毕,执行IRET指令时,CPU从栈顶顺序弹出保护的断点给IP、CS、FLAGS。CPU根据CS:IP返回断点(NEXT:处),继续执行主程序。3)中断向量表的初始化由BIOS提供的服务程序,其中断向量是在系统加电后由BIOS负责设置。由DOS提供的服务程序,其中断向量是在启动DOS时由DOS负责设置。用户开发的中断服务程序,需要用户设置中断向量。设置中断向量的方法为:直接指令装入例5.3设置类型N的中断向量,其中断服务程序名为:INTHAND。MOVAX,0MOVES,AX;settobaseofinterruptvectorMOVBX,N﹡4;offsetoftypeNinterruptMOVAX,OFFSETINTHANDMOVES:WORDPTR[BX],AX;setaddrofMOVAX,SEGINTHAND;INTHANDMOVES:WORDPTR[BX+2],AXINTHAND:
;interruptprocessingroutine
IRET用DOS功能调用(INT21H)设置中断向量25H功能:设置中断向量把由AL指定的中断类型的中断向量放置在中断向量表中预置:
AH=25HAL=中断类型号
DS:DX=中断向量执行:
INT21H35H功能:取中断向量把由AL指定的中断类型的中断向量从中断向量表中取到ES:BX中。预置:
AH=35HAL=中断类型号执行:
INT21H返回时送:
ES:BX=中断向量例5.4使用DOS功能调用存取中断向量。MOVAL,N
;typeNinterruptMOVAH,35;getinterruptvectorINT21HPUSHES;savetheoldbaseandPUSHBX;offsetofinterruptNMOVAX,SEGINTHANDMOVDS,AX;baseofINTHANDinDSMOVDX,OFFSETINTHANDMOVAL,N;typeNMOVAH,25H;setinterruptvectorINT21HPOPDX;restoretheoldoffsetPOPDS;andbaseofinterruptMOVAL,N;typeNMOVAH,25H;setinterruptvectorINT21HRET;return;;interruptprocessingroutineINTHAND:
IRET例5.5实际中断程序结构。实际应用中,为了运行某个应用程序,通常采用替代原来的中断服务程序的办法。为此,应先保存原中断向量的内容,然后接管中断向量使其指向编制的新中断服务程序。最后,在应用程序终止退出前,从变量中获取原中断向量恢复到中断向量表中。具体程序如下:STACKSEGMENTSTACK'STACK’DW128DUP(0)STACKENDS
DATASEGMENT'DATA'INT_SEGDW?;定义变量,以保存中断向量段址INT_OFFDW?;定义变量,以保存中断向量偏移量DATAENDSCODESEGMENT'CODE'ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA;建立数据段址MOVDS,AXMOVAL,N;N为指定中断号MOVAH,35H;获取中断向量INT21HMOVINT_SEG,ES;保存中断向量段址MOVINT_OFF,BX;保存中断向量偏移量CLIMOVAL,N;N为指定中断号MOVAH,25H;设置中断向量MOVDX,SEGINT_PRMOVDS,DX;DS指向新中断向量段址MOVDX,OFFSETINT_PR;
DX指向新中断INT21H;向量偏移量MOVAX,DATAMOVDS,AX;恢复数据段寻址STI;开中断
;主程序主体(略)CLI;恢复中断向量前关中断MOVAL,N;N为指定中断号MOVAH,25H;恢复原中断向量MOVDX,INT_OFF;DX指向原中断向量偏移量MOVBX,INT_SEGMOVDS,BX;DS指向原中断向量段址INT21H
STI;开中断MOVAX,4C00H;主程序终止退出INT21H;返回DOSINT_PRPROCFAR;新中断服务程序STI;入口处开中断PUSH…;保存用到的寄存器PUSH…
中断服务程序主体(略)
POP…
;恢复入口寄存器
POP…MOVAL,020H
;发中断结束命令(EOI)OUT020H,ALIRET;中断返回INT_PRENDP;中断程序结束CODEENDS;主程序结束
ENDSTART内部中断服务程序的编写编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP第1条指令通常为开中断指令STI最后用中断返回指令IRET通常采用寄存器传递参数主程序需要调用中断服务程序调用前,需要设置中断向量利用INTn指令调用中断服务程序例5.6内部中断服务程序编写80H号中断服务程序功能:显示以“0”结尾字符串的功能利用显示器功能调用INT10H字符串缓冲区首地址为入口参数DS:DX(段地址:偏移地址)传递参数数据段
intoff dw? intseg dw? intmsg db‘AInstructionInterrupt!’ db0dh,0ah,0例5.6以“0”结尾回车、换行保存中断向量
movax,3580h int21h movintoff,bx ;保存偏移地址
movintseg,es ;保存段基地址例5.6获取中断向量(DOS功能调用INT21H)功能号:AH=35H入口参数:AL=中断向量号出口参数:ES:BX=中断向量(段地址:偏移地址)设置中断向量pushdsmovdx,offsetnew80hmovax,segnew80hmovds,axmovax,2580hint21hpopds例5.6设置中断向量(DOS功能调用INT21H)功能号:AH=25H入口参数:AL=中断向量号DS:DX=中断向量(段地址:偏移地址)调用中断服务程序;设置入口参数: DS=段地址(已设置)
DX=偏移地址
movdx,offsetintmsg int80h ;调用80H中断服务程序例5.6AInstructionInterrupt!;80H号内部中断服务程序:;显示字符串(以“0”结尾);入口参数:DS:DX=缓冲器首地址
new80h proc
sti ;开中断
pushax ;保护寄存器
pushbx pushsi例5.6进入中断服务程序AInstructionInterrupt!显示字符串
movsi,dxnew1: moval,[si] cmpal,0 jznew2 movbx,0 movah,0eh int10h incsi jmpnew1例5.6AInstructionInterrupt!退出中断服务程序
new2: popsi ;恢复寄存器
popbx popax
iret ;中断返回
new80h endp例5.6AInstructionInterrupt!主程序结束
movdx,intoff movax,intseg movds,ax movax,2580h int21h movax,4c00h int21h例5.6AInstructionInterrupt!5.3中断控制器8259A8259A中断控制器由INTEL公司设计。1片8259A管理8级中断源,多片8259A用级连方式可使管理级别扩充。使用单一+5V电源供电。8259A的内部结构中断请求寄存器(8位)IRR保存8条外界中断请求信号IR0~IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求。中断屏蔽寄存器(8位)IMR保存对中断请求信号IR的屏蔽状态;Di位为1表示IRi中断被屏蔽(禁止);为0表示允许。当IR7~IR0端有多个中断请求同时发生时,由PR判定其最高优先权;在INTA脉冲期间将它置入中断服务寄存器ISR的相应位。优先权判别器(PR)中断服务寄存器(8位)ISR保存正在被8259A服务着的中断状态;Di位为1表示IRi中断正在服务中;为0表示没有被服务。8位双向三态缓冲器,构成8259A与系统数据线的接口。对8259A编程写入的命令字和读出8259A状态信息都是通过它传送。数据总线缓冲器6)读写控制逻辑接收读/写控制信号RD/WR、片选信号CS和端口选择信号A0。一片8259A在系统中占用2个口地址,用地址线A0来选择端口;用高位地址线通过译码产生8259A的片选信号。它有一组命令字(ICW1~ICW4)寄存器和操作字(OCW1~OCW3)寄存器以及相关的控制逻辑。它通过INT端向CPU发中断请求信号,从INTA端接收CPU的中断响应信号,控制8259A进入中断状态。7)控制电路级连缓冲/比较器一片8259A只能接收8级中断,当超过8级时,可用多片8259A级连使用,构成主从结构。可扩充到64级。中断级连方式的连接一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A级连时,主8259A的三条级连线CAS0~CAS2作为输出线,连至每个从8259A的CAS0~CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP/EN在非缓冲方式下,规定该8259A是主片(SP=1)还是从片(SP=0)动画示例8259A的引脚功能D7~D0:
双向数据总线。用于传送控制、状态信息和中断类型号。WR:
写信号。输入,低电平有效。当WR
有效时,若CS也有效,则允许该8259A接收CPU送来的命令字。RD:
读信号。输入,低电平有效。当RD
有效时,且CS也有效,则允许该8259A将状态信息放入数据总线供CPU检测。A0:
8259A只占两个地址,A0与CS一同构成8259A的端口奇/偶地址选择。CS:
片选信号。输入,低电平有效。有效时,CPU可对该8259A进行读写。与处理器接口引脚的逻辑功能
A0RD*WR*CS*功能
0100110000101010×110×××1写入ICW1、OCW2和OCW3写入ICW2~ICW4和OCW1读出IRR、ISR和查询字读出IMR数据总线高阻状态数据总线高阻状态IR7~IR0:
外部中断请求信号。输入。INT:中断请求信号。输出。当IR7~IR0任一引脚有中断请求时,8259A从INT向CPU(通常是INTR引脚)发出中断请求信号。INTA:中断响应信号。输入。当CPU接收到中断请求信号,在允许中断条件下,CPU响应中断,并发出中断响应信号到INTA端。CAS2~CAS0:
级连信号。双向引脚。用于控制多片8259A的级连使用。主片:CAS2~CAS0引脚输出;从片:CAS2~CAS0引脚输入。
SP/EN:
双功能引脚。当该8259A处于缓冲方式时,该引脚输出,它用于总线收发器的使能信号;当该8259A处于非缓冲方式时,该引脚输入,SP=1表示该片是主片,SP=0表示该片是从片。8259A的中断过程CAS0~CAS2D0~D7SP/ENIR0~IR7CPU响应周期8259A工作波形INT第一个周期T1T2T3T4ALECLK
第二个周期T1T2T3T4第一个前保持为高电平
INTALOCK动画
8259A的中断管理方式中断触发方式电平触发方式当IR7~IR0
出现高电平时,表示有中断请求。这个高电平应持续到8259A收到第一个中断响应脉冲之前。边沿触发方式当IR7~IR0
出现由低电平到高电平的跃变,表示有中断请求。中断屏蔽方式普通屏蔽方式将IMR中某一位或几位置“1”,即可将相应位的中断请求屏蔽。例如,将11110000写入IMR,即可屏蔽IR7~IR4的中断请求,开放
IR3~IR0
的中断。特殊屏蔽方式通常情况下,当一个中断被响应时,禁止同级或较低级别的中断请求。在特殊屏蔽方式下,当一个中断被响应时,仅屏蔽同级别的再次中断,较低或较高级别的中断请求可被允许进入。中断优先级别管理方式完全嵌套方式(固定优先级方式)IR7~IR0的优先级固定,IR0为最高级,IR1次之,IR7为最低级。
CPU响应某一级中断时,8259A将ISR中与该中断源对应的那一位置“1”,并自动禁止通级和较低级的中断请求,但高优先级中断可中断当前的服务,实现中断嵌套。特殊全嵌套方式当CPU正处理某级中断请求时,只禁止较低级别的中断请求,而允许同级或较高级的中断请求进入。特殊全嵌套方式用于多片8259A的级连系统中。主片处于特殊全嵌套方式,可响应来自同一从片的其它中断请求。自动循环方式IR7~IR0中断源轮流为最高优先级,当任一级中断服务结束后,该中断源自动降为最低级,而它的下一级的中断源自动升为最高级。例如:现正为IR3引入的中断服务,若中断服务程序完毕,IR3被赋予最低优先级,IR4被赋予最高优先级,各级中断源的优先级从高到低依次为:IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3。特殊循环方式用户可置优先权命令指定最低优先级。例如:设置IRi为最低优先级,则最高优先级赋予IRi+1,其它各级按循环方式类推。中断结束方式把ISR寄存器的中断服务标志ISRi位清0,这意味着结束第i中断源的中断服务。如何将ISRi位清0,8259A提供了6种中断结束方式。自动EOI方式8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志ISRi位清0。采用这种方式,不需要在中断服务程序中向8259A送中断结束(EOI)命令字。普通EOI方式在中断服务程序结束,执行IRET之前,向8259A送一个“普通中断结束(EOI)”命令字,8259A收到EOI命令字后,把ISR中级别最高的置1位清0。在完全嵌套方式下,应采用普通EOI方式,但在特殊屏蔽方式下不能采用。特殊中断结束方式该种方式下,在中断服务程序结束,执行IRET之前,向8259A送一个“特殊EOI”命令字,可将ISR中指定位清0。自动EOI,优先级循环方式在CPU响应中断,8259A在收到第2个中断响应脉冲信号之后,自动把ISR中置1的最高优先级服务标志ISRi位清0,并完成优先级循环。普通EOI,优先级循环方式在IRi的服务程序结束,执行IRET之前,向8259A送一个“普通EOI,优先级循环方式”命令字,8259A收到EOI命令字后,把ISR中级别最高的置1位清0,同时完成优先级循环。特殊EOI,优先级循环方式当前中断服务结束,执行IRET之前,向8259A送一个“特殊EOI,优先级循环方式”命令字,可将ISR中指定位清0。并完成优先级循环。总线连接方式缓冲方式如果8259A通过总线驱动器和系统数据总线相连,则8259A应采用缓冲方式。此时SP/EN为输出端,它输出一个低电平信号,可作为总线驱动器的启动信号。非缓冲方式如果8259A数据线和系统数据总线直接相连,则8259A应工作于非缓冲方式下。8259A的控制字及编程使用初始化编程8259A开始工作前,必须进行初始化编程给8259A写入初始化命令字ICW中断操作编程在8259A工作期间可以写入操作命令字OCW将选定的操作传送给8259A,使之按新的要求工作还可以读取8259A的信息,以便了解他的工作状态1)初始化命令字ICW初始化命令字ICW最多有4个8259A在开始工作前必须写入必须按照ICW1~ICW4顺序写入ICW1和ICW2是必须送的ICW3和ICW4由工作方式决定ICW1—中断请求触发方式设定ICW1是第一个初始化命令字;ICW1使用偶端口(A0=0);D4位固定为1,表示当前写入的是ICW1;写入ICW1时,自动将中断屏蔽寄存器IMR清0,并恢复各中断源的优先级为IR0最高,IR1次高,IR7最低。ICW1的格式为:写ICW4单片使用无效电平触发特征位16位机无效IC4SNGLADILTIM10000D0D1D2D3D4D5D6D7A0D0(IC4)位:是否写ICW4选择。D0=1,需要写ICW4;D0=0,不写ICW4。D1(SNGL)位:单片多片选择。D1=0,多片级连使用;D1=1,单片使用。D3(LTIM)位:触发方式选择。D3=0,边沿触发;D3=1,电平触发。D7、D6、D5、D24位:8086CPU不用。D4位:特征位。D4=1表示写入ICW1字。ICW2—中断类型号设定ICW2的功能是设置中断类型号;它使用奇端口(A0=1);紧跟在ICW1之后设置;D7~D3(T7~T3)是中断类型号的高5位,用户写入。中断类型号的低3位由8259A自动设定,IR0为000、IR1为001、……、IR7为111;它在第一个INTA到来时,将这个编码写入低3位;D2D1D03位固定写000。16位机无效中断类型号的高5位000T3T4T5T6T71D0D1D2D3D4D5D6D7A0ICW2的格式为:例5.6若对8259A采用电平触发,单片使用,需写ICW4,则程序段为:MOVAL,1BH;ICW1的内容OUT20H,AL;写入ICW1端口(A0=0)
例5.7在PC系列中断系统中,硬盘的中断类型号的高5位是08H,它的中断请求线连到8259A的IR5上,写ICW2字的程序段为:MOVAL,08H;ICW2的内容(中断类型号高5位)OUT21H,AL;写入ICW2端口(A0=1)ICW3中断级连方式设定ICW3仅在多片级连方式中使用;ICW3使用奇端口(A0=1);对于主片8259A,若Si=1,表示IRi引脚上接有从片,否则,Si=0。对于从片8259A,用ID2ID1ID0的编码表示本8259A接在主8259A的哪根引脚上。IR0~IR7对应的编码为000~111。S0/ID0S1/ID1S2/ID2S3S4S5S6S71D0D1D2D3D4D5D6D7A0ICW4结束,嵌套方式设定ICW4使用奇端口(A0=1),它确定中断结束的方式和中断嵌套的方式。ICW4的格式为:μPMAEOIM/SBUFSFNM0001D0D1D2D3D4D5D6D7A0D0(μPM)位:系统选择。D0
=0,用于8085系统;D0=1,用于8086系统D1(AEOI)位:中断结束方式选择。D1=0,普通EOI方式;D1=1,自动EOI方式。D3(BUF)位:缓冲方式选择。D3=1,工作于缓冲方式。D3=0,工作于非缓冲方式;在缓冲方式下,SP/EN引脚输出给总线收发器。此时,由M/S位来定义本8259A是主片或是从片。D2(M/S)位:主/从片选择。当BUF=1时(缓冲方式),D2=0为从片;D2=1表示主片。当BUF=0时,M/S位无意义。D4(SFNM)位:中断嵌套方式选择。D4=0表示普通全嵌套方式;D4=1表示特殊全嵌套方式。D7D6D5=000例5.8多片8259A级连方式连接,从片A和B的中断请求线INT分别接到主片的IR3和IR6,故:从片A的ICW3=00000011B=03H;从片B的ICW3=00000110B=06H;主片的ICW3=01001000B=48H。程序段为从片A:MOVAL,03H;写从片A的ICW3OUT0A1H,AL;ICW3的端口地址(A0=1)从片B:MOVAL,06H;写从片B的ICW3OUT0B1H,AL;
ICW3的端口地址(A0=1)主片:MOVAL,48H;写主片的ICW3OUT81H,AL;ICW3的端口地址(A0=1)例5.9PT86单板机中,CPU为8086,非自动结束方式;使用2片8259A,非缓冲方式;主片为特殊全嵌套方式。主片的ICW4=00010101B=15H;程序段为:MOVAL,15H;ICW4的内容MOVDX,0FFDFH;ICW4的端口地址(A0=1)OUTDX,AL操作命令字8259A工作期间,可以随时接受操作命令字OCWOCW共有3个:OCW1~OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCWOCW1中断屏蔽字它对中断请求输入线IRi进行屏蔽控制,OCW1占用奇地址(A0=1),OCW1格式为:Di(Mi)=1,则IRi位请求被屏蔽;Di(Mi)=0,则IRi位请求被允许。M0M1M2M3M4M5M6M71D0D1D2D3D4D5D6D7A0例.5.10
要使IR3开放,其余均被屏蔽,则OCW1=11110111B=0F7H
;程序段为:MOVAL,0F7HOUT21H,AL;21H是奇端口(A0=1)例5.11IMR寄存器的内容可读出。MOVAL,00;置IMR为全“0”OUT21H,AL;OCW1的口地址INAL,21H;读IMR(奇地址)
ORAL,AL;检查是否为全“0”JNZERR;不为“0”,则转错误处理MOVAL,0FFH;置IMR为全“1”OUT21H,AL;OCW1的口地址INAL,21H;读IMRADDAL,1;检查是否为全“1”JNZERR;不为全“1”,转错误处理OCW2
优先级循环及结束方式操作字OCW2作用是设定8259A的中断优先级循环和结束方式。OCW2占用偶地址(A0=0)。OCW2格式为:L0L1L2000D0D1D2D3D4A0中断等级编码特征位中断结束设定指定中断级别优先级循环EOISLRD5D6D7D7(R):中断优先级循环设定D7=0,固定优先权方式;D7=1,循环方式。D6(SL):中断级别指定D6=0,不指定中断级别,L0~L2编码无效;D6=1,要用L0~L2编码来指定中断优先级。D5(EOI):中断结束命令位当ICW4中的AEOI位=1时,D5=1可使当前ISR寄存器中相应位清“0”。D2D1D0(L2L1L0):中断等级编码。L2L1L0的8种编码:000B~111B分别与IR0~IR7
对应。D4D3:特征位。的D4D3=00表示是OCW2。无操作010置优先权命令011自动EOI循环方式(置位)001自动EOI循环方式(复位)000特殊EOI命令111普通EOI命令101特殊EOI命令110普通EOI命令100意义EOISLR表5.1R,SL,EOI的设置及意义R,SL,EOI不同设置的意义说明编码=001:普通EOI命令。
它在中断服务程序结束时发出,8259A接到该命令后,将当前ISR中优先级最高的置“1”位清“0”。编码=011:特殊EOI命令。当中断处理结束,8259A接收到该命令后,将ISR中由L2L1L0编码指定的相应位清“0”。编码=101:普通EOI循环命令。8259A接收到该命令后,将ISR中优先级最高的置“1”位清“0”,并将刚结束的中断请求IRi赋予最低优先级,把最高优先级赋予IRi+1,其它级别按循环排序。编码=111:特殊EOI命令。8259A接收到该命令后,将ISR中由L2L1L0编码指定的相应位清“0”,并将最低优先级赋予这一中断请求,最高优先级赋予它的下一级中断请求,其它级别按循环方式依次改变。编码=000和100:使8259A取消自动EOI循环方式(复位)和设置自动EOI循环方式(置位)。在自动EOI循环方式下,8259A在接收到中断响应信号后,将ISR中相应位清“0”,并将最低优先级赋予这一中断请求,最高优先级赋予它的下一级中断请求,其它级别按循环方式依次改变。编码=110:向8259A发置优先权命令,将最低优先级赋予由由L2L1L0编码指定的中断请求IRi,其它中断请求的级别按循环方式分别赋给。OCW3查询中断方式和特殊屏蔽方式操作OCW3的端口为偶地址(A0=0),OCW3格式为:读ISR读寄存器允许查询方式特征特殊屏蔽方式特殊屏蔽允许不用RISRRP10SMMESMM×0D0D1D2D3D4D5D6D7A0D4D3=01是OCW3的特征位。D6(ESMM):特殊屏蔽方式允许位。ESMM=0,将SMM位屏蔽,使其无效;ESMM=1,开放SMM位,使其有效。D5(SMM):特殊屏蔽方式设定。当ESMM=1时,若SMM=1,选择特殊屏蔽方式;SMM=0,不选择特殊屏蔽方式。D2(P):查询命令标识位,P=1,告之8259A,CPU将执行一条读中断状态字字指令,并使读其它寄存器命令无效;P=0,不读中断状态字。D1(RR)D0(RIS):读ISR和IRR中的状态信息标识位,仅当P=0时有效。RR=1,RIS=0
表示在下一条“IN”指令时从偶地址(A0=0)读IRR中的状态信息;RR=1,RIS=1
表示在下一条“IN”指令时从偶地址(A0=0)读ISR中的状态信息。RR=0,则RIS位无效。IMR中的信息可直接用“IN”指令从奇地址(A0=1)读出。查询中断方式的说明:当P=1时,表示向8259A发查询命令,可读出中断状态字,了解8259A当前的中断状态。中断状态字的格式为:D7(IR):有无中断请求位。IR=1表示有中断请求;IR=0,表示无中断请求。D2D1D0(W2W1W0):当前正在请求的中断的最高优先级编码:W2W1W0=000~111分别与IR0~IR7
对应。W0W1W2----IR0D0D1D2D3D4D5D6D7A0使用查询中断方式时,CPU应先关闭其中断请求,再发查询命令字(P=1的OCW3),然后用“IN”指令读中断状态字。例5.12若对IR3中断源采用非自动指定(特殊)中断结束方式,则:OCW2=01100011B=63H;程序段为:MOVAL,63H;将OCW2OUT20H,AL;写入偶端口(A0=0)例5.13特殊屏蔽方式的编程。设系统正为IR4服务,同时允许级别较低的中断请求进入。方法:先用特殊屏蔽命令将IR4中断暂时屏蔽,再响应较低级别的中断请求,完成较低级别的中断服务后,解除对IR4的屏蔽,继续为IR4服务。编程:为IR4中断服务程序
CLI;关中断MOVAl,10H;置OCW1的M4=1,屏蔽IR4MOVDX,PORT1;OCW1的口地址(A0=1)OUTDX,ALMOVAL,68H;置OCW3为特殊屏蔽方式MOVDX,PORT2;OCW3的口地址(A0=0)OUTDX,ALSTI;开中断CLI;关中断MOVAL,48H;置OCW3为复位特殊屏蔽方式MOVDX,PORT2
;OCW3的口地址(A0=0)OUTDX,ALMOVAL,00H;置OCW1的M4=0,开放IR4MOVDX,PORT1;OCW1的口地址(A0=1)OUTDX,ALSTIMOVAL,01100L2L1L0
;OCW2
指定中断结束MOVDX,PORT2;OCW2的口地址OUTDX,ALIRET;中断返回例5.14通过OCW3读8259A的状态。读IRR:OCW3=00001010B=0AH读ISR:OCW3=00001011B=0BH编程:MOVAL,0BH;OCW3表示要读ISROUT20H,AL;20H是OCW3的口地址NOP;空拍延时INAL,20H;读ISR的内容(偶地址A0=0)MOVAH,AL;保存ISR→AHORAL,AH;是否为全0?JNZAW_INT;否,转硬件中断程序8259A在IBMPC系列机上的应用(1)
使用要求与特点:采用2片8259A级连,共15级向量中断;从片的INT接到主片的IR2;主从片的中断请求信号均采用边沿触发;采用完全嵌套方式,优先级排序为:0,1,8~15,3,4,5,6,7级;采用非缓冲方式;0~7级对应的中断类型号为8~0FH,8~15级对应的中断类型号为70H~77H。8259A在IBMPC系列机上的应用CAS0~2CAS0~2+5V主8259A8228880286CPUINTRD0~D7SP/ENINTD0~D7日时钟键盘串行口2串行口1并行口2软盘并行口1A0INTR1CS—IRQ0—IRQ1IRQ2—IRQ3—IRQ4—IRQ5—IRQ6—IRQ7—A0—CS
从8259AD0~D7INTSP/EN实时钟改向0AH中断保留保留保留协处理器硬盘保留A0INTR2CS—IRQ8—IRQ9—IRQ10—IRQ11—IRQ12—IRQ13—IRQ14—IRQ15—A0—CS系统总线B25……B24……B23……B22……B21……系统总线B4…D3………D4………D5………D6………D7………INTARDWRINTAIORIOWINTARDWR8259A在IBMPC系列机上的应用(续)CAS0~2
从8259AD0~D7INTSP/EN实时钟改向0AH中断保留保留保留协处理器硬盘保留A0INTR2CS—IRQ8—IRQ9—IRQ10—IRQ11—IRQ12—IRQ13—IRQ14—IRQ15—A0—CS系统总线B4…D3………D4………D5………D6………D7………INTARDWR对比在IBMPC/XT机的应用(2)
硬件连接图(3)初始化编程;初始化8259A主片:(流程)INTA00EQU020H;8259A主片端口0INTA01EQU021H;8259A主片端口1MOVAL,11;ICW1:边沿触发、多片、写ICW4OUTINTA00,ALJMPSHORT$+2;端口延时要求MOVAL,8;ICW2:中断类型号的高5位OUTINTA01,ALJMPSHORT$+2;端口延时要求MOVAL,04H;ICW3:主片的IR2上接从片OUTINTA01,AL;(S2=1)JMPSHORT$+2;端口延时要求MOVAL,01H;ICW4:非缓冲,全嵌套OUTINTA01,AL;非自动结束;初始化从片:INTB00EQU0A0H;8259A从片端口0INTB01EQU0A1H;8259A从片端口1
MOVAL,11;ICW1:边沿触发、多片、写ICW4OUTINTB00,ALJMPSHORT$+2;端口延时要求MOVAL,70H;ICW2:中断类型号的高5位OUTINTB01,ALJMPSHORT$+2;端口延时要求MOVAL,02H;ICW3:从片的INT接主片IR2OUTINTB01,AL;(ID2ID1ID0=010)JMPSHORT$+2;端口延时要求MOVAL,01H;ICW4:非缓冲,全嵌套OUTINTB01,AL;非自动结束外部中断服务程序编写外部可屏蔽中断服务程序,需注意:发送中断结束命令一般只能采用存储单元传递参数不要使用DOS系统功能调用中断服务程序尽量短小编写主程序,需注意:修改中断向量控制CPU的中断允许标志设置8259A的中断屏蔽寄存器例5.16可屏蔽中断服务程序8259A的IRQ0(向量号为08H)中断请求来自定时器8253,每隔55ms产生一次本程序的08H号中断服务程序,每次中断显示一串信息,显示10次用内存单元(共享变量)在主程序与外部中断服务程序之间传递参数:中断次数显示信息也安排在共同的数据段中数据段
intmsg db‘A8259AInterrupt!’ db0dh,0ah,0 counter db0例7.2保存中断向量
movax,3508h int21h pushbx ;保存偏移地址
pushes ;保存段基地址例5.18设置中断向量
cli pushds movdx,offsetnew08h movax,segnew08h movds,ax movax,2508h int21h popds例5.16设置中断寄存器
inal,21h pushax andal,0feh ;允许IRQ0 out21h,al movcounter,0 ;设置中断次数初值
sti ;开中断例5.16循环等待中断
start1: cmpcounter,10 jbstart1 ;中断10次退出例5.16中断就在主程序循环当中
new08h proc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 等级保护三级相关要求
- 股权转让协议书范本 格式 样本 样式 协议
- 住宅租赁合同撰写指南
- 员工专业技能培训合同
- 2024年委托贷款协议合同
- 出口代理协议范本模板
- 个人融资协议书合同范本撰写指南
- 2024年简单店面租赁合同2
- 简单版货物运输合同范本
- 工程合同书2024新版本
- 2024-2025学年八年级上学期地理期中模拟试卷(湘教版+含答案解析)
- 期中测试(二)-2024-2025学年语文六年级上册统编版
- 期中 (试题) -2024-2025学年译林版(三起)英语四年级上册
- 2023年重大事故隐患排查会议纪要
- 《夏天里的成长》说课稿 省赛一等奖
- 公务员申论答题标准格子纸版A4打印版
- SL/T212-2020 水工预应力锚固技术规范_(高清-有效)
- 行政法对宪法实施的作用探讨
- 重拾作文ppt课件
- (整理)直流DF0241-JC-DL用户手册
- B2B第三方电子商务平台——基于环球资源网模式分析
评论
0/150
提交评论