《汇编语言》- 读书笔记 - 第12章 内中断(Internal Interrupt,Interrupt Procedures)

  1. 任何通用CPU都有处理中断的能力。(如8086、8088能处理256种不同的中断类型
  2. 中断可以理解为计算机系统中的响应事件机制
  3. 编写中断响应程序类似于编写事件回调函数
  4. 处理完中断要返回原来的任务中继续执行,所以处理前、处理后,需要保存和还原寄存器状态。
  5. 中断信息可以来自 CPU 的内部外部,这一章主要讨论来自于 CPU 内部的中断信息。

12.1 内中断的产生

8086 CPU 内部中断(也称为异常或内部中断源)主要有以下几种:

中断 类型码 (8位) 备注
除法错误 0
单步执行 1
执行 into 指令 4
执行 int 指令 int n 手动触发类型为 n 的中断,调用中断例程。第13章专门讲它。

12.2 中断处理程序

CPU接收到中断信息后,通过中断类型码中断向量表中定位对应的中断处理程序地址(段地址和偏移地址)
找到地址后修改 CS:IP 从而执行相应的中断处理程序

12.3 中断向量表(Interrupt Vector Table)

中断类型码就是中断向量表索引。中断向量表是CPU设计中用于存储中断处理程序入口地址的一个固定内存区域,它是数组结构,每个元素占2个字(4字节)[ 0偏移地址, 0段地址, 1偏移地址, 1段地址, 2偏移地址, 2段地址,....]

总体来说,中断向量表(Interrupt Vector Table, IVT):

  1. 位置:在8086系统中,中断向量表通常位于内存 0000:0000 ~ 0000:03FF1KB空间内。(0到1023单元)
  2. 结构:每个中断类型码对应表中一项。对于8086 CPU,每个中断向量占用4个字节前两个字节偏移地址后两个字节段地址
  3. 功能:当CPU接收到中断请求时,会根据中断类型码(一个8位数值)乘以4来定位到中断向量表中的相应位置,并从中取出中断处理程序的地址信息,从而能够跳转执行相应的中断服务子程序。(类型码n偏移地址=n*4段地址=n*4+2
  4. 覆盖范围:中断向量表包括了对内部硬件中断外部硬件中断以及软件中断的响应向量,使得CPU可以根据不同的中断事件调用正确的处理函数。

总之,中断向量表是操作系统硬件之间的重要桥梁,它确保了CPU能够在发生中断时准确地找到并执行对应的中断服务程序。

以下是一个简化的8086中断向量表的例子:

中断类型码 内存地址范围 含义
0 0000 ~ 0003 除法错误(Divide Error)
1 0004 ~ 0007 单步调试中断(Single Step)
2 0008 ~ 000B NMI(Non-Maskable Interrupt,不可屏蔽中断)
3 000C ~ 000F INT 3 断点中断(Breakpoint)
4 0010 ~ 0013 INTO 溢出中断(Overflow)
5 0014 ~ 007B 5 ~ 31系统保留(共27个位置)
31 007C ~ 007F
32 0080 ~ 0083 32 ~ 255 为** 用户可用** (共244个位置)
255 03FC ~ 03FF

注意,在实际应用中,尤其是现代操作系统环境下,中断向量表的内容可能会被系统BIOS或操作系统重定向或扩展。

检测点 12.1

《汇编语言》- 读书笔记 - 各章检测点归档 - 检测点 12.1

12.4 中断过程

中断类型码找到中断向量,查到入口地址后设置 CSIP,这个工作是由CPU的硬件自动完成的。
CPU 硬件完成这个工作的过程被称为中断过程
硬件在完成中断过程后,CS:IP 将指向中断处理程序的入口,CPU开始执行中断处理程序。

8086CPU 在收到中断信息后,所引发的中断过程。

顺序 操作 说明
1 n 取得中断类型码 N;
2 pushf 标志寄存器的值入栈
3 TF=0,IF=0 设置标志寄存器:
TF=0关闭单步模式
IF=0禁止CPU接收来自外部设备或其他源的可屏蔽中断请求,直到IF被重新设置为1
4 push CS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

笑虾

多情黯叹痴情癫。情癫苦笑多情难

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

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

打赏作者

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

抵扣说明:

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

余额充值