汇编内中断

本文详细介绍了汇编语言中的内中断,包括内中断的产生、中断处理程序、中断向量表、中断过程,以及iret指令。讨论了除法错误中断、单步中断的处理,讲解了int指令的使用,并阐述了BIOS和DOS如何提供中断例程。通过实验和编程示例,帮助读者深入理解内中断的工作原理和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内中断


1.内中断的产生

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

  1. 中断信息可以来自CPU的内部和外部(内中断,外中断)
  2. 内中断:当CPU的内部有需要处理的事情发生的时候,将产生中断信息,引发中断过程。这种中断信息来自CPU的内部

8086CPU的内中断(下面四种情况将产生中断信息):

  1. 除法错误,比如,执行div指令产生的除法溢出
  2. 单步执行
  3. 执行into指令
  4. 执行int指令

中断信息中包含中断类型码,中断类型码为一个字节型数据,可以表示256种中断信息的来源(中断源)

上述的4种内中断源,在8086CPU中的中断类型码如下:

  1. 除法错误:0
  2. 单步执行:1
  3. 执行into指令:4
  4. 执行int指令,该指令的格式为int n,指令中的n为字节型立即数,是提供给CPU的中断类型码

2.中断处理程序、中断向量表、中断过程

中断处理程序:

  1. 用来处理中断信息的程序被称为中断处理程序
  2. 根据CPU的设计,中断类型码的作用就是用来定位中断处理程序。比如CPU根据中断类型码4,就可以找到4号中断的处理程序

中断向量表:

  1. 中断向量就是中断处理程序的入口地址。中断向量表就是中断处理程序入口地址的列表
  2. CPU用8位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址

请添加图片描述

中断过程:

  1. 中断过程的主要任务就是用中断类型码在中断向量表中找到中断处理程序的入口地址,设置CS和IP
  2. 简要描述如下:
    1. 取得中断类型码N
    2. pushf
    3. TF=0,IF=0 (为什么这样参考单步中断)
    4. push CS , push IP
    5. (IP)=(N * 4),(CS)=(N * 4 + 2)
  3. 硬件在完成中断过程后,CS:IP将指向中断处理程序的入口,CPU开始执行中断处理程序

3.iret指令

CPU随时都可能执行中断处理程序,中断处理程序必须一直存储在内存某段空间之中,而中断处理程序的入口地址,即中断向量,必须存储在对应的中断向量表表项中

中断处理程序的常规编写步骤:

  1. 保存用到的寄存器
  2. 处理中断
  3. 恢复用到的寄存器
  4. iret指令返回

iret 指令描述为:pop IP pop CS popf

iret指令执行后,CPU回到执行中断处理程序前的执行点继续执行程序


4.除法错误中断的处理

mov ax, 1000h 
mov bh, 1
div bh ;除法溢出错误
  1. 当CPU执行div bh时,发生了除法溢出错误,产生0号中断信息,从而引发中断过程
  2. CPU执行0号中断处理程序
  3. 系统中的0号中断处理程序的功能:显示提示信息“Divide overflow”后,返回到操作系统中

编程实验:编写0号中断处理程序do0,当发生除法溢出时,在屏幕中间显示“overflow!”,返回DOS

实验要求:

  • 00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值