8086汇编学习笔记9-中断

来源:互联网 发布:python game engine 编辑:程序博客网 时间:2024/06/09 17:02

中断信号可以来自CPU内部或外部。

 

一. 8086CPU内部中断信号有

(1) 除法错误

(2) 单步执行

(3) 执行into指令

(4) 执行int指令

1. 中断码

8086用一个字节来描述中断码,可以表示256中不同的中断信息。

除法错误中断码为0

单步执行中断码为1

执行into指令中断码为4

执行int n指令中断码为n

2. 中断向量表

用来存放中断码对应中断处理程序的入口地址,一个地址包括段地址和偏移地址,高地址存放段地址,低地址存放偏移地址,需要四个字节来存储中断处理程序的入口地址,256个中断信号处理程序需要1024个字节来存储。8086CPU中断向量表存放在0地址处开始的1024个存储单元中,地址为0000:0000~0000:

03fff。

3. 中断处理程序

CPU在接收到中断信号后,停止当前正在执行的程序,跳转到由中断号对应的中断向量表地址处,去执行中断处理程序。

4. 中断过程(硬件自动完成)

(1) 由中断信息得到中断码

(2) 标志寄存器入栈

(3) 设置标志寄存器TF和IF为0

(4) cs入站

(5) ip入站

(6) 用中断向量表中地址设置cs和ip

5. 而iret指令是ip出栈,cs出栈和标志寄存器出栈

自己编写中断处理函数,只需要将中断处理函数的地址存放到相应的中断向量表处,然后调用iret指令返回。

6. 单步中断,CPU在执行完一条指令后,如果检测到标志寄存器TF位为1,则产生单步中断,触发中断过程。

7. int指令,直接触发一个n号中断

内部中断也就是通常所说的软中断。

 

二. 8086CPU外部中断,也就是通常所说的硬中断,理解什么是软中断什么是硬中断,就看是否是由电平信号去触发中断过程。

1. 可屏蔽中断,CPU根据标志寄存器IF位决定是否响应中断,IF=1,响应中断,IF=0,不响应中断。

2. 不可屏蔽中断,CPU必须响应中断。
原创粉丝点击