汇编------中断
程序员文章站
2022-06-08 22:57:55
...
中断信息分为CPU的内部信息(内中断)和外部信息(外中断)
内中断的产生
1. 除法错误,比如执行div指令产生的除法溢出
2. 单步执行
3. 执行into指令
4. 执行int指令
8086用中断类型码的数据来标识中断信息的来源,上述4种中断源,在8086CPU中的中断类型码如下
1. 除法错误:0
2. 单步执行:1
3. 执行into指令:4
4. 执行int指令: n (指令格式:int n)
中断向量表,存放着256个中断源所对应的中断处理程序的入口,8086的中断向量表放在内存地址0处
内存0000:0000到0000:03FF的1024个单元中存放着中断向量表
《汇编语言-王爽》12章例题
1.用Debug查看内存,情况如下:
0000:0000 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则3号中断源对应的中断处理程序的入口地址为 0070:018B
解析:一个中断占两个字单元,高地址字段存段地址,低地址字段存偏移地址,小端存储
2.存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为: N*4
存储N号中断源对应的中断程序处理程序入口的段地址内存单元的地址为: N*4+2
中断过程:
1. 取得中断类型码N
2. pushf(标志寄存器值入栈)
3. TF=0,IF=0
4. push CS
5. push IP
6. (IP)=(N*4), (CS)=(N*4+2)
中断处理程序的编写方法:
1. 保存用到的寄存器
2. 处理中断
3. 恢复用到的寄存器
4. 用iret指令返回
iret指令的功能用汇编语法描述为
pop IP
pop CS
popf
int指令:
CPU执行int n指令,相当于引发一个n号中断的中断过程