您好,欢迎访问一九零五行业门户网

中断传送方式

一、中断的概念 1.中断:一种使cpu中止正在执行的程序而转去处理特殊事件的操作。
2.中断源:引起中断的事件。
(1)内部中断源,由程序中安排的中断指令int产生的中断,或由cpu的某些错误操作结果产生的中断。
① 溢出中断指令 into
② 中断指令int n产生的中断
③ cpu错误引起的中断
④ 为debug设置的中断:单步中断,断点中断
(2)外部中断源
由外部设备随机引起的一般由中断控制器控制的中断或某些处理器(8087/80287)引起的中断。
二、80x86 cpu的中断源.
如下图所示。
三、8086的中断分类
1.软件中断(内中断)
1)中断指令int引起的中断:cpu执行完一条int n (n不能为0、1、2、4的类型号)指令后,会立即产生中断,并且调用系统中相应的中断处理程序来完成中断功能。
2)处理cpu某些错误的中断(为处理运算结果的错误而设置)
3)除法错中断:中断类型为0。又称为除数为0中断。
4)溢出中断:中断类型为4。用into指令来中断发生溢出的算术操作,并把控制交给操作系统(此时要求of=1并执行into指令)。如果未发生溢出,此时of=0,则into不会引起中断,继续执行下面的一条指令。
5)为调试程序(debug)设置的中断
单步中断:当标志位tf置为1时,每条指令执行后,cpu自动产生类型1的中断——单步中断。
断点中断:中断类型为3。通常调试程序时,把程序按功能分成几段,然后每段设一个断点。当cpu执行到断点时便产生中断,这时程序员可以检查各寄存器及有关存储单元的内容。
软终端过程
2.硬件中断(外中断):外中断来自处理机的随机发生的外部条件。
外中断源:有非屏蔽中断(nmi脚)和可屏蔽中断(intr脚)两大类。
外中断与cpu的连接
非屏蔽中断接至8086/8088 cpu的nmi脚(17脚)。
可屏蔽中断通过8259a可编程中断控制器接至8086/8088 cpu的intr脚(18脚)。
3.cpu响应可屏蔽外中断(intr)的条件
if=1才响应intr请求的中断。
intr未被8259a的中断屏蔽寄存器(imr)屏蔽。
imr的i/o端口地址为21h。其8位对应8个外设的中断请求。
某位为0允许该外设中断,某位为1则禁止该外设中断。
4.cpu响应非屏蔽外中断(nmi)是无条件的。该中断类型号为2。
8259a的中断结束命令eoi及中断命令寄存器(ocw2)
8259a的中断命令寄存器的端口地址为20h。其内容为:
中断结束命令eoi是使8259a的中断命令寄存器的第5位(eoi位)置1,清除当前中断服务寄存器isr中对应的isn位,以告诉8259a该中断已结束。
四、中断向量表
1.中断类型号:每个中断都被安排一个以示区别的8位的类型编号称为中断类型号。80x86中断系统能处理256种类型的中断,类型号为0~0ffh。
2.中断向量表:各个中断类型的处理子程序的入口地址表。存放于00000~003ffh的1kb单元中。低两位字节存放中断处理程序的偏移地址,高两位存放段地址。每个类型的中断向量地址占用4个字节的存储单元。
3.内部中断的操作步骤
(1)取中断类型号;
(2)计算中断向量地址;
(3)取中断向量:偏移地址→(ip),段地址→(cs);
(4)转入执行中断处理程序;
(5)中断返回到int指令的下一条指令。
4.设置中断向量:在检查或设置任何中断向量时,总是避免直接使用中断向量的绝对地址,而是使用dos系统功能调用(21h)存取中断向量。
1)设置中断向量:把由al指定的中断类型的中断向量ds:dx放置到中断向量表中。
预置:ah=25h
al=中断类型号
ds:dx=中断向量
执行:int21h
2)取中断向量:把由al指定的中断类型的中断向量从中断向量表中取到es:bx中。
预置:ah=35h
al=中断类型号
执行:int21h;中断向量作为出口信息已在es:bx中
5.中断过程:当中断发生时,由中断机构自动完成下列动作:
(1)取中断类型号n
(2)标志寄存器(flags)内容入栈
(3)当前代码段寄存器(cs)内容入栈
(4)当前指令计数器(ip)内容入栈
(5)禁止外部中断和单步中断( if=0,tf=0 )
(6)从中断向量表中取(4×n)中的字节内容送ip,取(4×n+2)中的字节内容送cs
(7)转中断处理程序。中断处理程序需注意:
1)如在执行中断处理程序中还允许中断,可用sti置if=1来开中断;
2)注意保护现场和恢复现场;
3)中断处理程序返回时使用iret指令。
6.中断优先级和中断嵌套
2)ibm pc的可屏蔽中断(intr)的优先级由高到低为:ir0,ir1,ir2,ir3,ir4,ir5,ir6,ir7。但是可以由8259a的中断命令寄存器(ocw2)的最高两位d7、d6位
3)置为循环的优先级。
4)中断嵌套:正在运行的中断处理程序又被中断称为中断嵌套。
一般是高级中断嵌套低级中断,此时要求低级中断的处理程序中要有开中断指令sti。被同级或低级中断源嵌套,除了使if=1外,还要求向8259a发中断结束命令eoi。
7.中断处理程序
1)中断准备:在主程序中设置。
设置中断向量
设置设备的中断屏蔽位
设置cpu的中断允许位if (开中断)
2)中断响应:由硬件自动完成。
外设接口送中断请求给cpu
当前指令执行完后,cpu送中断响应信号给外设接口
cpu接收中断类型号
当前的flags,cs和ip保存入栈
清除tf和if
中断向量送ip和cs
3)中断处理程序的编写方法与标准子程序类似,编写步骤如下:
保护现场,即保存寄存器内容
如允许中断嵌套,则开中断(sti) 使if=1
处理中断内容
关中断
送中断结束命令(eoi)给8259a的中断命令寄存器(ocw2)以清除8259a的isr中对应的isn位
恢复现场,即恢复寄存器的内容
返回被中断的程序(iret,中断返回)
其它类似信息

推荐信息