汇编语言(6)——内中断

任何一个通用的CPU,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊消息,并且可以立即对所接收到的信息进行处理。这种特殊的消息,我们可以称之为中断消息中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊消息。
对于8086CPU,当CPU内部有下面的情况发生的时候,将产生相应的中断信息

  • 除法错误
  • 单步执行
  • 执行into指令
  • 执行int指令
    8086CPU用中断类型码来标识中断信息的来源,中断类型码是一个字节型数据,可以表示256种中断信息的来源。

中断处理程序

CPU 收到中断信息后,需要对中断信息进行处理。而如何对中断信息进行处理,可以由编程决定,一般来说,不同的中断信息由不同的处理程序。
CPU 用8位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址,中断向量就是中断处理程序的入口地址。中断向量表存在于内存中,8086CPU而言,0000:0000-0000:03FF的1024个单元存放了中断向量表。

中断过程

用中断类型码设置找到中断向量,并用他设置CP和IP,这个工作是有CPU的硬件自动完成的。CPU硬件完成这个工作的过程被称为中断过程。
8086CPU在收到中断信息后,中断过程如下:

  1. 从中断信息中取得中断类型码
  2. 标志寄存器的值入栈(因为在中断过程中会改变标志寄存器的值,所以先将其保存在栈中)
  3. 设置标志寄存器的第8位TF和第9位IF的值为0
  4. CS的内容入栈
  5. IP的内容入栈
  6. 从内存地址为中断类型码4和中断类型码4+2的两个字单元中读取中断处理程序的入口地址设置IP和CS
    用代码表示的过程如下:
  • 取得中断类型码N
  • pushf
  • TF0,IF=0
  • push CS
  • push IP
  • (IP) = (4N), (CS)=(4N+2)
    最后一步完成,即 中断过程完成后,CPU开始执行由程序员编写的中断处理程序。注意该过程由硬件自动执行,程序员无法改变。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值