汇编——第十二章 内中断
第十二章 内中断
12.1 内中断的产生
CPU内部有下面的情况发生的时候,将产生生相应的终端信息。
(1)除法错误,比如,执行div指令产生的除法溢出;
(2)单步执行;
(3)执行into指令;
(4)执行int指令。
在8086 CPU中,上述4种中断信息的来源,简称中断源,在8086CPU 中的中断类型码如下。
分别为(1)0(2)1(3)4(4)n,int 指令的格式为int n,指令中的n为字节型立即数,是提供给CPU的中断类型码。这个n最大为255。
12.2 中断处理程序
CPU在收到中断信息后,就要转去执行中断信息的处理程序,需要找到相应的CS和IP,而中断类型码可以在中断向量表中找到一个地址,这个地址存储了相应的CS和IP。
12.3 中断向量表
12.4 中断过程
12.5 中断处理程序和iret指令
12.6 除法错误中断的处理
除法中断是0号中断。对于下面程序,1000h除以1得到1000h,可知是8位除法,商1000h存放在al中,发生溢出,产生0号中断。
12.7 编程处理0号中断
我们现在考虑一下改变0号中断吃力程序的功能,功能是在屏幕中间显示“overflow!”,然后返回操作系统。
12.8 安装
可以使用movsb指令,将do0的代码送入0:200处。程序如下
12.9 do0
首先我们看下面的程序,这个程序是不对的
最后的就是设置中断向量了。