查询方式当外设数据未准备好时,CPU需要不断查询外设是否准备好,效率低。

【微机接口】中断的基本概念_中断向量表

中断:

CPU在执行程序的过程中,由于某种外部或内部事件的作用,使CPU停止当前正在执行的程序转去为该事件服务,待事件服务结束后,又能自动返回到被中止的程序继续执行。

主程序:               被中断的原程序

中断服务子程序:中断处理的程序

中断源:引发中断的信息源

中断分类:

外部中断(硬件中断):

由外部事件引发的中断,即由CPU外部设备发出,并由CPU中断请求信号引脚输入所引发的中断。

8086CPU有2个引脚INTR和NMI可以接受外部的中断请求信号。

INTR接受的中断信号为可屏蔽硬件中断

NMI接受的中断信号为非屏蔽硬件中断。

内部中断(软件中断源):由CPU硬件故障或程序执行中的事件引发的中断,可分为软件中断和异常。

软件中断:执行有INT n执行而引发的中断。可分为BIOS中断、DOS中断。

中断类型码:

每个不同的中断有一个中断号n,取值0~255,256个中断。

21H:DOS中断

10H,16H:BIOS中断

2型中断:非屏蔽硬件中断,输入微处理器的NMI引脚的中断请求信号引发的中断,是不可以被禁止的。

可屏蔽中断的中断类型码由8259A给出。(INTA给8259A的第二个负脉冲时发送中断类型码)

软件中断的中断类型码由中断指令给出。

中断向量:

实模式下,中断向量指中断服务子程序的入口地址。

每个中断号所对应的中断向量占4字节。

前两字节是中断服务子程序入口的偏移地址,

后两字节是中断服务子程序的代码段段基址。

中断向量表:

实模式下,系统存储器地址空间中,最低的1KB空间,即00000H~003FFH单元,依次存放着256个中断号所对应的中断向量,每个中断的中断向量4字节(1024个字节),存放着1024字节中断向量的存储区就构成了一张中断向量表。

记:0820,偏低高段低高

【微机接口】中断的基本概念_中断向量表_02

 注意:08H*4=20H!=32H,所以08型中断向量存放在20H~23H。

20H,21H存放08型中断服务子程序偏移地址,22H23H存放08型中断服务子程序入口的段基址。

已知系统RAM20H~23H单元的内容依次为22H,33H,44H,55H

则08型中断服务子程序入口的物理地址=5544H*16+3322H=58762H

【微机接口】中断的基本概念_中断向量_03

中断向量表的初始化:

由BIOS设计的中断服务子程序,中断向量在加电时由BIOS负责写入中断向量表

由DOS设计的中断服务子程序,中断向量在启动DOS时,由DOS负责写入中断向量表

用户程序开发的中断服务子程序,由用户程序写入中断向量

例:设n型中断服务子程序的名字是SERVICE,将SERVICE的入口地址写入对应的中断向量表

方法一:自己编写程序填写中断向量(易错!!!!)

CLI ;关中断
PUSH DS             ;保护DS 
MOV AX,0000H        ;
MOV DS,AX           ;将DS置为0,那么通过间接寻址时[BX]访问的就是物理地址(DS为数据段)
MOV BX,4*n          
MOV AX,OFFSET SERVICE
MOV [BX],AX         ;将SERVICE的偏移地址给4*n和4*n+1
MOV AX,SEG SERVICE 
MOC [BX+2],AX       ;服务程序代码段基址写入4*n+2和4*n+3 
POP DS              ;恢复DS
STI ;开中断
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

方法二:

记:35读ALXESBX,25写PUSHDSAALXDSDX

DOS35H功能调用用于读取中断向量,DOS25H功能用于写入中断向量。

35H:读取中断向量

AH=35H,AL=中断类型码

ES:中断向量对应中断子程序的段基址

BX:中断向量对应中断子程序的偏移地址

21H:写入中断向量

AH=25H,AL=中断类型码(中断号)

DS:中断服务子程序所在代码段的段基址

DX:中断服务子程序入口的偏移地址

CLI
PUSH DS
PUSHA  ;把基本结构寄存器都入栈

MOV AX,SEG SERVICE
MOV DS,AX

MOV DX,OFFSET SERVICE

MOV AH,25H
MOV AL,n
INT 21H

POPA
POP DS
STI
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

易错:MOV AX,SEG SERVICE

           MOV DS,AX