汇编语言笔记11

内中断

中断的类型

CPU可以在执行完当前指令后,检测到从外部发送过来或从内部产生的一种特殊信息,并立刻对接收到的信息进行处理。这种特殊的信息称 中断信息。

中断的意思是:CPU不接着(刚执行完的指令)向下执行,转而去处理这个特殊的信息

中断的类型:

  • 内中断:CPU内部事件引起的中断
  • 外中断:外部设备事件引起的中断

8086CPU内部产生的中断信息

  1. 除法错误,中断类型码为0
  2. 单步执行,中断类型码为1
  3. 执行into指令,中断类型码为4
  4. 执行int n指令,n为中断类型码

中断处理程序和中断向量表

根据CPU的设计,中断类型码的作用就是定位中断处理程序。CPU通过中断类型码从中断向量表中找到对应的中断处理程序的入口地址

中断向量表:

  • 中断向量表在内存中保存,存放着256个中断源对应的中断处理程序入口。
  • 每个中断由IP(占两个字节)和CS(占两个字节)组成。CS存在高地址,IP存在低地址,即一个表项占两个字
  • 每个中断对应的中断类型码N,IP=N X 4,CS=N X 4+2
  • 从内存的0000:0000到0000:03FF的1027个单元中存放中断向量表

中断过程

中断过程由CPU自动完成,其主要步骤有:

  1. 从中断信息中获取中断类型码
  2. 标志寄存器的值入栈
  3. 设置标志寄存器中的TF=0(单步中断),IF=0(屏蔽其他中断)
  4. CS内容入栈
  5. IP内容入栈
  6. 从中断向量表中:CS=N X 4 +2,IP=N X 4设置CS和IP
  7. 开始执行中断处理程序

中断处理程序和iret指令

中断处理程序的编写方法:

1.保存用到的寄存器

2.处理中断

3.恢复用到的寄存器

4.用iret指令返回

iret通常和硬件自动完成的中断过程配合使用。中断过程中,寄存器入栈顺序是标志寄存器、CS、IP,则恢复的顺序是IP、CS、标志寄存器