《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)分析实验结果,判断是否成功实现中断控制和处理。

  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。

相关文档
最新文档