8259中断控制实验
实验十五 8259可编程中断控制器

实验十五 8259可编程中断控制器一、实验目的1、熟悉8259基本功能和初始化的命令方式。
2、掌握8259在8086/8088系统中的使用。
3、掌握中断服务程序的编写和中断服务程序电路的设计。
二、使用技术准备1、早期的PC/XT微机中只有一片8259A中断控制器,可接受并处理8级中断。
IBM-PC XT机外中断请求的设置XT机8级外中断表2、PC/AT微机系统的外中断286以上的(PC/AT)微机系统的CPU采用了更高配置的芯片,系统中有两个8259A芯片,接成级连方式,可管理15级中断。
主8259A的口地址为20H、21H,从8259A的口地址为A0H、A1H。
硬件中断源与中断类型对照表中断向量:中断服务程序的入口地址。
中断向量的作用:CPU响应中断后,中断向量将引导CPU去执行相应的中断服务序。
中断向量由两部分组成:1、中断服务程序所在代码段的段基地址(2个字节)。
2、中断服务程序入口的有效地址(2个字节)。
中断向量表我们给每一种中断都安排一个中断类型号。
IBM PC机的中断系统能处理256种类型的中断,类型号为0~0FFH。
每种类型的中断都由相应的中断服务程序来处理,中断向量表就是各中断服务程序的地址表。
PC机存储器最低的1K字节(地址从0~3FFH),存放中断向量,中断向量表中的256项中断向量对应256中断类型,每项占四个字节,其中二个高位字节存放中断服务程序的段地址(16位),二个低位字节存放偏移段地址(16位)。
因为各个服务程序的段地址和偏移地址在中断向量表中按中断类型号顺序存放,所以每类型中断向量的地址可由中断类型号乘以4得出.例如:中断类型4AH的中断向量地址为4AH×4=128H,既128H、129H两个字节存放中断服务程序的偏移地址IP, 12AH、12BH两个字节存放中断服务程序的段地址,取出段地址和偏移地址,CPU就可转入中断服务程序。
中断操作的5个步骤:(1)取中断类型号;(2)计算中断向量地址;(3)取中断向量,偏移地址送IP,段地址送CS;(4)根据CS:IP转入中断服务程序;(5)中断返回到INT指令的下一条指令。
8259中断控制实验

8259中断控制实验1 实验目的1. 掌握8259中断控制器的工作原理;2. 学习8259的应用编程方法;3. 掌握8259级联方式的使用方法。
2 实验设备PC机一台,TD-PITE实验装置一套。
3 实验内容及步骤1. 中断控制器8259简介在Intel 386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。
该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。
从片的INT连接到主片的IR2信号上构成两片8259的级联。
在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。
8259的内部连接及外部管脚引出如图2-3-1所示。
INTR串口0MIR6MIR7SIR1图2-3-1 8259内部连续及外部管脚引出图表2-3-1列出了中断控制单元的寄存器相关信息。
表2-3-1 ICU寄存器列表初始化命令字1寄存器(ICW1)说明见图2-3-2所示。
ICW1图2-3-2 初始化命令字1寄存器初始化命令字2寄存器(ICW2)说明见图2-3-3所示。
7ICW2中断向量地址图2-3-3 初始化命令字2寄存器初始化命令字3寄存器(ICW3)说明,主片见图2-3-4,从片见图2-3-5。
7ICW3(主片)图2-3-4主片初始化命令字3寄存器7ICW3(从片)图2-3-5 从片初始化命令字3寄存器初始化命令字4寄存器(ICW4)说明见图2-3-6。
7ICW4图2-3-6 初始化命令字4寄存器操作命令字1寄存器(OCW1)说明见图2-3-7。
OCW1图2-3-7 操作命令字1寄存器操作命令字2寄存器(OCW2)说明如图2-3-8所示。
7OCW2图2-3-8 操作命令字2寄存器操作命令字3寄存器(OCW3)说明如图2-3-9所示。
7OCW3图2-3-9 操作命令字3寄存器查询状态字(POLL )说明如图2-3-10所示。
微机实验三8259中断控制实验

姓名:学号:2.3 8259中断控制实验2.3.1 实验目的1. 掌握8259中断控制器的工作原理;2. 学习8259的应用编程方法;3. 掌握8259级联方式的使用方法。
2.3.2 实验设备PC机一台,TD-PITE实验装置一套。
2.3.3 实验内容及步骤1、8259单中断实验8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。
图2-3-11 8259单中断实验接线图实验步骤(1)按图2-3-11连接实验线路;(2)编写实验程序,经编译、链接无误后装入系统;(3)运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”以说明响应了中断。
实验结果分析主程序运行过程中遇到中断请求,进而响应中断请求,即在屏幕上输出字符“7”。
实验流程图2、主8259 多中断实验实验步骤:(1)按上图所示完成实验电路连线。
KK1+连接到主片8259的IR7上,KK2+连接到从片8259的IR6上。
(2)打开PC机,运行Wmd86软件,进入Wmd86集成开发环境。
(3)对程序进行编译、连接、加载和运行,并验证实验程序的正确性。
(4)分别按动单次脉冲开关KK1+或KK2+时,显示屏上会显示什么信息,将屏幕截图填在实验报告数据处理分析部分的表2中。
(5)如果同时按KK1+和KK2+时,显示屏上会显示什么信息,并在实验结论对实验结果进行解释。
流程图中断请求分析与实验一相比,中断向量表多存储了M6。
主程序在运行过程中接到中断请求,于是响应中断,在处理中断程序的过程中再次接到中断请求,于是再次响应中断,处理中断程序。
处理完后逐层返回。
3. 8259级联实验实验接线图如图2-3-12所示,KK1+连接到主片8259的IR7上,KK2+连接到从片8259的IR1上,当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。
编写程序。
实验步骤(1)按图2-3-12连接实验线路;(2)输入程序,编译、链接无误后装入系统;(3)运行程序,按动KK1+或KK2+,观察实验结果,验证实验程序的正确性; (4)若同时按下KK1+和KK2+,观察实验结果,解释实验现象。
8259中断控制器实验报告

竭诚为您提供优质文档/双击可除8259中断控制器实验报告篇一:8259中断控制器实验报告8259中断控制器实验报告作者:一实验目的1,掌握8259A的工作原理。
2,掌握编写中断服务程序方法。
3,掌握初始化中断向量的方法。
二,实验设备cpu挂箱,8086cpu模块图1-cpu挂箱三,实验内容用电平开关的输出作为中断源,每个开关对应于一个中断源。
在中断服务程序中,通过74Ls273输出一个数据,以点亮于中断源对应位置的LeD灯。
四,实验原理1.本实验用到三部分电路:电平开关电路、简单I/o扩展电路和8259中断控制器电路;2.8086的中断系统是向量中断方式,内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量,不同的中断向量对应不同的偏移地址;3.中断类型由8359通过数据总线送给8086,8086内部电路会将该类型值自动乘4,而后赋给指令指针,从而转向中断向量表的相应单元取得中断入口地址,之后就进入中断服务程序;4.中断类型的高5位由8359寄存器Icw2决定,低3位由中断源IRx的编码自动填充,IRo~IR7的编码分别是000,001,010,011,100,101,110,111。
五,实验步骤1,实验接线cs0-cs8259cs1-cs27300~07-LeD1~LeD8K1~K8-IR0~IR7InT-InT(8086cpu板)InTA-InTA(8086cpu板)2,编译调试程序3,全速运行程度,拨动某一电平开关,观察LeD的亮灭情况。
六,实验结果全速运行程序,由上向下拨动开关时,相应位置的LeD灯点亮,其余LeD灯全灭七,源代码Assumecs:coDecoDesegmenTpubLIcoRg100hsTART:moVcx,0sTART1:cLImoVDx,04A0hmoVAx,13houTDx,AxmoVDx,04A2hmoVAx,80h ouTDx,AxmoVAx,01houTDx,AxmoVAx,00houTDx,AxnopmoVAx,0moVDs,AxmoVADDDI,2DI,200hmoVDs:[DI],100h;初始化中断向量表moVAx,oFFseTint0moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint1moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint2moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint3moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint4moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint5moVDs:[DI],AxADDDI,2moVAx,oFFseTint6moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint7moVDs:[DI],AxADDDI,2;上述程序为芯片8259的初始化程序moVDs:[DI],100hmAIn:moVAx,0sTIwAITIng:cmpAx,0hJewAITIngmoVDx,04b0houTDx,AxmoVcx,0 DeLAY:LoopDeLAYJmpsTART1Int0:cLInopmoVAx,oFehIReTInt1:cLInopmoVAx,oFDhIReTInt2:cLInopmoVAx,oFbhIReTInt3:cLInopmoVAx,oF7hIReTInt4:cLInopmoVAx,oeFhIReTInt5:cLInopmoVAx,oDFhIReTInt6:cLInopmoVAx,obFhIReTInt7:cLInopmoVAx,o7FhIReT篇二:8259中断控制实验报告深圳大学实验报告班级:实验时间:实验报告提交时间:教务处制篇三:8259中断控制实验报告实验六8259中断控制一、实验目的1.学习8086/8088cpu中断系统的知识。
实验六8259单级中断控制器实验内容

实验六. 8259单级中断控制器实验内容一、8259单级中断控制器实验目的:1.掌握8259中断控制器的接口方法.2.掌握8259中断控制器的应用编程.二、实验内容:本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量关于如下表所示。
8259中断源中断类型号中断矢量表地址IR0 8 20H~23HIR1 9 24H~27HIR2 A 28H~2BHIR3 B 2CH~2FHIR4 C 30H~33HIR5 D 34H~37HIR6 E 38H~3BHIR7 F 3CH~3FH根据实验原理图5-14,8259A和8088系统总线直接相连,8259A 上连有一系统地址线A0,故8259A 有2 个端口地址,本系统中为20H、21H。
20H 用来写ICW1, 21H 用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。
OCW2、OCW3 用口地址20H,OCW1用口地址21H。
图5-14中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。
如果中断源电平信号不符规定要求则自动转到7号中断,显示"Err"。
CPU响应中断后,在中断服务中,对中断次数进行计数并显示,计满5次结束,显示器显示"8259Good"。
三、实验线路连接:8259A的IR3插孔和脉冲发生器单元SP插孔相连。
SP插孔初始电平置为低电平。
四、实验软件清单:见随机光盘,文件名为H8259-1.ASM五、实验步骤:1、按图5-14连好实验线路2、运行实验程序:在DVCC-8086JHN上显示"8259-1"。
3、按AN按键,每按二次产生一次中断,在显示器左边一位显示中断次数,满5次中断,显示器显示"8259 good"。
8259中断实验

共享知识分享快乐XX学院实验报告实验名称姓名学号班级教师日期一、实验内容与要求1.1 实验内容本次实验分为如下3个子实验:(1)单中断请求实验:利用系统总线上中断请求信号MIR7,设计一个单一中断请求实验;(2)双中断优先级实验:利用系统总线上中断请求信号MIR6和MIR7,设计一个双中断优先级应用实验,观察8253对中断优先级的控制;(3)级联中断实验:利用系统总线上中断请求信号MIR7和SIR1,设计一个级联中断应用实验。
1.2 实验要求本次实验中三个子实验的实验要求如下:(1)单中断请求实验:单脉冲KK1+与主片8259的IR7相连。
每按KK1+,进入一次中断,输出7;(2)双中断优先级实验:单脉冲KK1+连主片8259的IR7,KK2+连其IR6。
每当KK1+按下时显示“7”,每当KK2+按下显示“6”;(3)级联中断实验:单脉冲KK1+连主片8259的IR7,KK2+连从片的IR1。
每当KK1+按下时显示“M7”,每当KK2+按下显示“S1”。
二、实验原理与硬件连线2.1 实验原理(1)中断控制器8259简介在Intel 386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。
该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。
从片的INT连接到主片的IR2信号上构成两片8259的级联。
在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。
8259的内部连接及外部管脚引出如图1-1:INTR串口0MIR6MIR7SIR1图1-1 8259内部连续及外部管脚引出图表1-1列出了中断控制单元的寄存器相关信息。
表1-1 ICU寄存器列表初始化命令字1寄存器(ICW1)说明见图1-2所示。
7ICW1图1-2 初始化命令字1寄存器初始化命令字2寄存器(ICW2)说明见图1-3所示。
8259中断控制实验报告

8259中断控制实验报告实验报告:8259中断控制实验一、实验目的:学习和掌握8259中断控制器的工作原理和使用方法。
二、实验设备:计算机、8259中断控制器芯片、连接线、示波器等。
三、实验原理:1.8259中断控制器简介8259是Intel公司推出的一个通用中断控制器芯片,它可以管理多种设备的中断请求,并对中断请求进行优先级排序和处理。
8259具有级联功能,可以通过级联实现更多的设备中断管理。
2.8259工作原理8259中断控制器有两个主要模块:中断请求译码器和中断向量地址寄存器。
中断请求译码器用于判断中断请求的优先级,按照优先级排序,将中断请求发送给CPU。
中断向量地址寄存器用于存储中断向量的地址,CPU根据中断向量的地址来执行相应的中断服务程序。
3.8259中断控制器的寄存器8259中断控制器有多个重要的寄存器,包括中断屏蔽寄存器、中断请求寄存器、中断服务地址寄存器等。
中断屏蔽寄存器用于屏蔽或打开特定中断请求。
中断请求寄存器用于存储当前的中断请求状态。
中断服务地址寄存器用于存储中断向量的地址。
四、实验内容:1.配置8259中断控制器将8259中断控制器连接到计算机,并通过连接线将适当的引脚连接到需要中断控制的设备上。
2.编写中断服务程序根据实验要求,编写相应的中断服务程序,并将其存储在中断服务地址寄存器指定的内存地址中。
3.设置中断向量地址将中断向量的地址存储在中断向量地址寄存器中,使CPU能够根据中断请求执行相应的中断服务程序。
4.测试中断控制功能通过测试设备向8259中断控制器发送中断请求,观察计算机是否能正确处理中断请求,并执行相应的中断服务程序。
五、实验结果与分析:经过以上实验步骤,我们成功配置了8259中断控制器,并编写了相应的中断服务程序。
在测试过程中,通过向8259中断控制器发送中断请求,我们观察到计算机正确地处理了中断请求,并执行了我们编写的中断服务程序。
这表明我们成功地完成了8259中断控制实验。
实验4(8259中断控制器)

利用实验台上单脉冲作为中断请求信号, 要求每按一次开关产生一次中断,中断10次后 程序返回DOS。
2、实验目的
掌握PC机中断处理系统的基本原理 学会编写中断服务程序
3、实验基本原理
PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中 断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可 屏蔽中断请求。对于PC/AT及286以上的微机,由于扩展了一片8259中断控制器, 对外提供16个中断源。
D7 IRQ7 1
D6 IRQ6 1
D5 IRQ5 1
D4 IRQ4 1
D3 IRQ3 0
D2 IRQ2 1
Байду номын сангаас
D1 IRQ1 1
D0 IRQ0 1
1:被屏蔽 0:未屏蔽
③ 发送EOI结束中断
中断结束命令(EOI)
MOV AL, 20H OUT 20H, AL
主片8259中断命令 寄存器地址。
电路接线提示
主片
从片
中断屏蔽寄存器口地址:21H 中断命令寄存器口地址:20H
4、程序流程图
开始 设置中断矢量
(IRQ3) 允许中断IRQ3 设置中断次数计
数器 循环等待
主程序
中断开始
显示相应中断的 提示信息
发中断结束命令
计数器减1
为0吗? Y
关闭中断IRQ3
N 中断返回
开中断
返回DOS 中断服务程序
①设置中断向量
IRQ
MOV AX, CS MOV DS, AX MOV DX, OFFSET INT3
MOV AL, 0BH MOV AH, 25H INT 21H
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mov int_mark,al ;;保存中断屏蔽字
and al,0fbh
out 0a1h,al ;;设置中断屏蔽字
pop ds
mov dx,0de03h
mov al,10111000b
out dx,al
mov dx,0de03h
mov al,00000110b
mov dx,0de00h
in al,dx
mov dx,0de01h
out dx,al
;8259中断标志位的清除
mov al,20h;20h=0010000b(OCW2的值),EOI位为1
out 20h,al ;向8259主片发EOI
out 0a0h,al ;向8259从片发EOI
;9052中断邮箱标志的清除
微机一台,SXL_100接口实验仪一套
四、操作方法与实验步骤
1.根据实验内容编写源程序lab8.asm,设置包括两个方面:桥芯片9052和中断控制芯片8259。
2.在dos系统下输入命令行ml lab8.asm进行编译
3.在dos系统下输入命令行lab8运行程序
实验硬件接线操作:
选择一个触发器的正脉冲输出端J区J102+接入9052控制中断的输入端A区的J19—IRQ。
按键若干次后,输出占满整个屏幕
再按若干次,达到40次按键,则程序结束
第二次测试
由于第一次测试中需要产生40次中断才能使实验结束,屏幕大小限制导致没法对中断在屏幕上的输出进行计数,因此第二次测试将改成产生10次中断后程序结束,这样就可直接在屏幕上输出有几次中断输出
Dos中输入lab8运行程序
按键两次,产生两次中断,在屏幕上两次输出
主片:IRQ0——T/C0
IRQ1——键盘中断
IRQ2——8259从片
IRQ3——串口2
IRQ4——串口1
IRQ5——并行口2
IRQ6——软盘控制器
IRQ7——并行口1
从片:IRQ8——实时时钟中断
IRQ9——RE—DTNECT
IRQA——保留
IRQB——保留
IRQC——保留
IRQD——协处理器
IRQE——硬盘控制器
2.学会中断控制器8259接口电路的应用和中断服务程序的编写。
3.了解PCI总线目标接口适配器PCI9052的使用,学会其中断及状态的控制。
二、实验内容和原理
8259中断控制电路:
在PC机中,主板上的两片8259可编程中断控制芯片以主从结构为系统提供了15级中断(每片8级,其中一级作为级联)。从片的中断请求信号INT与主片的IRQ2相连。其中给用户保留的中断号有IRQ10、IRQ11、IRQ12、和IRQ15,这些中断级都设置在从片上。
本科实验报告
课程名称:
接口实验
姓名:
学院:
系:
专业:
学号:
指导教师:
2015年12月26日
浙江大学实验报告
课程名称:接口实验实验类型:普通实验
实验项目名称:8259中断控制实验
学生姓名:专业:学号:
同组学生姓名:指导老师:
实验地点:实验日期:2015年12月22日
一、实验目的和要求:
1.掌握中断的工作原理及编程方式,掌握8259中断控制器工作原理,了解中断控制芯片的初始化及工作方式的设定,熟悉实验中涉及到的各寄存器的使用方法,学会中断程序的编写。
再按键一次,产生第三次中断,在屏幕上输出
再按键七次,产生7次中断,共10次,程序结束,下图中可得出恰好程序输出10次
七、讨论、心得
通过此实验,对8259中断芯片有了更加深入的了解
mov ax,4c00h
int 21h ;;返回DOS
;中断服务程序
interrupt:cli
push ax
push dx
push ds
inc [int_time] ;;计数器加1
mov ax,data
mov ds,ax
mov dx,offset disp1
mov ah,09h
int 21h ;;显示进入中断
实验内容:中断请求信号由J区的正单脉冲J102产生,要求每按一次按钮产生一次中断时,在屏幕上显示字符串“THIS IS SXL_100 INTERRUPT”,控制其若干次后退出中断方式并返回DOS。
桥芯片9052:将I/O地址0+4C的内容置为5BH,使能外设的中断信号。程序退出前要关闭(或恢复)中断使能,即将该地址内容置为17H。
jmp loop1
exit:cli
mov al,irq_mark
mov dx,ioport_0+4ch
out dx,al ;;恢复9052中断状态
mov dx,ipreg
mov ax,csreg
mov ds,ax
mov ah,25h
mov al,int_vect
int 21h ;;恢复中断矢量
sti
中断初始化编程时,若使用主片中的中断级,只需打开主片屏蔽寄存器的相应屏蔽级,并在中断处理完毕后发中断结束命令EOI;而使用从片中的中断级,除对从片相应的级作出处理,还需打开主片IRQ2相应的屏蔽寄存器位,并在中断处理完毕后对主片和从片都要发中断结束命令EOI。
9052的中断控制寄存器:
偏移地址为4CH的32位寄存器。其中高19位为保留位,低13位可根据需要进行8位、16位操作。实验仪上的中断源信号必须通过9052控制器才能到达8259中断控制器,因此需先打开9052控制器的中断使能端,即第6位PCI Interrupt Enable。而在实验程序退出前必须关闭使能端。同时,每次中断结束时还需将9052邮箱的中断标志位(第10、11位)清除,确保下一次中断能进入。
IRQF——保留
PC机中8259中断管理设有相应的矢量地址,主片的IRQ0—IRQ7对应为08H—0FH,从片的IRQ8—IRQ15对应为70H—77H。主片的中断控制寄存器ISR和中断屏蔽寄存器IMR的端口地址分别为20H和21H,从片的中断控制寄存器ISR和中断屏蔽寄存器IMR的端口地址分别为0A0H和0A1H。
1.初始化阶段:PC机的初始化是通过系统初始化程序设置的,初始化命令字已在系统初始化程序中设置完成,因此实验时不必再进行初始化,以免设置不当造成死机等现象。初始化时设置为一般结束方式。
2.中断矢量的设置由DOS的25H号功能完成,原中断矢量的保存由35H号功能实现。
实验中使用的中断源属于外部中断,它是随机产生的,程序设计时应考虑以下几个方面:
③恢复现场。与第①项相应,程序退出时要恢复系统原来的状态,确保系统的正常。
④由于DOS是不能重入的,因此外部中断服务程序中不应使用系统调用。例如,主程序中正在执行DOS系统调用,就出现了“重入”。不能“重入”一是因为进入DOS系统要进行堆栈初始化,二是可能造成两个程序同时进入临界资源
三、主要仪器设备
在dos中输入命令lab8运行程序
显示“program run!Exit after interrupt 40 times”
按键
产生第一次中断,在屏幕上输出“This is SXL_100 interrupt”
按键五次,在屏幕上进行了5次输出
再一次按键,在屏幕上进行了第七次输出
再一次按键,在屏幕上进行了第八次输出
disp1 Leabharlann b 'This is SXL_100 interrupt',0dh,0ah,'$'
disp2 db 'program run! Exit after interrupt 40 times.',0dh,0ah,'$'
data ends
stack segment
db 100 dup(?)
stack ends
中断程序返回前,要清9052邮箱的中断标志:将(I/O地址0+4D)OR 0CH,再返送回I/O地址0+4D地址单元。
中断控制芯片:8259设置好相应级的中断矢量,将相应的中断屏蔽位打开,8259即可响应中断。程序退出前要恢复原屏蔽状态
为维护系统,在设置中断屏蔽位时一般采用保护方式,例如要将第5级中断打开,可使用下列语句:
code segment
assume cs:code,ds:data,ss:stack,es:data
start:cli
mov ax,data
mov ds,ax
mov es,ax
mov ax,stack
mov ss,ax
;9052中断通道的设置
mov dx,ioport_0+4ch;9052中断控制寄存器低八位。
①必须保护现场,即保护中断发生时各寄存器的值。CPU在响应中断时已把各标志和返回地址放入堆栈,保护现场是指通用寄存器的内容、以及除代码段寄存器以外的其它三个寄存器的内容。一般方法是将它们压入堆栈。
②中断处理尽快完成。因为外部中断级别高,在进行外部中断响应时,往往不再响应其它外部中断,因此中断程序中只需完成必要的工作,如设置或清除标志、计数、启动等重要且短暂的操作,对于耗时的操作,可通过设置标志等方式,在主程序中通过查询方式来完成。
IN AL,21H
AND AL,1101 1111B
OUT 21H,AL
中断程序返回前,要清8259的中断标志:
即使OCW2的EOI为1。如:
MOV AL,00100000B
OUT 20H,AL
OUT A0H,AL
中断实验程序须在纯DOS环境下运行。此处指的纯DOS环境是指微机启动时按F8键进入的DOS环境。Windows重启进入MSDOS的方式,由于系统资源被重新规划过,因此不能正常实验。
in al,dx ;读入9052中断状态
mov irq_mark,al ;保存9052中断状态