本帖最后由 highgear 于 2011-10-31 21:49 编辑
我们的刘前辈的理解力......:o
8051不是向量中断,这点毋庸置疑。先看看什么是中断向量:
http://en.wikipedia.org/wiki/Interrupt_vector
An interrupt vector is the memory address of an interrupt handler, or an index into an array called an interrupt vector table that contains the memory addresses of interrupt handlers. When an interrupt is generated, the processor saves its execution state via a context switch, and begins execution of the interrupt handler at the interrupt vector.
向量中断,又称矢量中断,向量矢量具有方向性。向量中断的意思是指这类中断具有指向性,即中断可以被设置指向不同的中断服务地址。
8051的中断服务程序的地址是固定的,换句话说,cpu 知道中断地址,例如 03, 0B等, cpu 从03, 0B等取出的是指令。只是由于8051的中断服务之间的指令间隔很短,所以一般用指令跳转。
8086则不同,cpu 并不知道中断服务程序的地址, cpu 只是从内存某个特定的位置取出中断服务程序的地址,然后从取出的地址出运行中断程序。这种方法, 可以轻易灵活地控制中断去向。
用一个类比: 8051的中断是直接调用,而8086的向量中断可类比通过函数指针进行间接调用。 |