第12章 内中断

中断信息:CPU不再接着向下执行,而是转去处理这个特殊信息。

它可以来自于CPU内部和外部。

12.1内中断的产生

当CPU发生以下情况时将产生中断信息:

1、出发错误。

2、单步执行。

3、执行int0指令。

4、执行int指令。

8086CPU用成为中断类型码的数据来标识中断信息的来源。

中断类型码共有8位,能表示28=256种不同的中断来源。

中断的来源简称中断源。

12.2中断处理程序

用来处理终端信息的程序被称为中断处理程序。

12.3中断向量表

CPU用中断类型码通过中断向量表查找中断程序的入口地址,其实中断向量表也就是中断程序的入口地址列表。

在8086PC中,中断向量表的位置固定,都是从0x0到0x03E8,它以字为单位,高字存放段基址,低字存放偏移地址。

12.4中断的过程

就是根据中断向量表调整CS和IP找到中断处理程序入口的过程。

这一过程在P238到P239有简要介绍。

12.5中断处理程序

中断处理程序的处理过程如P239页所显示的那样。

在这里,IRET的作用就是恢复中断处理前的CPU现场。

IRET:Interrupt Return,中断返回指令。

它的功能可以描述为:

POP IP

POP CS

POPF

12.8安装

汇编编译器可以处理算术运算符,比如减号。

MOV

AX,8-4就等同于MOV AX,4。

此外,汇编编译器还可以处理表达式,比如:

MOV

AX,(5+3)*5/10等同于MOV AX 4。

12.11单步中断

TF(Trace

Flag):跟踪标志位。

如果CPU检测到TF为1就会执行中断。

单步中断的类型码为1,它是一种调试的手段,也是CPU提供的一种功能,它能暂时停止CPU的工作,显示各寄存器的状态并让CPU转去中断处理。

不过在中断处理之前,它必须要让TF=0,否则如果TF一直为1的话,CPU将一直循环处理中断,这就陷入了死循环。

P249描述了它所引发的中断过程。

12.12响应中断的特殊情况

有时候CPU遇到中断也不响应。

书中举了SS:SP的例子。

向SS中输入数据以后会产生中断,但是CPU不会响应。这是因为中断必须保存现场,就必须要把CS和IP中的值压栈,此时虽然SS做了相应的调整但是SP却没变,那么SS:SP就会指向错误的栈顶。

所以想此种情况的中断CPU是不会响应的。

你可能感兴趣的:(第12章 内中断)