汇编语言程序设计(十五)外中断
引言
-
CPU可以通过指令在内部进行各种运算,但CPU除了有运算能力外,还要有IO能力,即对外部设备进行控制,接收输入,进行输出。
-
CPU与外设要通过接口进行交流,即IO操作。接口有两种类型,一种是控制器,一种是适配器。控制器即IO设备本身或主板上的芯片组,比如磁盘控制器和USB控制器。适配器则是我们俗称的各种卡,比如图像适配器,即显卡,网络适配器,即网卡。
-
这些控制器或适配器芯片的内部都有若干寄存器,CPU即将这些寄存器当作端口来访问。
-
外设的输入不直接送入内存和CPU,而是送入相关接口芯片的端口中。
-
CPU向外设的输出也不是直接送入外设,而是先送入端口,再由相关芯片送到外设。
-
CPU还可以向外设发出控制命令,这些控制命令也先送到相关接口芯片的端口中,然后由相关芯片根据命令对外设实施控制。
-
即CPU是通过端口与外设进行联系的。
-
CPU可以检测到外设发过来的中断信息,引发中断过程,来处理外设的输入。
外中断
外中断与内中断
- 内中断是指CPU内部发出的中断,外中断是指CPU外部,即外设发出的中断。
- 内中断的中断类型码是在CPU内部产生的,外中断的中断类型码是通过数据总线送入CPU的。
外中断源
- 外中断源可分为两类,即可屏蔽中断和不可屏蔽中断,可屏蔽中断是CPU可以不响应的外中断,大部分外中断都是可屏蔽的。不可屏蔽中断必须响应,即当CPU检测到不可屏蔽中断信息后,在执行完当前指令之后,必须立即响应,引发中断过程。
- CPU用标志寄存器的IF位来决定是否响应一个可屏蔽中断。即:
![]()
- 注意,CPU要先执行完当前指令才会去响应中断,但是在设置栈段寄存器和栈偏移寄存器时,执行完当前指令给ss赋值以后不会去响应中断,而是要等到sp寄存器也赋值完成后才会响应中断。
- 对于8086CPU,不可屏蔽中断的中断类型码固定为2,所以中断过程中,不需要取中断类型码。
标志寄存器IF位
- 前面内中断部分,中断过程中有一步时讲IF设置为0,这样做的目的是在进入中断处理程序后禁止其它的可屏蔽中断。
- sti指令用于讲IF置为1,cli指令用于将IF位置为0。

浙公网安备 33010602011771号