本篇文章,是实模式学习的结尾。在经过了那么多坎坷,终于学完了8086的实模式!!!最重要的是本篇文章没有汇编代码,只讲原理~~ 今天的内容比较简单,学习一下中断的原理-包括硬中断和软中断。主要理解以下内容:
1、硬中断硬中断一般是外部硬件中断-就是从处理器外部来的中断信号。 当外部设备发生错误或者有数据要传送时,或者处理器交给它的任务处理完了,它都会向处理器发送信号,高速处理器。 如下图,外部硬件中断是通过两个信号线引入处理器内部的。这两根线的名字恩别叫做NMI和INTR 当一个中断发生时,处理器将会通过中断引脚NMI和INTR得到通知。除此之外,处理器还需要知道发生了什么,以便采取适当的处理措施。 每种类型的中断都被统一编号,这称为中断类型号、中断向量或者中断号。 1.1 非屏蔽中断(不可屏蔽中断)NMI接收的是不可屏蔽中断。 不可屏蔽中断的中断号统一为2(因为所有不可屏蔽中断都几乎是致命的无法解决,所以处理器干脆不处理的,统一将他们的中断号令为2,处理器接收到2号中断时直接放弃继续正常工作,也不会试图纠正已经发生的错误。)。 1.2 可屏蔽中断和NMI不同,INTR一般接收的是可屏蔽中断。大多数的中断也是可屏蔽中断。 INTR接收可屏蔽中断。 Intel处理器允许有256个中断。中断号是0~255。如下图是一个中断控制器,它管理传送来的中断信号,决定是否将中断传送给CPU。 那么在哪里屏蔽中断或者不屏蔽中断呢?实际上有两个位置,一个是8259内部,一个是处理器内部。 **8259内部:**在8259内部有一个中断屏蔽寄存器,这是个8位寄存器,对应着该芯片的8个输入引脚,对应的位是0还是1决定了该引脚输入的中断是否能通过8259芯片。0表示允许 1表示阻断 **处理器内部:**除了要看8259内部,最终还要看处理器。处理器内部的标志寄存器FLAGS有一个标志IF。这是中断标志。当IF为0时所有从INTR来的中断都被忽略。当IF为1时处理器可以接收和相应中断。 1.3、实模式下中断向量表所谓中断处理,就是处理器要执行一段与该中断有关系的程序(指令)。处理器可以识别256个中断,那么理论上就需要256个中断程序。 这些程序的实际位置并不重要,重要的是,在实模式中,处理器要求将它们的入口点(还记得程序的入口点么?不记得话看上一篇文章)集中存放到内存中的从物理地址0x00000处(0x0000:0x0000)到0x003ff处(0x0000:0x03ff)。共1KB的内存空间。这就是所谓的中断向量表。 如下图是实模式下的中断向量表: 中断信号来自哪个引脚,8259芯片是最清楚的,所以他会把相应的中断号告诉处理器,处理器拿着这个中断号,要顺序做以下几件事:
2、软中断和硬件中断不同,软中断是处理器内部产生的。是由执行指令引起的。 软中断是由int指令引起的。这类中断不需要中断识别总线周期,中断号在指令中给出。 3、总结今天学会了以下内容:
笔记记得不是很全,如果有不懂的可以加我联系方式一起交流。 |
|