8086 汇编中断知识点总结


一、基础概念
1. 中断定义
CPU 在执行主程序时,被外部 / 内部事件打断,转去执行专门的中断服务子程序,执行完毕返回原程序继续运行。
2. 8086 中断分类(两大类)
(1)硬件中断(外部中断,引脚触发)
INTR(可屏蔽中断)
引脚高电平有效;受IF 中断标志位控制:IF=1允许,IF=0屏蔽。
外设通过 8259A 可编程中断控制器接入 CPU。
中断响应:CPU 连续发 2 个 INTA 负脉冲,读取外设送来的中断类型号 n。
NMI(不可屏蔽中断)
上升沿触发;不受 IF 控制,优先级极高。
固定中断类型号:02H,多用于掉电、硬件故障等紧急事件。
(2)软件中断(内部中断,指令 / 异常触发)
全部不受 IF 控制,优先级高于可屏蔽硬件中断:
INT n:主动调用中断,n 为 0~255 中断类型号。
INTO:溢出中断,OF=1时触发,类型号04H。
除法错中断:DIV/IDIV 除数为 0、商溢出,类型号00H。
单步中断(TF=1):每执行一条指令触发,调试用,类型号01H。
二、中断向量表(核心)
1. 位置与大小
存放在内存最低端 00000H~003FFH,共 1KB 空间。
2. 结构
256 个中断向量(对应类型号 0~255),每个向量占 4 字节:
低 2 字节:中断服务子程序 偏移地址 IP
高 2 字节:中断服务子程序 段地址 CS
3. 向量地址计算公式
中断类型号为n:
向量首地址 = n × 4
例:n=2 → 地址0008H,依次 4 字节存 IP、CS。
4. 查表寻址流程
CPU 拿到类型号 n;
计算n×4得到向量表入口;
取[n×4]→IP、[n×4+2]→CS;
CS:IP即为中断服务程序入口。
三、中断响应全过程(标准 5 步)
保护现场硬件自动操作
FLAGS 入栈 → CS 入栈 → IP 入栈;
清除标志:IF=0(屏蔽后续可屏蔽中断)、TF=0(关闭单步)。
获取中断类型号 n
硬件 INTR:CPU 发 INTA 脉冲,从 8259A 读 n;
软件中断:指令自带 n。
查中断向量表,载入CS:IP进入中断服务程序。
执行中断服务子程序:
开头手动 PUSH 用到的寄存器;
末尾手动 POP 恢复寄存器;
最后必须执行 IRET 中断返回指令。
IRET 执行返回:依次弹出 IP、CS、FLAGS,回到断点继续执行原程序。
四、关键指令
STI:置IF=1,开可屏蔽中断
CLI:置IF=0,关可屏蔽中断
INT n:软中断调用
INTO:溢出中断
IRET:中断专用返回,依次弹出 IP、CS、FLAGS(RET 只弹 IP)
五、中断优先级排序(从高到低)
除法错、INT n、INTO(软件中断)
NMI 不可屏蔽硬件中断
INTR 可屏蔽硬件中断
单步中断(TF)
六、常用系统中断(BIOS/DOS)
INT 10H:BIOS 屏幕显示中断
INT 16H:BIOS 键盘中断
INT 21H:DOS 功能调用(最常用)
INT 13H:BIOS 磁盘读写中断
七、编写中断服务程序要点
进入子程序先 PUSH 用到的通用寄存器;
关键操作前后可 CLI/STI 控制中断嵌套;
退出前 POP 所有寄存器;
最后一条指令必须是IRET,不能用 RET;
自定义中断需修改中断向量表:保存原向量 → 写入新 CS:IP → 程序退出恢复原向量。
八、易混考点对比
IRET vs RET
RET:只弹出 IP,用于子程序返回;
IRET:弹出 IP、CS、FLAGS,仅用于中断返回。
NMI 与 INTR
NMI:边沿触发、IF 无效、固定 02H、紧急故障;
INTR:电平触发、IF 管控、类型号由外设提供。
软件中断:全部不受 IF 屏蔽,优先级高于 INTR。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值