编辑: huangshuowei01 | 2017-10-14 |
一、除法中断 当进行除法运算时,若除数为0或除数太小,使得商数大于相应寄存器所能表示的最大值,被称作除法出错.这时除法指令就相当于一个中断源,它向CPU发出类型0中断. 9.4 8086中断系统 9.4.3 软件中断
二、溢出中断 当算术运算产生溢出时,将在INTO指令控制下向CPU发出类型4的中断,即溢出中断. 比如mov al,40hadd al,40hinto 9.4 8086中断系统 9.4.3 软件中断
三、单步中断和断点中断(1)单步中断 当8086CPU的标志寄存器中的TF标志为1时,8086CPU处于单步工作方式,这时CPU在每条指令执行后自动产生类型l的中断. TF在标志寄存器的第8位.(2)断点中断 INT3指令是1字节指令(0CCH), 如何实现断点调试? 9.4 8086中断系统 9.4.3 软件中断
四、软中断 软中断是由中断指令引起的.中断指令的指令格式为 INT n (CD 21),操作数n就是中断类型号.当CPU执行完毕中断指令INT n后,就会立即产生一个中断类型号为n的中断. int n ?call far [4*n] 9.4 8086中断系统 9.4.4 中断概念的再讨论
一、中断与调子程序之间的关系
1、中断过程实际上是CPU从执行当前主程序转到执行为外设服务的子程序,因此从这个角度来看,是中断过程一个调用子程序的过程.
2、但中断过程与子程序调用还是有很大差别的,比如首先调用子程序的过程是一个无条件过程,但中断过程的中断服务程序的调用一般是有条件的.其次子程序调用在整个程序执行中的位置是固定的.但对于硬件中断过程,只要条件满足,在整个程序执行的任意一时间点都有可能发生从主程序向中断服务子程序的转移事件,也就是说硬件中断产生的调用过程是随机的,不可预测的. 9.4 8086中断系统 9.4.4 中断概念的再讨论
二、外部中断和 INT n 之间的关系 结合中断指令INT n,我们可以这样理解外部中断:当外部中断源发中断给CPU时,如果CPU满足一定的条件,处于开中断状态,CPU就可以响应中断,这时外设在CPU正在执行指令与其下一个指令之间,等效 插入 了一个INT n指令,这里的n就是外设提供的中断类型号.注意这里用 等效 两字表示实际过程中是不存在插入INT n指令的操作,但CPU确实完成了类似INT n指令的功能,实现了主程序向中断程序的转移. ……MOV AL,10MOV BX,100……MOV BL,100ADD AL,BL…… INT n INT n 9.5 8086CPU的中断管理 9.5.1 8086CPU的中断处理顺序8086CPU的中断优先权排列从高到低为:
1、除法出错中断,溢出中断,INT n;
2、NMl;
3、INTR;
4、单步中断. 9.5 8086CPU的中断管理 9.5.2 8086CPU的中断服务入口地址表已知中断程序int_proc和中断类型号nint_proc far push … iretint_proc endp CPU 中断类型号n ? 9.5 8086CPU的中断管理 9.5.2 8086CPU的中断服务入口地址表已知中断程序int_proc和中断类型号nint_proc far push … iretint_proc endp CPU 中断类型号n 把地址int_ proc放到4*n地址 9.5 8086CPU的中断管理 9.5.2 8086CPU的中断服务入口地址表 9.5 8086CPU的中断管理 9.5.3 中断入口地址设置
一、用串指令 CLI;
关中断MOV AX,0MOV ES,AX;
置附件段基地址为0MOV DI, n*4;
置附件段偏移地址到DIMOV AX,OFFSET INT_VCE;
置中断程序首地址的偏移量到AXCLDSTOSW;
填偏移量到中断地址表MOV AX, SEG INT_VCE;
置中断程序的段基地址到AXSTOSW;
填段基地址到中断地址表STI;
开中断 …… 9.5 8086CPU的中断管理 9.5.3 中断入口地址设置