《8259中断控制器实验》的实验报告

合集下载

西电 机电微机原理实验报告

西电 机电微机原理实验报告

微机原理实验报告姓名:学号:实验一8259中断实验一、实验目的1.掌握PC机中断处理系统的基本原理。

2.掌握外部扩展中断源的设计方法。

3.学会编写中断服务程序。

二、实验原理PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。

中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。

三、实验内容实验要求实现8259控制器的IR1、IR3两路中断都可以通过IRQ向PC机发起中断请求,用SP1、SP2单次脉冲模拟两个中断源。

IR1中断时,在它的中断服务程序中编程显示“IR1 OK AND EXIT!”;IR3中断时,在它的中断服务程序中编程显示“IR3 OK AND EXIT!”。

采用查询方式完成。

图1-1 扩展中断电路四、实验步骤1、连接线路SP1和SP2分别接到IR1和IR3,IR1和IR3与L0和L1指示灯相连,8259CS 接到Y0上,最后将/RD、/WR、INT分别与IOR、IOW、IRQ相连接,连接好后打开电源。

2、编写程序3、汇编、编译、连接及运行五、实验程序DATA SEGMENTIOPORT EQU 0FF00H-0280HMY8259_ICW1 EQU IOPORT +280H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU IOPORT +281H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU IOPORT +281H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU IOPORT +281H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU IOPORT +281H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU IOPORT +280H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU IOPORT +280H ;实验系统中8259的OCW3端口地址MSG1 DB 0DH,0AH,'DVCC PCI CARD INTERRUPT',0DH,0AH,'$'MSG2 DB 0DH,0AH,'PRESS ANY KEY TO EXIT!',0DH,0AH,'$'MSG3 DB 0DH,0AH,'IR1 OK AND EXIT!',0DH,0AH,'$'MSG4 DB 0DH,0AH,'IR3 OK AND EXIT!',0DH,0AH,'$'DATA ENDSSTACKS SEGMENTDB 100 DUP (?)STACKS ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKS,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKSMOV SS,AXMOV AX,DATAMOV DS,AXMOV DX,OFFSET MSG1MOV AH,09HINT 21HMOV DX,OFFSET MSG2MOV AH,09HINT 21HSTART1: MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4OUT DX,ALMOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2MOV AL,08HOUT DX,ALMOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4MOV AL,01H ;非自动结束EOIOUT DX,ALMOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1MOV AL,0F5H ;打开IR1和IR3的屏蔽位OUT DX,ALQUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令MOV AL,0CHOUT DX,ALNOPNOPNOPMOV DX,MY8259_OCW3IN AL,DX ;读出查询字TEST AL,80H ;判断中断是否已响应JZ QUERY ;没有响应则继续查询AND AL,07HCMP AL,01HJE IR1ISR ;若为IR1请求,跳到IR1处理程序CMP AL,03HJE IR3ISR ;若为IR1请求,跳到IR1处理程序JMP EOIQUERY1: MOV DL,0FFHMOV AH,06HINT 21HJZ START1MOV AH,4CHINT 21HIR1ISR: MOV DX,OFFSET MSG3 ;IR1处理,显示字符串'IR1 OK AND EXIT'MOV AH,09HINT 21HJMP EOIIR3ISR: MOV DX,OFFSET MSG4 ;IR1处理,显示字符串'IR3 OK AND EXIT'MOV AH,09HINT 21HEOI: MOV DX,MY8259_OCW2 ;向实验系统中8259发送中断结束命令MOV AL,20HOUT DXMOV AL,20H ;SEND EOIOUT 0A0H,ALOUT 20H,ALPOP DSPOP DXPOP AXJMP START1CODE ENDSEND START六、实验结果接好电路,编好程序,打开电源后,两个LED指示L0和L1灯都熄灭;编译、链接、运行程序,8259控制器的IR1、IR3两路中断可通过IRQ向PC机发起中断请求,按下SP1,IR1中断,指示灯L0亮,电脑屏幕上显示“IR1 OK AND EXIT!”;按下SP2, IR3中断,指示灯L1亮,电脑屏幕上显示“IR3 OK AND EXIT!”七、实验中遇到的问题及解决方法最初认为要按照原理图把所有线都接上,后来知道了直接用排线连接就好,同时还能降低短路的可能性。

8259中断控制 实验报告

8259中断控制 实验报告

深圳大学实验报告课程名称:微机原理与接口技术
实验项目名称:8259中断控制实验
学院:信息工程学院
专业:电子信息工程
指导教师:
报告人:学号:201019 班级:电子
实验时间:2012.5.18
实验报告提交时间:2012.6.9
教务处制
实验程序分析:一般中断实验,为了保护现场,程序开头都会引用堆栈把把现在的程序放入堆栈中进行保护,所以,PUSH DS就起到这样的作用.在中断程序结束后
程序入口,还得用POP DS 指令返回现场.
这个实验是关于8259的单中断,不牵涉级联问题,所以,8259的初始化只需要看主片就可以了
时候,一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化字
ICW1,ICW2,ICW3,ICW4,由于8259只有一根地址线,因此对各个控制字的操作是按照一定的顺序并结合某些数据位来进行寻址设置的.当初始化完成后,对8259的操作命令字的寻址是通过。

8259中断控制器实验报告

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中断控制完整实验报告

实验5 8259中断控制实验实验时间2019年11月27日
实验类型■验证性□设计性□综合性
1. 实验目的
掌握8259中断控制器的工作原理
2. 实验内容及过程(主要内容、操作步骤)
利用系统总线上中断请求信号MIR6,设计一个单一中断实验3. 测试数据及实验结果
4. 实验分析及总结(主要考察内容)
1.显示字符“7”时,前面的“0137H”中的“37H”是“7”的ASCII码,若要改变显示的字符,就更改ASCII码。

2.中断服务程序的入口地址有段基址和段内偏移,故有32位,一个中断在中断向量表里面占4个字节,这4个字节就是中断服务程序的入口地址。

实验第一步就是在初始化中断向量表,就是告诉系统中断服务程序在哪里,填上IQR6的段基址和段内偏移(38H-3BH)。

其次就是对8259A主从片进行初始化,很多东西可以不初始化,就用到了主片,8259A从片上也接了一个中断。

再下面就是中断服务程序,实验中中断服务程序有延时,但是在正常编程情况下中断服务程序决不允许有延时,中断服务程序要快进快出
教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结。

8259中断控制实验报告材料

8259中断控制实验报告材料

深圳大学实验报告课程名称:微机原理与接口技术实验项目名称:8259中断控制实验学院:信息工程学院专业:电子信息工程指导教师:报告人:学号:201019 班级:电子实验时间:2012.5.18实验报告提交时间:2012.6.9教务处制STIAA1: NOP ;无限循环,等待中断发生JMP AA1MIR7: STICALL DELAYMOV AX, 0137HINT 10H ;显示字符7MOV AX, 0120HINT 10HMOV AL, 20HOUT 20H, AL ;中断结束命令IRETDELAY: PUSH CX ;延时子程序MOV CX, 0F00HAA0: PUSH AXPOP AXLOOP AA0POP CXRETCODE ENDSEND START实验结果如图所示,能够正确执行设定功能.实验程序分析:一般中断实验,为了保护现场,程序开头都会引用堆栈把把现在的程序放入堆栈中进行保护,所以, PUSH DS就起到这样的作用.在中断程序结束后,为了能回到之前执行的程序入口,还得用POP DS 指令返回现场.这个实验是关于8259的单中断,不牵涉级联问题,所以,8259的初始化只需要看主片就可以了.初始化的时候,一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化字.8259有四个初始化控制字ICW1,ICW2,ICW3,ICW4,由于8259只有一根地址线,因此对各个控制字的操作是按照一定的顺序并结合某些数据位来进行寻址设置的.当初始化完成后,对8259的操作命令字的寻址是通过8259的地址线A0和某些数据位结合来进行的. 其初始化控制字和控制命令辽的赋值理由我已经在注释中给出.另外,在初始化程序中我们用了STI这条指令打开中断,那么进入MIR7中断程序中,我们为什么又执行STI这条指令呢,会不会重复了?经过实验,我们知道这条指令并不是没用的,如果缺少后面这条STI指令,实验中我们会发现,当按一次KK1开关的时候,屏幕会显示一个字符7,但是,再按KK1的时候,就没有反应了,起初并不知道怎么解释这个现象,后来才知道8086CPU执行完一次中断后,会自动将相应的中断位屏蔽,所以,如果我们想按一次KK1就发生一次中断,就得重新在程序中打开中断,也就是STI. 另外,RET指令是短信返回指令,而IRET指令则是中断短程返回指令,一般中断程序也大多是短程的.那么,中断发生的时候,CPU又是怎样进入中断子程序的呢?这就需要我们正确地设置中断向量表的了.实验板上主中断序号7可用,也就是我们得利用3CH-3FH这矢量地址.所以在程序开始的时候,就采用MOV AX, OFFSET MIR7,MOV SI, 003CH,MOV [SI], AX这三句来获得偏移地址IP,接着高地址位置又用MOV AX, CS,MOV SI, 003EH,MOV [SI], AX这三条指令来获得CS. CPU根据CS,IP就能转入正确的中断程序执行中断了.而中断程序结尾处,用了MOV AL, 20H OUT 20H, AL以及IRET这三条指令,是为了说明这是正常的EOI,可以通知8259A此次服务结束.MOV AL, 30HOUT 0A1H, AL ;ICW2MOV AL, 02HOUT 0A1H, AL ;ICW3MOV AL, 01HOUT 0A1H, AL ;ICW4MOV AL, 0FDHOUT 0A1H,AL ;OCW1 = 1111 1101MOV AL, 6BHOUT 21H, AL ;主8259 OCW1STIAA1: NOPJMP AA1MIR7: CALL DELAYMOV AX, 014DHINT 10H ;MMOV AX, 0137HINT 10H ;显示字符7MOV AX, 0120HINT 10HMOV AL, 20HOUT 20H, AL ;中断结束命令IRETSIR1: CALL DELAYMOV AX, 0153HINT 10H ;SMOV AX, 0131HINT 10H ;显示字符1MOV AX, 0120HINT 10HMOV AL, 20HOUT 0A0H, ALOUT 20H, ALIRETDELAY: PUSH CXMOV CX, 0F00HAA0: PUSH AXPOP AXLOOP AA0POP CXRETCODE ENDSEND START实验结果截图如下,能够正确执行设定功能.。

8259中断控制实验报告

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中断控制器)

实验4(8259中断控制器)
1、实验内容
利用实验台上单脉冲作为中断请求信号, 要求每按一次开关产生一次中断,中断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

8259中断控制器实验的实验报告

8259中断控制器实验的实验报告

8259中断控制器实验的实验报告实验报告:8259中断控制器实验一、实验目的本实验的目的是通过对8259中断控制器的实验,掌握和理解8259中断控制器的原理、工作原理和使用方法。

通过实验能够进一步了解中断控制器的中断分配和中断处理等功能。

同时还能够通过实验,对中断优先级以及中断的屏蔽和响应进行深入了解。

二、实验原理1.8259中断控制器简介8259中断控制器是用于管理和控制多个硬件设备的中断请求的重要芯片。

它是一个具有8个中断请求输入和8个中断向CPU输出的优先级解码器。

中断控制器主要由两个部分组成:中断请求器部分和中断控制器部分。

中断请求器部分用于产生中断请求信号,而中断控制器部分用于优先级解码和中断分配。

2.8259中断控制器的工作原理8259中断控制器可以管理多个硬件设备的中断请求,同时对中断信号进行优先级判断和派发给CPU进行相应处理。

当一些硬件设备发生中断时,会发送中断请求信号给8259中断控制器,然后8259将根据中断请求的优先级判断是否屏蔽或者响应该中断请求。

3.8259中断控制器的使用方法在使用8259中断控制器时,首先需要设置中断控制器的工作模式和中断请求的优先级,然后对中断控制器的屏蔽和响应进行相应的配置。

使用中断控制器时,还需要对中断服务程序进行适当的编程,以实现中断的处理逻辑。

三、实验步骤1.实验前的准备工作(1)准备实验所需的开发板和8259中断控制器。

(2)将8259中断控制器与相应的硬件设备连接。

(3)准备PC机和开发板的通信线缆。

2.8259中断控制器的设置和初始化(1)通过编程方式将8259中断控制器设置为特定的工作模式。

(2)设置中断请求(IRQ)的优先级。

3.中断服务程序的编写(1)根据需求编写中断服务程序,即中断处理逻辑。

(2)将中断服务程序与8259中断控制器的相应中断请求进行关联。

4.实验结果的观察和分析(1)观察测试硬件设备的输出结果。

(2)分析实验结果,判断是否成功实现中断控制和处理。

实验一 8259单级中断控制器实验

实验一 8259单级中断控制器实验

实验一8259单级中断控制器实验一、实验目的⒈掌握8259中断控制器的接口方法。

⒉掌握8259中断控制器的应用编程。

二、实验内容利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。

三、实验接线图图6-6四、编程指南⑴8259芯片介绍中断控制器8259A是专为控制优先级中断而设计的芯片。

它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。

因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。

即中断结构可以由用户编程来设定。

同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

⑵本实验中使用3号中断源IR3,“”插孔和IR3相连,中断方式为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示“8259——good”。

如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。

五、实验程序框图IR3中断服务程序:IR7中断服务程序:六、实验步骤1、按图6-6连好实验线路图。

⑴ 8259的INT连8088的INTR;⑵ 8259的INTA连8088的INTA;⑶“”插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;⑷ 8259的CS端接FF80H孔;⑸连JX4→JX17。

2、DJ-8086k软件启动和联机⑴启动和联机。

双击桌面上‘DJ-8086k’快捷图标,即可运行DJ-8086k软件;⑵新建文件:单击菜单栏“文件”或工具栏“新建”图标,即会建立一个新的源程序编辑窗口,此时可在此窗口编辑、输入源程序(注:新建文件扩展名为 .ASM)。

或打开文件F3:单击菜单栏“文件”或工具栏“打开”图标,弹出“打开文件”的对话框,然后选择要装入的源文件,单击“确定”即可装入源文件。

;3、调试程序⑴编译装载F9:打开源文件,依次单击:调试”\“编译装载F9”或工具栏上的编译装载图标,状态栏会提示正在编译、编译成功、正在装载数据、装载数据结束,几秒钟后便会弹出‘源文件调试窗口’,如编译出错,会提示错误信息,待修改源文件正确后,重新编译装载即可;⑵连续运行;单击菜单栏“调试”下的“连续运行”或单击工具栏的连续运行图标,即全速连续运行程序,系统显示8259-1。

8259A中断控制器实验

8259A中断控制器实验

8259A中断控制器实验一、实验目的与要求了解8259A的内部结构、工作原理;了解8259A与8088的接口逻辑;掌握对8259A的初始化编程方法,了解8088是如何响应中断、退出中断的。

复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、编制程序:拨动单脉冲开关,“”送给8259A的IR0,触发中断,8088计数中断次数,显示于F4区的数码管上四、实验原理图五、实验步骤1、连线说明:区:单脉冲3、上下拨动单脉冲开关,拨动二次,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。

六、演示程序.MODEL TINYEXTRN Display8:NEARIO8259_0 EQU 0F000HIO8259_1 EQU 0F001H.STACK 100.DATABUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPCALL Init8259CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1Init8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0FEHOUT DX,ALRETInit8259 ENDPWriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HLEA SI,BufferCALL Display8RETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1MOV DX,IO8259_0MOV AL,20HOUT DX,ALPOP AXPOP DXIRETEND START七、实验扩展及思考1、从8259A收到上升沿,到8088响应中断,试画这个过程的时序图。

实验三 8259中断控制

实验三 8259中断控制

8259中断控制一.实验目的(1)掌握8259中断控制器的工作原理;(2)掌握系统总线上PCI_INTR中断请求的应用编程方法。

二.实验设备PC机一台,TD-PITD实验装置一套。

三.实验要求利用系统总线上中断请求信号PCI_INTR设计一个单中断应用。

使用单次脉冲模拟中断产生。

编写中断处理程序,在显示器频幕上显示一个字符“9”。

四.实验内容1.中断控制器简介中断控制器8259A是专为控制优先级中断而设计的芯片。

它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。

因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。

即中断结构可以由用户编程来设定。

同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

它的管理功能包括:(1)纪录各级中断源请求;(2)判断优先级,确定是否响应和响应哪一级中断;(3)响应中断时,向CPU传送中断类型号。

2.8259的内部结构和引脚图五.实验步骤实验参考程序:实验方法:(1)按下图接线(2)运行Tdpit集成操作软件,根据实验要求编写程序并编译、链接。

(3)使用运行程序命令运行行程序,重复按单次脉冲开关KK+,显示屏会显示字符“9”,说明响应了中断。

六.实验结论1.当IR0连接的开关从断开到闭合时,有上升沿产生,则调用中断服务程序INT_0。

2.8086的中断系统是向量中断方式,内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量,不同的中断向量对应不同的偏移地址;3.中断类型由8359通过数据总线送给8086,8086乘4,而后赋给指令指针,从而转向中断向量表的相应单元取得中断入口地址,之后就进入中断服务程序;4.中断类型的高5位由8359寄存器ICW2决定,低3位由中断源IRx的编码自动填充,IRO~IR7的编码分别是000,001,010,011,100,101,110,111。

(完整word版)东北大学_微机原理实验报告及答案_8259中断控制器

(完整word版)东北大学_微机原理实验报告及答案_8259中断控制器

start1: cli
mov dx,04a0h
mov ax,13h
out dx,ax
mov dx,04a2h
waiting: hint:
mov out mov out mov out mov mov mov mov mov add mov mov sti cmp nop
nop nop nop nop nop nop nop jne nop nop mov xor mov out jmp nop cli nop nop nop nop nop nop nop nop mov nop iret
;初始化中断向量表
mov ax,offset hint
mov ds:[si],ax
add si,2
mov ds:[si],100h
mov ax,0
sti
waiting: cmp ax,55h
nop
hint: code
nop nop nop nop nop nop nop jne nop nop mov xor mov out jmp nop cli nop nop nop nop nop nop nop nop mov nop iret ends end
微机原理
实验报告
专业班级 姓名
学号
实验题目
日期
实验八:8259 中断控制器实验
一、实验目的
1、掌握 8259A 的工作原理。 2、掌握编写中断服务程序方法。 3、掌握初始化中断向量的方法。
二、实验设备
MUT—Ⅲ型实验箱、8086CPU 模块。
三、实验内容
用脉冲发生器作为中断源,每按一次脉冲发生器的按键即产生一次中断。 在中断服 务程序中,通过 74LS273 输出一个数据,以点亮与中断源相对应位置的 LED。

实验九 中断控制器8259实验

实验九 中断控制器8259实验
300H 8255B口 8255B口 301H 8255C口 8255C口 302H 8255控制寄存器 8255控制寄存器 303H
初始化
附录3 发送到LED的值 附录3 发送到LED的值

思考题
① 将A口改为B口,应如何修改程序 口改为B
和连线?
② 修改程序,使之向发光二极管输出的同 修改程序, 时,在显示器上同步输出.
附录1 几个DOS 附录1 几个DOS中断 DOS中断
功能01H,07H和 功能01H,07H和08H 功能描述:从标准输入设备(如:键盘) 功能描述:从标准输入设备(如:键盘)读入一个字 符.该中断在处理过程中将一直处于等待状态直 到有字符可读为止.该输入还可被重定向,如果 这样做,则无法判断文件是否已到文件尾 入口参数:AH=01H,过滤掉控制字符,并回显 入口参数:AH=01H,过滤掉控制字符,并回显 =07H,不过滤掉控制字符,不回显 =07H,不过滤掉控制字符,不回显 =08H,过滤掉控制字符,不回显 =08H,过滤掉控制字符,不回显 出口参数:AL=输入字符的ASCII码 出口参数:AL=输入字符的ASCII码
;LED灯熄灭
MOV AX,3572H INT 21H MOV INT0A_OFF,BX MOV BX,ES MOV INT0A_SEG,BX CLI MOV AX,2572H MOV DX,SEG LEDLIGHT PUSH DS MOV DS,DX MOV DX,OFFSET LEDLIGHT INT 21H POP DS STI IN AL,0A1H AND AL,0FBH OUT 0A1H,AL IN AL,21H AND AL,0FBH OUT 21H,AL
8259主片和从片简图 8259主片和从片简图

完整word版,8259A中断控制器实验

完整word版,8259A中断控制器实验

南京信息工程大学实验(实习)报告实验(实习)名称 8259A中断控制器实验实验(实习)日期 2015.5.12 得分指导教师朱节中计算机系专业网络工程年级 2012 班次 1 姓名学号一. 实验目的1.掌握8259A中断控制器工作原理,熟悉实验中涉及到的中断屏蔽寄存器IMR和中断服务寄存器ISR等的使用方法.2.学会中断处理程序的编写二. 实验内容用8259A的输出作为中断请求信号使8259A产生中断,进入中断后显示一个字符串.1.中断请求通过PC/XT62芯总线的IRQ2端输入,中断源可以是片外8253定时器输出的脉冲,也可以是其它脉冲,也可以是其它脉冲.现用8253做中断源,参看实验21连接8253的线路,并把8253的OUTO和总线槽IR02连接好.2.编写程序,要求每次主机响应外部中断IRQ2时,显示字符串“THIS IS A 8259A INTERRUPT!”(或其它串),中断十次后,程序退出。

三.编程提示1.本实验使用PC/XT机内的8259A芯片,主机启动实际时已奖8259A 中断寄存器前五位初始化为00001,因此,IRQ2的中断号应为0AH。

2.主机吧IRQ2保留给用户使用,而其他外中断已由系统时钟,键盘等占用,因此,编程时要注意系统中已使用的中断请求号。

只须将IMR寄存器中对应IRQ2的位清零,允许IRQ2中断即可。

3.机内8259A初始化为普通结束方式,因此,外中断结束时,必须使用中断结束命令清除中断服务寄存器ISR中的对应位。

4.程序退出时,关闭IRQ2中断,即给IMR中相应位置1,禁止中断。

5.PC 机系统中8259A地址:偶地址 20h奇地址 21h6. PC机系统中IRQ2硬中断为用户保留的。

编程时首先应将IRQ2对应的中断向量(中断号为0ah)保存起来,然后设置新的中断向量以指向中断处理程序。

另外,还要将中断屏蔽寄存器的相应位开放。

典型的程序段如下: MOV AH, 35HMOV AL, OAH ;取0AH号中向量送ES: BXINT 21HPUSH ES ;保存原中断向量PUSH BXPUSH DXMOV DX ,SEG ADINTMOV DS ,DXMOV DX ,OFFSET ADINT ;设置新的中断向量MOV AH ,25HMOV AL ,0AHINT 21HPOP DSIN AL ,21H ;取中断屛蔽寄存器的内容PUSH AX ;保存AND AL ,11111011B ;允许IRQ2中断OUT 21H ,AL7、PC机系统中的8259A工作在全嵌套方式下,在中断处理程序结束时,需要发中断结束命令。

8259中断控制实验

8259中断控制实验

8259中断控制实验8259是一种可编程中断控制器,它可以为CPU管理多个中断源,并将中断请求转换为优先级和中断屏蔽,从而保证CPU不会重复处理中断。

8259的工作原理是,由CPU发送中断请求信号给8259,8259从中断请求中选择最高优先级的请求并将其向CPU发出中断请求信号。

CPU接收到中断请求后,将中断处理程序存入中断向量表,并调用处理程序。

本实验的目的是熟悉8259的工作原理和接口,并学会使用它管理系统中的中断源。

实验设备:- 一台基于x86架构的计算机- 一块8259可编程中断控制器芯片- 一块串口编程板- 一根串口线实验步骤:1. 连接8259芯片到计算机,将8259连接到计算机的I/O总线上,连接好中断请求信号线和CPU的中断引脚INT引脚,将8259的中断输出线连接到CPU的从INT1到INT7的引脚,其中INT0引脚作为级联输出使用。

2. 配置8259芯片,使用8259的控制寄存器对中断源进行配置,包括优先级、中断屏蔽和中断触发方式等。

3. 编写8259驱动程序,使用8259的接口函数实现中断源的管理,包括中断请求、屏蔽、解除屏蔽和中断处理等操作。

4. 进行实验测试,编写测试程序,模拟多个中断源同时发送中断请求信号,测试8259是否可以正确选择最高优先级的中断源,并将中断请求信号发送给CPU。

5. 进行串口输出测试,使用串口编程板连接计算机的串口,编写串口中断程序,在数据接收时产生中断请求,测试8259是否可以正确处理串口中断请求,并将数据传输到CPU。

实验注意事项:1. 在配置8259时,需注意优先级和中断屏蔽的设置,以确保高优先级的中断源优先被处理,同时避免中断屏蔽导致的延迟。

2. 8259在进行中断信号转换时,需要与CPU进行同步,因此在编写驱动程序时,需注意中断处理的时机和中断向量表的设置。

3. 串口编程中使用的是异步通信方式,需要注意数据传输的时序和缓存管理,避免数据丢失或重复传输的情况。

《8259中断控制器实验》的实验报告

《8259中断控制器实验》的实验报告

实验六8259中断控制器实验实验目的(1)学习中断控制器8259的工作原理。

(2)掌握可编程控制器8259的应用编程方法。

实验设备PC微机一台、TD-PIT+实验系统一套。

实验内容1.单中断应用实验(1)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。

(2)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“Hello ”,中断5次后退出。

2 •扩展多中断源实验利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。

编写程序对8259控制器的IR0和IR1中断请求进行处理。

实验原理1.8259控制器的介绍中断控制器8259A 是Intel 公司专为控制优先级中断而设计开发的芯片。

它将中断源 优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A 进行编程,就可以管理 8级中断,并选择优先模式和中断请求方式,即中断 结构可以由用户编程来设定。

同时,在不需增加其他电路的情况下,通过多片 8259A 的级连,能构成多达64级的矢量中断系统。

它的管理功能包括: 1 )记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向 CPU 专送中断类型号。

8259A 的内部结构和引脚如图 6-1所示。

8259A 的命令共有7个,一类是初始化命令字,另一类是操作命令。

8259A 的编程就是根据应用需要将初始化命令字 ICW1-ICW4和操作命令字0CW1-0CW3别写入初始化命令 寄存器组和操作命令寄存器组。

ICW1-ICW4各命令字格式如图 6-2所示,0CW1-0CW 各命令字格式如图6-3所示,其中OCW 用于设置中断屏蔽操作字, OCW 用于设置优先级循环方式和中断结束方式的操作命令字,OCW 用于设置和撤销特殊屏蔽方式、 设置中断查询方式以及设置对8259内部寄存器的读出命令。

微机接口8259中断控制实验

微机接口8259中断控制实验

微机接口8259中断控制实验-CAL-FENGHAI.-(YICAI)-Company One1山西大学计算机与信息技术学院实验报告在实验平台上系统总线单元的INTR信号对应的中断线就是PC机保留中断其中的一个。

对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。

表2-3 PC微机系统中的硬件中断中断号功能中断向量号中断向量地址主8259 IRQ0 时钟/计数器0 08H 0020H~0023H主8259 IRQ1 键盘09H 0024H~0027H主8259 IRQ2 接从片8259 0AH 0028H~002BH主8259 IRQ3 串行口2 0BH 002CH~002FH主8259 IRQ4 串行口1 0CH 0030H~0033H主8259 IRQ5 并行口2 0DH 0034H~0037H主8259 IRQ6 软盘0EH 0038H~003BH主8259 IRQ7 并行口1 0FH 003CH~003FH从8259 IRQ8 实时钟70H 01C0H~01C3H从8259 IRQ9 保留71H 01C4H~01C7H从8259 IRQ10 保留72H 01C8H~01CBH从8259 IRQ11 保留73H 01CCH~01CFH从8259 IRQ12 保留74H 01D0H~01D3H从8259 IRQ13 协处理器中断75H 01D4H~01D7H从8259 IRQ14 硬盘控制器76H 01D8H~01DBH从8259 IRQ15 保留77H 01DCH~01DFH五、实验说明及步骤1、单中断应用实验实验平台上系统总线单元的INTR中断请求信号已经是对应到PC机内部的某一级中断。

INTR产生一个上升沿的中断请求,PC机内部相应的那级中断就会得到响应。

所以,使用INTR中断请求信号,就相当在使用PC机内部相应的那一级中断。

本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。

8259中断控制实验

8259中断控制实验

深圳大学实验报告课程名称:实验项目名称:学院:专业:指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务部制实验目的与要求:1. 掌握8259中断控制器的工作原理。

2. 学习8259的应用编程方法。

方法、步骤:(1)按图4.15连接实验线路。

(2)编写实验程序,经编译、链接无误后装入系统。

(3)运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”,说明响应了中断。

实验过程及内容:1. 中断控制器8259简介在Intel 386EX 芯片中集成有中断控制单元(ICU ),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。

该中断控制单元就功能而言与工业上标准的82C59A 是一致的,操作方法也相同。

从片的INT 连接到主片的IR2信号上构成两片8259的级联。

在TD-PITE 实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。

8259的内部连接及外部管脚引出如图4.5:主片8259A从片8259A INTINT CAS2:0CAS2:0IR2IR4IR6IR7IR1INTR(内核)串口0MIR6MIR7SIR1图4.5 8259内部连续及外部管脚引出图表4.1列出了中断控制单元的寄存器相关信息。

表4.1 ICU 寄存器列表寄存器 口地址 功能描述ICW1(主) ICW1(从) (只写) 0020H 00A0H 初始化命令字1:决定中断请求信号为电平触发还是边沿触发。

ICW2(主) ICW2(从) (只写) 0021H 00A1H 初始化命令字2:包含了8259的基址中断向量号,基址中断向量是IR0的向量号,基址加1就是IR1的向量号,依此类推。

ICW3(主) (只写) 0021H初始化命令字3:用于识别从8259设备连接到主控制器的IR 信号,内部的从8259连接到主8259的IR2信号上。

ICW3(从) (只写) 00A1H 初始化命令字3:表明内部从控制器级联到主片的IR2信号上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六8259中断控制器实验6.1 实验目的(1) 学习中断控制器8259的工作原理。

(2) 掌握可编程控制器8259的应用编程方法。

6.2 实验设备PC微机一台、TD-PIT+实验系统一套。

6.3 实验内容1. 单中断应用实验(1)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。

(2)编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“Hello”,中断5次后退出。

2.扩展多中断源实验利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。

编写程序对8259控制器的IR0和IR1中断请求进行处理。

6.4 实验原理1. 8259控制器的介绍中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。

它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。

同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。

它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。

8259A的内部结构和引脚如图6-1所示。

8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。

8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。

ICW1-ICW4各命令字格式如图6-2所示,OCW1-OCW3各命令字格式如图6-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。

图6-1 8259内部结构和引脚图图6-2(a)ICW1格式图6-2(b)ICW2格式图6-2(c)ICW3格式图6-2(d)ICW4格式图6-3 OCW命令字格式2.8259寄存器及命令的控制访问在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。

对寄存器和命令的访问控制如表6-1所示。

A0 D4 D3 读信号写信号片选操作0 0 1 0 读出ISR,IRR的内容1 0 1 0 读出IMR的内容0 0 0 1 0 0 写入OCW20 0 1 1 0 0 写入OCW30 1 × 1 0 0 写入ICW11 ×× 1 0 0 写入OCW1,ICW2,ICW3,ICW43. PC微机系统中的8259在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表6-2示。

两片8259A的端口地址为:主片8259使用020H和021H两个端口;从片使用0A0H和0A1H两个端口。

系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。

在扩展系统总线上的INTR对应的中断线就是PC机保留中断其中的一个。

对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。

6.5 实验说明及步骤1. 单中断应用实验本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。

中断处理程序完成在屏幕上显示字符“9”。

实验前先运行CHECK程序,得到INTR所对应的中断号、相应的初始化命令字寄存器ICW及操作命令字寄存器OCW的地址、开屏蔽的命令字、中断矢量地址和PCI卡中断控制寄存器INTCSR的地址。

得到这些信息后就可以开始设计实验了。

参考程序流程如图6-5所示。

实验步骤如下。

(1) 确认从PC机引出的两根扁平电缆已经连接在实验平台上。

(2) 首先运行CHECK程序,查看INTR中断号及相关信息。

(3) 参考实验流程图编写程序,然后编译链接。

(4) 将单次脉冲单元的KK1+连接到系统总线上的INTR。

(5) 运行程序,按动KK1+按键,观察中断是否产生。

2.扩展多中断源实验利用实验平台上的8259控制器,可以对总线上的INTR进行扩展。

将8259的INT连接到INTR,8259的8路中断请求线IR0~IR7就成了单一INTR中断请求线的扩充。

这8路中断源共用INTR的中断矢量,共用INTR的中断服务线程。

在INTR的中断服务线程中通过对8259OCW3的查询,以确定是IR0~IR7中哪个产生中断,然后转到相应的服务线程进行处理。

将8259的OCW3中P位置1即可执行查询,查询字格式如图6-6所示。

(a)主程序(b)中断处理程序图6-5 8259中断应用实验(1)参考程序流程图图6-6 8259 OCW3查询命令字格式本实验要求实现8259控制器IR0、IR1两路中断。

用KK1+和KK2+模拟两个中断源,在IR0对应的服务程序中显示字符“0”,在IR1对应的服务程序中显示字符“1”。

实验程序参考流程如图6-7所示。

参考实验电路如图6-8所示。

实验步骤如下:(1) 确认从PC机引出的两根扁平电缆已经连接在实验平台上。

(2) 首先运行CHECK程序,查看INTR中断号及相关信息。

(3) 参考实验流程图编写程序,然后编译链接。

(4) 参考实验接线图连接实验电路。

(5) 运行程序,按动KK1+、KK2+按键,观察中断响应是否正常。

(a)主程序(b)中断处理程序图6-7 8259中断应用实验(2)参考程序流程图图6-8 8259中断应用实验(2)参考接线图6.6 思考题1. 在编程过程中,用到了哪些操作命令字?2. 在执行中断服务程序之前,保存了哪些断点?为什么?单一中断应用实验参考程序;***************根据CHECK配置信息修改下列符号值*******************INTR_IVADD EQU _____H ;INTR对应的中断矢量地址INTR_OCW1 EQU _____H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU _____H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU _____H ;INTR对应的中断屏蔽字PCI_INTCSR EQU _____H ;PCI卡中断控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTCS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCLIMOV DX,PCI_INTCSRSUB DX,19HIN AL,DXMOV DX,PCI_INTCSR ;初始化PCI卡中断控制寄存器MOV AX,1F00H ;向PCI_INTCSR中写入003F1F00HOUT DX,AXADD DX,2MOV AX,003FHOUT DX,AXMOV AX,0000H ;替换INTR的中断矢量MOV ES,AXMOV DI,INTR_IVADDMOV AX,ES:[DI]MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址MOV AX,OFFSET MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址ADD DI,2MOV AX,ES:[DI]MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址MOV AX,SEG MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口段地址MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位IN AL,DXMOV IM_BAK,AL ;保存INTR原中断屏蔽字AND AL,INTR_IMOUT DX,ALSTIWAIT1: MOV AH,1 ;判断是否有按键按下INT 16HJZ WAIT1 ;无按键则跳回继续等待,有则退出QUIT: CLIMOV DX,PCI_INTCSR ;恢复PCI卡中断控制寄存器MOV AX,0000HOUT DX,AXMOV AX,0000H ;恢复INTR原中断矢量MOV ES,AXMOV DI,INTR_IVADDMOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址MOV ES:[DI],AXADD DI,2MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址MOV ES:[DI],AXMOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字MOV AL,IM_BAKOUT DX,ALSTIMOV AX,4C00H ;返回到DOSINT 21HMYISR PROC NEAR ;中断处理程序MYISRMOV AL,39HMOV AH,0EHINT 10HMOV AL,20HINT 10HOVER: MOV DX,PCI_INTCSRSUB DX,19HIN AL,DXMOV DX,PCI_INTCSR ;清PCI卡中断控制寄存器标志位ADD DX,2MOV AX,003FHOUT DX,AXMOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令MOV AL,20HOUT DX,ALMOV AL,20HOUT 20H,ALIRETMYISR ENDPCODE ENDSEND START。

相关文档
最新文档