文章目录

  • 中断
  • 中断类型
  • 硬中断
  • 软中断
  • 中断号
  • 中断号与中断号的获取
  • 中断响应周期
  • 中断号的分配
  • 中断触发方式和中断排队方式
  • 中断向量与中断向量表
  • 中断向量与中断向量表
  • 中断处理过程
  • 可屏蔽中断的处理过程
  • 不可屏蔽中断的处理过程
  • 中断控制器
  • 82C59A外部特性和内部寄存器
  • 82C59A端口地址
  • 82C59A的工作方式
  • 82C59A的编程命令
  • 初始化命令字(ICW1-ICW4)
  • 中断请求触发方式和单片/多片的设置(ICW1)
  • 中断号的设置(ICW2)
  • 中断级联方式的设置(ICW3)
  • 中断优先级排队方式和中断结束方式设置(ICW4)
  • 操作命令字( OCW1-OCW3 )
  • 中断屏蔽/开放操作(OCW1)
  • 中断结束控制和中断优先级排队控制操作(OCW2)
  • 特定的屏蔽/开放操作(OCW3)
  • 82C59A对中断管理的作用
  • 可屏蔽中断系统
  • 中断系统的初始化
  • 用户对系统诊断资源的使用
  • 修改中断向量
  • 发中断屏蔽/开放和中断结束命令
  • 编写中断服务程序
  • 中断应用程序设计


中断

中断:是指CPU在正常运行程序时,由于内部/外部事件或由程序触发,而转到为中断事件服务的程序中去,服务完毕再返回执行原程序,这一过程称为中断。

  • 硬件中断:由外部硬件产生的中断
  • 软件中断:由程序预先安排的中断
  • 中断的特征:具有随机性

中断类型

微机中,中断源大致可分为两类:一类是硬中断(外部中断);另一类是软中断(内部中断);此外还有一种特殊中断(异常)。

硬中断

  1. 可屏蔽中断INTR
    外部设备通过中断控制器向微处理器申请而产生的中断。CPU可以用指令进行屏蔽(CLI)开放(STI)
  2. 不可屏蔽中断NMI
    外部设备通过中断请求线NMI向微处理器申请而产生的中断。CPU必须响应,不能屏蔽。中断号为2

软中断

由程序中发出中断指令INT n 产生的,n为中断号。软中断处理过程中,CPU不发中断响应信号,也不要求中断控制器提供中断号,包括DOS中断功能和BIOS中断功能。

  1. DOS功能调用
    INT 21H。功能庞大,包含0~6CH个子功能,包括对设备、文件、目录及内存的管理功能,是用户访问系统资源的主要途径。与硬件依赖性小,兼容性好。
  2. BIOS功能调用
    存在ROM中,独立于DOS的I/O中断服务程序,直接对I/O设备进行控制,也是用户访问系统资源的途径之一。与硬件依赖性大,兼容性差。

特殊中断:不由外部设备产生,也不由INT n 产生,而是由内部突发事件产生。不可屏蔽。如:0号:除数为零中断;1号:单步中断;3号:断点中断;4号:溢出中断。

中断号

中断号与中断号的获取

  1. 中断号
    系统给每个中断分配了一个中断号,以便识别处理。
    CPU通过中断号(n)×4得到中断向量表中的位置,从中就能取出中断服务程序的地址(CS:IP)。
  2. 中断号的获取
  • 对于可屏蔽中断:在中断响应周期从中断控制器中获取
  • 对于软中断INT n:中断号即为n
  • 对于不可屏蔽中断及特殊中断:系统预先设置好
    NMI中断号为02H,非法除数中断号为0H

中断响应周期

CPU收到中断请求,执行完当前指令,若IF=1,则进入中断响应周期,连续发出两个中断应答信号INTA完成中断响应周期。

  1. ++置位中断服务寄存器ISR++:第一个INTA1使CPU输出总线封锁信号,而8259根据选中的最高优先级,在ISR相应位置1,以登记。
  2. ++读取中断号++:第二个INTA2使CPU撤销总线的封锁信号,中断控制器将中断号送到数据线,由CPU读入。

android中断服务程序 中断服务是什么_中断向量

中断号的分配

android中断服务程序 中断服务是什么_fpga_02


android中断服务程序 中断服务是什么_android中断服务程序_03

中断触发方式和中断排队方式

  1. 中断触发方式
  • 边沿触发
  • 电平触发

触发方式在中断控制器初始化时设定。PC微机系统的可屏蔽中断采用正跳变边沿触发方式。

  1. 中断排队方式
  • PC微机中断优先级的顺序是:
    软件中断->不可屏蔽中断->可屏蔽中断
  • 当系统有多个中断源同时申请中断时,CPU在一个时刻只能响应处理一个中断,就必须进行优先级排队

中断排队的方式有:

  • 按优先级排队:
    优先级高的先响应。
  • 循环轮流排队:
    不分级别,CPU轮流响应各个中断源的中断请求。
  1. 中断嵌套
    当CPU正处理某个中断时,出现更高级中断源的申请,CPU暂停该中断服务,转而去处理更高级中断的服务,待处理完后,再返回到被中断的服务程序继续执行。
    高级中断可中断低级中断,级别相同或级别低的中断源不能打断级别高的中断服务。

android中断服务程序 中断服务是什么_android中断服务程序_04

中断向量与中断向量表

中断向量表中的中断向量存储着中断服务程序的入口地址。

中断向量与中断向量表

  1. 中断向量
  • 中断服务程序预先放在程序存储区中
  • 该服务程序的入口地址由段基址CS(2个字节)和偏移地址IP(2个字节)两个部分共4个字节组成。此即为中断向量
  • 根据中断向量可计算出中断服务程序的起始地址:CS左移4位再加上IP。中断服务程序从此开始执行
  1. 中断向量表
  • 所有的中断向量集中存放到存储器的某一区域,这一区域称之为中断向量表
  • PC中,规定存储器的000H-03FFH作为中断向量存储区(共1024个字节),每个中断向量包含4个字节,可容纳256个中断向量,即可处理256个中断服务程序
  • IP放在两个低字节单元,CS放在两个高字节单元
  • 中断号×4得到一个指针,指向中断向量表,找到在中断向量表中的中断向量就可获取中断服务程序的入口地址

android中断服务程序 中断服务是什么_嵌入式_05

  1. 中断向量的填写
    系统填写用户填写两种情况:
  • 系统设置的中断服务程序,其中断向量由系统负责填写。其中,由BIOS提供的服务程序在加电后由BIOS负责填写;DOS提供的服务程序由DOS在启动时负责填写
  • 用户开发的中断系统,由用户负责填写,可采用MOV指令直接向中断向量表中填写中断向量

    用到存字符串指令:STOSW
  • 执行操作:把AX的内容存放到DI指定的附加段的字单元中,并根据DF值修改DI的内容
  • 在执行该指令之前,必须把要存入的数据预先存入AX中,必须预置DI的初值
  • DI所指向的存储单元只能在附加段中,即必须是ES:[DI]

例:设60H号的中断的服务程序的段基址是SEG_INTR60,偏移地址OFFSET_INTR60, 程序如下:

用MOV指令填写中断向量

CLI                    ;关中断
CLD                 
MOV  AX,0             ;设置中断向量表的基地址为0
MOV  ES,AX
MOV  DI,4*60H         ;中断向量指针->DI
MOV  AX,OFFSET_INTR60 ;中断服务程序的偏移地址->AX
STOSW                  ;AX->[DI][DI+1]中,然后DI+2
MOV  AX,SEG_INTR60    ;中断服务程序的段基址->AX   
STOSW                  ;AX->[DI+1][DI+2]
STI

也可以用下述程序段将入口地址直接写入中断向量表

MOV  AX,0             ;
MOV  ES,AX
MOV  BX,4*60H         ;4*中断号->BX
MOV  AX,OFFSET_INTR60 ;中断服务程序的偏移地址
MOV  ES:[BX],AX        ;装入60H号中断向量的低字段
MOV  AX,SEG_INTR60    ;中断服务程序的段基址   
MOV  ES:[BX+2],AX      ;装入60H号中断向量的高字段

中断处理过程

可屏蔽中断的处理过程

  1. 中断申请与响应握手
  2. 标志位的处理与断点保存
  3. 向中断服务程序转移并执行中断服务程序
  4. 返回断点

android中断服务程序 中断服务是什么_中断向量_06

不可屏蔽中断的处理过程

  1. 中断申请与响应握手
    必须立即响应,但不发中断响应信号。
    系统安排中断号为2。
  2. 标志位的处理与断点保存
    与可屏蔽中断类似。
  3. 向中断服务程序转移并执行中断服务程序
    NMI中断向量的两个字放在0008H和000AH处。
  4. 返回断点

软件中断的处理过程与此类似

中断控制器

82C59A外部特性和内部寄存器

1.外部特性
面向CPU的信号
面向外设的8根中断请求线
面向同类芯片的中断请求级联线

android中断服务程序 中断服务是什么_单片机_07

8259A的外部引脚

  • D7-D0:双向数据输入/输出引脚,用以与CPU进行信息交换
  • IR7-IR0:8级中断请求信号输入引脚
  • INT:中断请求信号输出引脚,高电平有效,用以向CPU发中断请求,应接在CPU的INTR输入端
  • INTA(上划线):中断响应应答信号输入引脚,低电平有效,接在CPU的中断应答信号输出端
  • RD、WR(上划线):读/写控制信号输入引脚,低电平有效,实现对8259A内部有关寄存器内容的读写操作
  • CS(上划线):片选信号输入引脚,低电平有效,决定了8259A的端口地址范围
  • A0:8259A两组内部寄存器的选择信号输入引脚,决定8259A的端口地址
  • CAS2-CAS0:级连信号引脚,当8259A为主片时,为输出;否则为输入,实现芯片的级连。三个引脚信号的不同组合000~111,刚好对应于8个从片
  • SP/EN:级连管理信号输入引脚,在非缓冲方式下,若8259A在系统中作主片用,则SP=1;否则SP=0;在缓冲方式下,则用作8259A外部数据总线缓冲器的启动信号
  • +5V、GND:电源和接地引脚

android中断服务程序 中断服务是什么_中断向量_08


2. 内部寄存器

①中断请求寄存器(IRR)
存放IR线上提出了中断请求的中断源,对应于连接在IR0~IR7线上的外设所产生的中断请求。哪一根输入线有请求,哪位就置“1”

②中断屏蔽寄存器(IMR)
是对中断请求IRi起屏蔽作用,即对中断请求IRi是屏蔽还是允许,寄存器8位对应8个中断屏蔽。哪个中断被屏蔽,哪位就写“1”,即禁止IRi提出中断请求。若写“0”,则允许IRi的提出中断请求。

③中断服务寄存器ISR
ISR被用来存放正在被服务的所有中断级,包括尚没服务完而中途被别的中断所打断了的中断级。
在非自动中断结束方式下,ISR的复位,要有中断结束命令EOI来执行。

④优先权分析器(PR)
当在IRi输入端有中断产生时,送到PR,PR检查进来的中断请求的优先级并和“正在服务中的中断”进行比较,确定是否让这个中断请求送给处理器。

82C59A端口地址

  • 82C59A是系统资源,其端口地址由系统分配
  • 主片的两个端口地址为20H和21H;从片的两个端口地址为0A0H和0A1H
  • 具体使用哪个端口地址,根据是哪个初始化命令字ICW和哪个操作命令字OCW而有所不同(即由A0决定)

82C59A的工作方式

android中断服务程序 中断服务是什么_嵌入式_09

  1. 中断触发方式
    确定中断请求的启动方式
  • 边沿触发方式。IR0-IR7线上出现由低到高的跳变,表示有中断请求
  • 电平触发方式。IR0-IR7线上出现高电平时,表示有中断请求
  1. 中断级联方式
    82C59可以单片使用,也可以多片使用,级联方式应用时有主片和从片的问题。

android中断服务程序 中断服务是什么_android中断服务程序_10


3. 中断屏蔽方式

  • 常规中断屏蔽方式:常用。通过向屏蔽寄存器写入8位屏蔽码来屏蔽或开放相应位的中断。++1:屏蔽;0:开放++
  • 特殊屏蔽方式。少用。允许比正在服务的中断级别低的中断申请。
  1. 中断优先级排队
  • 完全嵌套方式
    只能高优先级中断低优先级的中断。
  • 特殊完全嵌套方式
    同级优先级的中断可以相互中断
  • 优先级轮换方式。被服务完的中断源优先级将自动变为最低,而其后的中断源的优先级将变为最高。优先级轮换方式有两种
  • 优先级自动轮换方式:当一个中断被服务后,自动降为最低,初始顺序是:IR0,IR1,…
  • 优先级指定轮换方式:与自动的差别是,初始轮换的优先级可以由程序指定。
  1. 中断结束方式
  • 自动结束方式
    在中断响应周期,就自动清零了该中断源的ISR寄存器中被置1的位。这常用于没有中断嵌套的系统。
  • 非自动结束方式
    在中断服务程序后,必须使用中断结束命令EOI才能清除ISR中的相应位。这是最常用的中断结束方式。它有两种形式:
  • 指定中断结束命令:即要指定结束中断请求线IRi的编号。
  • 不指定中断结束命令:不指定IRi的编号。

82C59A的编程命令

编程命令是为建立中断工作方式和实现中断处理而设置。共有7个命令,分为初始化命令ICW(1~4)和操作命令OCW(1~3)两类。

++初始化命令++: 确定中断控制器的基本配置或工作方式

++操作命令++:执行由ICW命令定义的基本操作

初始化命令字(ICW1-ICW4)

必须在对82C59A初始化时完成。需要按顺序发送ICW1 –ICW4

中断请求触发方式和单片/多片的设置(ICW1)

功能:设定中断请求的触发方式、级联和CPU的特性。

android中断服务程序 中断服务是什么_单片机_11

若8259A采用电平触发,单片使用,需要ICW4
则:

MOV  AL,00011011B  ;ICW1的内容
  OUT  20H,AL        ;写入ICW1端口 ,20H为微机主片的端口(地址A0=0)
                      ;(A0=0)
中断号的设置(ICW2)

功能:提供给CPU的中断类型号

android中断服务程序 中断服务是什么_android中断服务程序_12


IRQ0~7低3位上的编码和高5位上的中断类型码一起构成一个完整的8位中断类型号

注意:向ICW2写入中断类型号只写高5位,低3位写0,即08H

MOV  AL,08H ;中断类型号的高5位
OUT  21H,AL ;写入ICW2的端口(A0=1)

android中断服务程序 中断服务是什么_中断向量_13

中断级联方式的设置(ICW3)

android中断服务程序 中断服务是什么_中断向量_14


android中断服务程序 中断服务是什么_fpga_15


例如:从片的请求线INT连到主片的IR2,则:

主片的ICW3=00000100B=04H
	MOV AL,04H	;主片的ICW3
	OUT 21H,AL

从片的ICW3=00000010B=02H
  	MOV  AL,02H 	;从片的ICW3
    OUT  0A1H,AL	;从片的地址由译码决定
					(0A1H为从片的端口地址)
中断优先级排队方式和中断结束方式设置(ICW4)

android中断服务程序 中断服务是什么_中断向量_16

  • A0=1
  • D5-D7高3位为0
  • D4(SFNM)
    =1特定完全嵌套方式
    =0 一般完全嵌套方式
  • D3(BUF)
    =1 为缓冲方式,SP/EN 作输出
    线,用于控制缓冲器的方向
    =0 为非缓冲方式,SP/EN作输入线
  • D2(M/S)
    =1 为缓冲方式下作主片
    =0 为缓冲方式下作从片

:非缓冲方式(BUF=0时),则M/S无意义,
此时主/从由SP端外输入决定。

  • D1(AEOI)
    =1 自动结束方式,ISR有自动
    复位(清0)功能
    =0 为非自动结束方式,要发EOI命令
  • D0(uPM)
    =1 用于16位以上微机
    =0 用于8位微机

例:某计算机的CPU为80286,而8259A与系统总线之间采用缓冲器连接,非自动结束方式,正常完全嵌套,只用1片8259A。

ICW4=00001101B=0DH
相应的初始化程序段:
	MOV  AL,0DH
    OUT  21H,AL

操作命令字( OCW1-OCW3 )

初始化后,即在程序执行中,使用OCW命令对中断控制器进行动态控制。
不需要按顺序发送,在程序中任意安排。

中断屏蔽/开放操作(OCW1)

android中断服务程序 中断服务是什么_android中断服务程序_17

例:要使中断源IR3开放,其余被屏蔽。

则:OCW1=11110111B=F7H
相应的程序段: 
		MOV  AL,0F7H
    	OUT  21H,AL   ;OCW1内容送端口
中断结束控制和中断优先级排队控制操作(OCW2)

android中断服务程序 中断服务是什么_单片机_18


android中断服务程序 中断服务是什么_android中断服务程序_19


一些实例:

a.不指定的EOI命令,全嵌套方式:00100000

b.指定的EOI命令,全嵌套方式: 01100L2L1L0

c.不指定的EOI方式,优先级自动轮换:10100000

d.自动EOI方式,优先级自动轮换:10000000

e.自动EOI方式,取消优先级自动轮换:00000000

f.指定的EOI方式,优先级特殊轮换:11100L2L1L0

g.优先级特殊轮换:11000L2L1L0

特定的屏蔽/开放操作(OCW3)

功能:

  • 用来设置查询中断方式
  • 设置特定屏蔽方式
  • 读取8259A的IRR,ISR寄存器的内容

    读状态操作(OCW3格式中的D1 D0 )
    8259A内部有3个寄存器IRR,ISR,IMR可供CPU读出当前的内容。
    (1)读IRR和ISR的方法
    CPU先指定读哪个寄存器,然后再发IN指令,才能读取ISR和IRR中的内容。当8259A初始化后,自动指向读IRR寄存器。
    (2)读IMR的方法
    不需要先发指定命令,只要读奇地址端口。

例:读ISR寄存器的内容
分两步:

  • 通过OCW3指定被读的寄存器
    OCW3为00001011B=0BH,表示下个RD要读ISR
  • 用IN指令读出ISR寄存器的内容
MOV  AL,0BH    ;OCW3表示读ISR
OUT  20H,AL    ;20H为OCW3的口地址
IN   AL,20H    ;读ISR寄存器

82C59A对中断管理的作用

  1. 接收和扩充I/O设备的中断请求
  2. 进行中断优先级排队
  3. 向CPU提供中断号
  4. 进行中断的开放与屏蔽
  5. 执行中断结束命令

android中断服务程序 中断服务是什么_fpga_20

可屏蔽中断系统

android中断服务程序 中断服务是什么_fpga_21

中断系统的初始化

在系统运行之前,系统中的每个8259A必须按先后次序接收CPU的2-4个ICW初始化命令字进行初始化。初始化命令字必须按规定的顺序写入。

对16位机,且多片,则主片与从片的ICW3要分别写。

android中断服务程序 中断服务是什么_fpga_22

用户对系统诊断资源的使用

两类编程命令:初始化命令字ICW和操作命令字OCW。

ICW:

  1. 在初始化里完成,必须按一定的顺序
  2. 在PC机中已有系统软件完成,不需要也不允许由用户自己去设置。
  3. 一般只对于没有配置完善操作系统的单板微机上进行。

OCW:

  1. 没有一定的顺序,一般也不安排在程序的开头。
  2. 在初始化后的任何时候进行动态控制。

修改中断向量

当使用PC机的某个中断号时,需分三步修改:

  1. 用35H号功能,获取原中断向量。
  2. 用25H号功能,设置新中断向量,取代原中断向量。
  3. 新服务程序执行完毕后,利用25H号功能恢复原中断向量。

例:修改中断号为60H的中断向量。

第1步:
MOV   AH,35H    ;取原中断向量
MOV   AL,60H    ;60H为原中断号
INT   21H            ;中断向量存到ES:BX
MOV   OLD_SEG,ES   ;保存原中断向量
MOV   OLD_OFF,BX
第2步:
MOV   AH,25H      ;设置新中断向量
MOV   AL,60H      ;中断号
MOV   DX,SEG INTRn    ;INTRn是新中断程序的入口地址
MOV   DS,DX      ;DS指向新中断程序段地址
MOV   DX,OFFSET INTRn ;DX指向新中断程序偏移地址
INT   21H              ;新中断向量存到向量表
第3步:
MOV   AH,25H       ;恢复旧的中断向量
MOV   AL,60H       ;中断号
MOV   DX,OLD_SEG
MOV   DS,DX       ;DS指向旧中断程序段基址
MOV   DX,OLD_OFF     ;DX指向旧中断程序偏移地址
INT   21H              ;旧中断向量存到向量表

发中断屏蔽/开放和中断结束命令

  • 在主程序中,用OCW1执行中断屏蔽与开放
开放IRQ2中断的方法:
    IN AL,21H     ;读IMR寄存器
    AND AL,0FBH   ;对应IRQ2的位置0
    OUT 21H,AL
关闭IRQ2中断的方法:
    IN AL,21H     ;读IMR寄存器
    OR AL,04H     ;对应IRQ2的位置1
    OUT 21H,AL
  • 在中断服务程序中,使用OCW2发中断结束信号EOI,使用IRET中断返回

编写中断服务程序

中断服务程序一般格式

INT-P PROC FAR
	PUSH …        ;保护寄存器的内容
       …
      PUSH …
 	STI
       …		   ;中断服务程序体
      MOV AL,20H    ;不指定中断结束方式
      OUT 20H,AL    ;发EOI命令,对微机
      POP …         ;恢复寄存器(与保护时的顺序相反)
       …
      POP …
	IRET           ;中断返回
INT-P ENDP

中断应用程序设计

中断的实际应用有两种情况:一是利用微机系统配置的中断资源,直接调用来开发自己的中断系统;二是用户自己设计的中断系统,通常是在单片机上或单板机上设计的中断系统。下面举例说明利用系统的中断资源来设计的中断应用系统的方法。

例:中断用于数据采集系统

(1)要求:从通道5采集1024个8位数据;数据以中断方式送缓冲区BUFR;结束信号EOC经GAL20V8组合后送IRQ9去中断请求;指定方式结束;A/D转换器ADC0809的选择端口地址320H,启动为321H,读数端口为322H;主片82C59A端口:OCW1端口为21H,OCW2端口20H;从片OCW1的端口0A1H, OCW2的端口为0A0H。

电路图:

android中断服务程序 中断服务是什么_fpga_23


(2)分析:

中断源:由ADC0809的转换结束信号EOC的上升沿申请中断。

中断:由于是从IRQ9引入中断请求,因此连到从片82C59的IR1端口,其中断号是71H; 82C59的两个端口地址是0A0H和0A1H。

操作:由于是主从结构的82C59中断控制,所以对主从片都要进行操作。

在程序设计时,按主程序和服务程序两个模块进行设计,而利用系统的中断资源,不需要进行初始化。

android中断服务程序 中断服务是什么_单片机_24


android中断服务程序 中断服务是什么_嵌入式_25


程序

MOV	AX,3571H		;取原中断向量并保存
	INT	21H
	MOV	INT0A-OFF,BX
	MOV	BX,ES
	MOV	INT0A-SEG,BX
	CLI				;置新中断向量
	MOV	AX,2571H
	MOV	DX,SEG A-D
	MOV	DS,DX
	MOV	DX,OFFSET A-D
	INT	21H
	MOV	AX,DATA		;恢复数据段
	MOV	DS,AX
	STI	
	IN	AL,21H      ;开放从片中断(主片IR2)
	AND	AL,0FBH
	OUT	21H,AL
	MOV	DX,0A1H		  ;开放IRQ9
	IN	AL,DX
	AND	AL,0FDH
	OUT	DX,AL
;程序主体
	MOV	CX,1024		  ;设置采样次数
	MOV	AX,OFFSET BUFF
	MOV	POINT,AX		  ;设置内存指针
	MOV	DX,320H		  ;选择通道号
	MOV	AL,05H
	OUT	DX,AL
	BEGIN:MOV	  DX,321H		;启动转换
	MOV	AL,00H
	OUT	DX,AL
	STI				;开中断
	HLT				;等待中断
	DEC	CX			;修改采样次数
	JNZ	BEGIN			;没有结束,继续
	CLI				;恢复原中断向量
	MOV	AX,2571H
	MOV	DX,INT0A-SEG
	MOV	DS,DX
	MOV	DX,INT0A-OFF
	INT	21H	
	MOV	AX,DATA		;恢复数据段
	MOV	DS,AX
	STI
	IN	AL,21H		;屏蔽主8259
	OR	AL,04H
	OUT	21H,AL
	MOV	DX,0A1H		;屏蔽IRQ9
	IN	AL,DX
	OR	AL,02H
	OUT	DX,AL
	MOV	AX,4C00H		;返回DOS
	INT	21H	
	;中断服务程序
A-D	PROC	FAR
	PUSH	AX			;保护现场
	PUSH	DX
	PUSH	DI
	CLI				;关中断
	MOV	DX,322H		;读数据
	IN	AL,DX
	NOP
	MOV	DI,POINT		;存数据
	MOV	[DI],AL
	INC	DI
	MOV	POINT,DI		;修改指针
	MOV	AL,20H		;主片的中断结束命令
	OUT	20H,AL
	MOV	DX,0A0H 		;从片的中断结束命令
	MOV	AL,61H
	OUT	DX,AL
	POP	DI			;恢复现场
	POP	DX
	POP	AX
	STI				;开中断
	IRET
A-D	ENDP