当前位置:文档之家› 计算机中断的概念

计算机中断的概念


类型号 0 1 2 3 4 5 8 9 B C D
在表中的地址
说明
00~03H
04~07H
08~0BH
0C~0FH
10~13H
14~17H 按下Prnt Scrm时产生
20~23H 24~27H
指系统时钟,每55ms中断一次 按键压下、提起都要发生
2C~2FH COM2
30~33H COM1
34~37H PRN2
3C~3FH
1C0~1C3H 具有警告和周期性中断
1C4~1C7H
1C8~1CBH
1CC~1CFH
1D0~1D3H
1D4~1D7H
1D8~1DBH
1DC~1DFH
中断类型号的应用举例
例:已知PC机中键盘中断的类型号为09H,按键压下和提起 时均会产生中断。 试编程,修改09H号中断向量,使其指向自己编写的中 断服务程序,在自己编写的中断服务程序中读取键码
第1节 PC机的中断系统
一 8086的中断方式
实地址下的中断方式 PC机工作在实模式下时,中断源的I/O地址是实际部件
的物理地址。 保护模式下的虚拟地址
PC机工作在保护模式下时,中断源的I/O地址是由VM (虚拟机)安排的虚拟地址。
1 外部中断 (1)可屏蔽中断INTR—— 硬件中断
CPU INTR
(扫描码)。 注:键盘扫描码可从I/O地址为60H的端口读得。
本程序的用途: 如果在后台运行,可监视用户敲了哪些键,进一步分析 他在干什么。
友情提示: 不要干非法的事,不要搞密码窃取。
#include <stdio.h> #include <conio.h> #include <dos.h> void interrupt (*sys_vect09)(); unsigned int key,flag; void interrupt my_vect09() { key=inportb(0x60);
中断向量:某中断的服务程序的入口地址。 8086共有256个中断类型号,每一中断类型号对应一个中
断向量。 中断向量表:将256个中断向量用一个线性表存放
一个中断向量占用表中的4个字节,分别存放CS和IP
中断类型号0 中断类型号1 中断类型号2
IP
00000H
CS
00002H
IP
00004H
第2章 PC机接口芯片
本章概要
接口电路通常有专用芯片可选。本章介绍4款常用的 PC机接口芯片:
8259:中断管理接口芯片 8253:定时器/计数器接口芯片 8237:DMA控制芯片 8255:并行I/O接口芯片 上述接口芯片最早用于PC/XT中,后来出现的286~ P4,一直保持了这些芯片的功能,并且兼容了它们的I/O 地址。 本章的介绍适用于所有PC机。
外部中断
由8259中断管 理芯片发来
CPU是否响应中断?
由状态寄存器PSW的IF位决定 IF=0 中断被屏蔽 IF=1 允许中断
(2)非屏蔽中断NMI
CPU NMI
外部中断 如掉电发生
CPU是否响应中断?
无论IF位是否为1,CPU总 会响应。
用于紧急情况下,CPU作 应急处理。
2 内部中断
由INT指令触发,或CPU运行中出现异常情况(如:除零、 在程序中设置断点、单步运行程序)
CS
00006H
PC机中的
物理地址
IP
00008H
CS
0000AH

பைடு நூலகம் 已知中断类型号,就能算出对应的中断向量在表中的地址。 例:键盘中断IRQ1,其中断类型号=09H,故中断向量在表中的
存放地址:9×4=36,即24H开始的4个字节。 PC机中常用的硬件中断类型号:
中断名称 除法出错 单步中断 NMI中断 断点中断 溢出中断 打印屏幕 定时器中断IRQ0 键盘中断IRQ1 串口2中断IRQ3 串口1中断IRQ4 并口2中断IRQ5
8259 中断 控制器
INT
IRQ0 时钟 IRQ1 键盘
IRQ3 IRQ4 IRQ5 IRQ6 IRQ7
COM1 COM2 保留 软盘 保留
8259 中断 INT
控制器
IRQ8 日历时钟 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 协处理器 IRQ14 硬盘 IRQ15
三 中断向量表
以上中断的优先顺序:
内部中断(INT X)→非屏蔽中断(NMI)→可屏蔽中断 →单步中断。
二 硬件中断的优先级
INTR:硬件中断,由接口电路产生。是本书讨论的主要对象。
CPU的INTR只有一条引线,外部设备有多个
用一片中断管理芯片,实现一对多的管理。主要管 理内容有:
允许那些中断能送到CPU,引起CPU中断。即中断 的屏蔽问题。 对各外设送来的中断,决定他们的优先级。
PC/XT机中的硬件中断电路:
8088CPU INTR
8259 中断 控制器
INT
IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7
系统时钟 键盘 保留
COM1 COM2 硬盘 软盘 打印机
优先级: IRQ0……IRQ7
80X86机中的硬件中断电路:
8088CPU INTR
(1)INT指令 指令格式: INT 执行示意图:
中断类型号(0~0FFH)
主程序
中断服务程序
INT X
RETI
(2)处理器错误中断 除法错误引起中断,如除数为0。中断类型号:0 溢出中断,若OF=1,则引起中断。中断类型号:4
(3)程序调试中断 单步中断,置TF=1,则每执行一条指令,就产生此中 断。中断类型号:1 断点中断,在程序中需要观察结果的地方插入指令 INT 3,称为断点。中断类型号:3
PC机中常用的硬件中断类型号(续):
中断名称 软盘中断IRQ6 并口1中断IRQ7 日历时钟中断IRQ8 视频回扫中断IRQ9 IRQ10 IRQ11 IRQ12 协处理器中断IRQ13 硬盘中断IRQ14 IRQ15
类型号 E F 70 71 72 73 74 75 76 77
在表中的地址
说明
38~3BH
flag=1; (*sys_vect09)(); } void main() { flag=0; sys_vect09 = getvect(0x09); setvect(0x09,my_vect09); while(1) {
if(flag) { printf("%02x ",key); flag=0; if(key == 0x0010) break; if((key&0x0080) == 0x0080) printf("\n");
相关主题