(完整word版)《8259中断控制器实验》的实验报告
8259、8253实验报告
![8259、8253实验报告](https://img.taocdn.com/s3/m/5ff1724c3b3567ec102d8ac9.png)
数字逻辑与CPU实验报告实验内容:8259中断控制器、8253可编程定时/计数器接口实验姓名:班级:学号:实验一8259中断控制器实验一、实验目的1、掌握8259的工作原理。
2、掌握编写中断服务程序的方法。
3、掌握初始化中断向量的方法。
二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。
三、实验方法(1)连线1、单脉冲发生器输出P+与8259的IR0相连;2、8259的片选CS8259与CS0相连;3、8259的INT与8086的INT相连;4、CS273与CS1相连;5、00与LED1相连;其他线均已连好。
(2)在8086实验系统软件中编辑程序,编译链接后,调试程序,程序流程图如图2。
(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。
四、程序源代码CODE SEGMENT PUBLICASSUME CS:CODEORG 100H;设置堆栈起点0100HSTART: 图2 程序流程图 MOV DX,4A0HMOV AX,13H ;写ICW1,单片8259,要写ICW4OUT DX,AXMOV DX,4A2HMOV AX,80H ;写入ICW2,设定IR0中断类型吗为80HOUT DX,AXMOV AX,01 ;写入ICW4,设定一般嵌套,非自动EOI方式 OUT DX,AXMOV AX,0 ;写入OCW1,设定允许中断。
OUT DX,AXMOV AX,0MOV DS,AXMOV SI,200H ;中断向量预存放在0100:0200H(向量码80H) MOV AX,OFFSET HINT;取中断服务程序的入口地址MOV DS:[SI],AXADD SI 2MOV AX,CSMOV DS:[SI],AXSTI;开中断JMP $;原地跳转HINT:;中断服务程序XOR CX,0FFH;CX全部取反(8位)MOV DX,4B0H;CS273接口的地址,与8个LED灯相连MOV AX,CX;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的的地址MOV AX,20H;写入OCW2,一般EOI命令,全嵌套方式OUT DX,AXIRET;中断返回CODE ENDSEND START五、实验结果程序调试通过后,当我们按一次单脉冲发生器的输出开关,对应连好的灯就会亮。
微机实验三8259中断控制实验
![微机实验三8259中断控制实验](https://img.taocdn.com/s3/m/b92e2c37376baf1ffc4fadf7.png)
ASSUMECS:CODE
START:PUSHDS
MOV AX,0000H
MOVDS,AX
MOV AX,OFFSET MIR7
MOV SI,003CH
MOV[SI],AX
MOVAX,CS
MOVSI,003EH
MOV[SI],AX
MOV AX,OFFSET SIR1
MOV SI,00C4H
MOV[SI],AX
MOVAX,CS
MOVSI,00C6H
MOV[SI],AX
CLI
POP DS
;初始化主片8259
MOVAL,11H
OUT20H,AL
MOVAL,08H
OUT21H,AL
MOVAL,04H
OUT21H,AL
MOVAL,01H
OUT21H,AL
MOVAL,6FH
OUT21H,AL
;初始化从片8259
3.掌握8259级联方式的使用方法。
实验步骤
1. 8259单中断实验
实验接线图如图4.15所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。
(1)按图4.15连接实验线路。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”,说明响应了中断。
MOVAL,11H
OUT0A0H,AL
MOVAL,30H
OUT0A1H,AL
MOVAL,02H
OUT0A1H,AL
MOVAL,01H
OUT0A1H,AL
MOVAL,0FDH
OUT0A1H,AL
8259中断控制 实验报告
![8259中断控制 实验报告](https://img.taocdn.com/s3/m/97442f35a76e58fafab003e2.png)
深圳大学实验报告课程名称:微机原理与接口技术
实验项目名称:8259中断控制实验
学院:信息工程学院
专业:电子信息工程
指导教师:
报告人:学号:201019 班级:电子
实验时间:2012.5.18
实验报告提交时间:2012.6.9
教务处制
实验程序分析:一般中断实验,为了保护现场,程序开头都会引用堆栈把把现在的程序放入堆栈中进行保护,所以,PUSH DS就起到这样的作用.在中断程序结束后
程序入口,还得用POP DS 指令返回现场.
这个实验是关于8259的单中断,不牵涉级联问题,所以,8259的初始化只需要看主片就可以了
时候,一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化字
ICW1,ICW2,ICW3,ICW4,由于8259只有一根地址线,因此对各个控制字的操作是按照一定的顺序并结合某些数据位来进行寻址设置的.当初始化完成后,对8259的操作命令字的寻址是通过。
8259中断控制实验
![8259中断控制实验](https://img.taocdn.com/s3/m/d97d55c976a20029bc642d12.png)
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中断控制器实验报告
![8259中断控制器实验报告](https://img.taocdn.com/s3/m/f9c0b6f80c22590102029dfe.png)
竭诚为您提供优质文档/双击可除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中断控制完整实验报告](https://img.taocdn.com/s3/m/7aca72f901f69e3142329453.png)
实验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单级中断控制器实验内容](https://img.taocdn.com/s3/m/fa2e436a2e3f5727a5e9623b.png)
实验六. 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中断控制实验
![8259中断控制实验](https://img.taocdn.com/s3/m/d027fdd3b90d6c85ed3ac61c.png)
IRQ1——键盘中断
IRQ2——8259从片
IRQ3——串口2
IRQ4——串口1
IRQ5——并行口2
IRQ6——软盘控制器
IRQ7——并行口1
从片:IRQ8——实时时钟中断
IRQ9——RE—DTNECT
IRQA——保留
IRQB——保留
IRQC——保留
IRQD——协处理器
IRQE——硬盘控制器
在dos中输入命令lab8运行程序
显示“program run!Exit after interrupt 40 times”
按键
产生第一次中断,在屏幕上输出“This is SXL_100 interrupt”
按键五次,在屏幕上进行了5次输出
再一次按键,在屏幕上进行了第七次输出
再一次按键,在屏幕上进行了第八次输出
in al,dx ;读入9052中断状态
mov irq_mark,al ;保存9052中断状态
or al,5bh
out dx,al;开放9052中断
;中断向量的保存和设置
mov ah,35h;取72h号(中断类型号)中断向量保存在ES:BX
mov al,int_vect
int 21h
mov ax,es
五、源程序、程序框图、程序函数及过程介绍
程序框图
源程序
data segment
int_vect equ 71h
ioport_0 equ 0dc80h
int_time db 00h ;计数器
csreg dw ?
ipreg dw ?
irq_mark db ? ;9052屏蔽状态
int_mark db ? ;8259屏蔽寄存器状态
实验4(8259中断控制器)
![实验4(8259中断控制器)](https://img.taocdn.com/s3/m/c19517ba650e52ea5418987f.png)
利用实验台上单脉冲作为中断请求信号, 要求每按一次开关产生一次中断,中断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实验](https://img.taocdn.com/s3/m/4d9e8518a76e58fafab00369.png)
实验三、使用8259的单级中断控制实验一、实验目的:1、通过本实验,要掌握8259的使用方法。
二、实验内容8259的IR3引脚接单脉冲发生电路。
产生的中断次数由8086计数,并将计数个数显示在一位LED上。
三、实验分析:本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0-IR7对应的中断类型号为8-F,其中断矢量关系如下表所示。
中断向量表的写入:使用STOSW 命令将AX的内容存储在ES:DI地址。
ES=0,DI=002CH。
AX先为中断服务程序的地址偏移量(offset INTQ3)、后为段地址0000.A.Y6是由74LS138输出端引出的,由CPU地址线的A4、A5、A6分别连到138的ABC端。
所以,可以确定Y6作为选通信号A6A5A4=110。
B.CPU的A0和8259的A0相连。
C.故8259A 有2 个端口地址。
选择的是60H、61H. 60H 用来写ICW1, 61H 用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。
OCW2、OCW3 用口地址60H,OCW1用口地址61H。
所以:对8259的初始化值如下:ICW1:13HICW2:08HICW4:09HIMR :0F7H图中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。
CPU响应中断后,在中断服务中,对中断次数进行计数并显示。
使用[0701H] 存放计数次数,从1到F。
如果〉F ,重新显示。
所以中断服务程序需要更改计数值。
四、实验线路连接1)8259模块上的INT1连8088的INTR(在主板键盘矩阵下面)。
2)8259模块上的INTA连8088的INTA(在主板键盘矩阵下面)。
3)MP区SP插孔和8259的3号中断IR3插孔相连,SP端初始为低电平。
4)8259模块上的D0~D7连到BUS 2区的XD0~XD7。
微机 实验三 8259可编程中断控制器实验
![微机 实验三 8259可编程中断控制器实验](https://img.taocdn.com/s3/m/f252371855270722192ef762.png)
集美大学计算机工程学院实验报告课程名称:微型计算机指导教师:颜庆茁实验成绩:实验编号:实验三实验名称:8259可编程中断控制器实验班级:计算12姓名:学号:上机实践日期:2014.11上机实践时间:2学时一、实验目的1、了解8259A芯片的工作原理。
学会使用8259A中断控制芯片实现对外部中断的响应和处理;2、了解8259A内部结构和熟悉8086的接口逻辑;3、掌握对8259A的初始化编程方法和8086是如何响应中断、退出中断。
二、实验设备STAR系列试验仪一套、星研集成软件环境、PC机一台三、实验内容1、设计8259A与8086CPU硬件连接图,分配8259A端口地址为9000H,9001H;2、设计8259A的外围连接,实现拨动单脉冲开关触发8259A中断,8086计数中断次数并显示于G5区的数码管LED上;3、中断次数的显示需调用系统给定的显示子程序DISPLAY8。
程序开始处必须设置外部连接,告诉汇编程序该显示程序在何处(即对应单元必须送10H),若要让它显示数字,则把数字值直接送到响应的显示缓冲区单元就可以显示了;4、要保证DISPLAY8能正常显示,必须使得8279键盘/LED控制器能正确运行;5、基于所设计的硬件及其连接,编写程序流程图,并编写程序实现8086对中断次数的计数及显示。
四、实验拓展思考1、从8259A收到上升沿,到8088响应中断,试画出这个过程的时序图。
2、把出发脉冲改为由8253产生,中断时间间隔为1S,设计硬件连接图,编写程序流程图,并设计程序实现。
3、设计一实时时钟。
五、实验步骤1、电路设计2、在STAR系列试验仪上完成连线3、编写程序流程图及汇编程序程序流程图:8259可编程中断控制器实验程序见附录4、在星研集成软件环境中测试程序,并观察STAR系列试验仪中实验结果(1)全速运行程序后,看到LED显示屏上按1s频率刷新,实现秒、分60进制进位,这说明实验结果正确,实现实时时钟。
8259中断控制实验
![8259中断控制实验](https://img.taocdn.com/s3/m/60ab7c89112de2bd960590c69ec3d5bbfc0ada52.png)
深圳大学实验报告课程名称:实验项目名称:学院:专业:指导教师:报告人: 学号: 班级:实验时间:实验报告提交时间:教务部制一般中断实验,为了保护现场,程序开头都会引用堆栈把把现在的程序放入堆栈中进行保护,所以.PUS.DS就起到这样的作用.在中断程序结束后,为了能回到之前执行的程序入口,还得用PO.D.指令返回现场.这个实验是关于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这矢量地址.所以在程序开始的候,就采用MO.AX.OFFSE.MIR7,MO.SI.003CH,MO.[SI].AX这三句来获得偏移地址IP,接着高址位置又用MO.AX.CS,MO.SI.003EH,MO.[SI].AX这三条指令来获得CS.CPU根据CS,IP 就能转入正确的中断程序执行中断了.而中断程序结尾处,用了MO.AL.20. OU.20H.AL以及IRET这三条指令.是为了说明这是正常的EOI, 可以通知8259A此次服务结束.深圳大学学生实验报告用纸注: 1.报告内的项目或内容设置, 可根据实际情况加以调整和补充。
82591实验报告
![82591实验报告](https://img.taocdn.com/s3/m/5daf5819c5da50e2534d7f05.png)
;-------------8259单级中断控制器实验-------------------一、电路图二、汇编程序CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 3400H ;定义起始地址H8: JMP P8259ZXK EQU 0FFDCH ;显示字形口地址ZWK EQU 0FFDDH ;显示字位口地址LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUF DB ?,?,?,?,?,? ;申请字节内存空间Port0 EQU 0FFE0H ;Port0端口地址为0FFE0HPort1 EQU 0FFE1H ;Port1端口地址为0FFE1HP8259: CLI ;关中断CALL WP ;调用WP,初始化显示“P”-----------建立中断向量表--------------------MOV AX,OFFSET INT8259 ;将INT8259偏移地址送到AX中MOV BX,003CH ;中断向量表地址003CH,存放中断子程序偏移地址 MOV [BX],AX ;BX地址为INT8259偏移地址MOV BX,003EH ;中断向量表地址003EH,存放中断子程序段地址 MOV AX,0000HMOV [BX],AXCALL FOR8259 初始化8259MOV SI,0000H SI指向0000HSTI ;等待中断CON8: CALL DIS ;调用显示程序JMP CON8;---------------中断子程序---------------------INT8259:cli ;关中断,设置命令MOV BX,OFFSET BUF ;将BUF偏移地址赋给BXMOV BYTE PTR [BX+SI],07H;将07H放入BX+SI指向的内存中,为字节类型 INC SI ;SI自增1,指向下一个内存单元CMP SI,0007H ;将SI与0007H比较JZ X59 ;当中断次数达到7次时,显示“P”XX59: MOV AL,20HMOV DX,Port0 ;地址端口Port0送DXOUT DX,ALmov cx,0050h ;设置中断服务次数xxx59: push cx ;将CX值堆入栈中保护起来call dis ;调用显示程序DISpop cx ;将CX pop出来loop xxx59 ;当未达到中断次数时继续加1pop cxmov cx,3438hpush cxSTI ;开中断IRETX59: MOV SI,0000H ;SI置0,重新开始CALL WP ;调用WP,显示“P”JMP XX59 ;跳转到XX59;=========8259初始化程序=====================FOR8259:MOV AL,13H ; 00010011送到AXMOV DX,Port0 ;将地址端口Port0送到DXOUT DX,AL ;ICW1设置控制初始化命令字,中断请求为边沿发,一片8259 MOV AL,08H ; 00001000送AXMOV DX,Port1 ;将地址端口Port1送到DXOUT DX,AL ; ICW2设置中断类型08H、09H、0AH、0BH、0CH、0DH、0EH、0FH MOV AL,07H ;00000111送AXOUT DX,AL ;设置ICW4中断为自动结束方式,缓冲方式MOV AL,7FH ;中断地址,中断IR7OUT DX,AL ;OCW1屏蔽低六位RET;---------- 显示“P”子程序-----------------WP: MOV BUF,11HMOV BUF+1,10HMOV BUF+2,10HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HRET;-------------显示子程序-------------------DIS: MOV CL,20HMOV BX,OFFSET BUFDIS1: MOV AL,[BX] ;驱动二极管发光,显示数据“7”PUSH BXMOV BX,OFFSET LEDXLATPOP BXMOV DX,ZXKOUT DX,ALMOV AL,CLMOV DX,ZWKOUT DX,ALPUSH CXMOV CX,0100HDELAY: LOOP $ ;延时函数,延时1SPOP CXCMP CL,01HJZ EXITINC BXSHR CL,1JMP DIS1 ;显示数据EXIT: MOV AL,00HMOV DX,ZWKOUT DX,ALRET;--------------------------CODE ENDSEND H8三、实验步骤1、连接硬件电路。
实验六 8259中断控制器实验
![实验六 8259中断控制器实验](https://img.taocdn.com/s3/m/6125734bfe4733687e21aa3a.png)
实验六 8259中断控制器实验实验项目名称:8259中断控制器实验实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:2一、实验目的1、熟悉并且理解中断技术,体验中断技术对于实时的可编程系统的意义。
2、掌握中断技术所涉及的线路连接、初始化、优先级、屏蔽、中断响应、转入中断服务程序、中断结束、反复接收中断的过程与参数设置,尤其是硬件处理与软件处理的交汇点——中断向量表。
3、掌握中断控制各参数的初始化和更新方法。
二、实验内容和要求1、用单脉冲发生器(P0)作中断源,每按一次产生一次中断申请,改变一个发光二极管的亮灭状态。
如果没有中断源,则不产生中断,发光二极管的亮灭状态保持不变。
2、实验原理图三、实验主要仪器设备和材料1、EL实验箱2、计算机3、中断控制板四、实验方法、步骤及结果测试1、将中断控制板插入EL实验箱左上角的40针插座上;2、将单脉冲发生器的输出P0与8259A中断控制板的中断源IR0相连;3、将8259中断控制板的片选信号CS59与CS7相连;4、从CS0~CS7片选信号中选一个信号CS1(04b0h)与输出接口芯片74LS273的片选信号CSU8相连,74LS273的输出信号SO0接一个发光二极管L1;5、编程并调试,在中断服务程序设置断点,按下PUL键、产生单脉冲后,能够观察到发光二极管亮灭控制器的状态翻转,以及相应的发光二极管的亮灭;6、实验源程序(实验程序名T4.ASM)Assume cs:codeCode segment publicOrg 100hStart:Mov dx,3f0h ;8259初始化Mov al,13h ;ICW1设置Out dx,alMov dx,3f2hMov al,80hOut dx,al ;ICW2设置中断类型为80HMov al,03hOut dl,al ;ICW4设置Mov ax,00hOut dx,al ;OCW1设置,允许所有8个中断Mov ax,00h ;设置中断向量表OUT DX,AXMOV AX,00hMov ds,axMov si,200hMov ax,offset hintMov ds:[si],axAdd si,2Mov ds:[si],0100h ;设置中断服务程序入口地址XOR AL,AL ;初始化发光二极管亮灭控制器STI ;IF<-1,开中断Waiting:NOPJMP waiting ;在主程序无限循环Hint: ;中断服务子程序XOR AL,1 ;每响应中断、进入中断服务程序,发光二极管状态翻转一次MOV DX,04B0HOUT DX,ALIRETCode endsEnd start说明:8086的中断系统是向量中断方式,不同类型的中断向量存于不同的位置,其计算方法是:中断类型N*4中断类型的高5位由8259读出,低3位有IR的编码确定,IR0=000IR1=001...IR7=111五、实验报告要求1、试说明本实验中8259A中断控制器各寄存器ICW1、ICW2、ICW4、OCW1的初始化设置含义。
8259中断控制实验报告
![8259中断控制实验报告](https://img.taocdn.com/s3/m/980bb716bf23482fb4daa58da0116c175e0e1e4e.png)
8259中断控制实验一.实验目的1. 掌握8259 中断控制器的工作原理。
2. 掌握系统总线上IR1,IR2 中断请求的应用编程方法。
二.实验设备IA-32 架构的微机系统及应用教学平台一套。
三.实验原理3.1 中断控制器8259简介中断控制器8259 是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达64 级的矢量中断系统。
它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。
8259 的内部结构和引脚如图1 所示。
图 1 8259 内部结构和引脚图8259 的命令共有7 个,一类是初始化命令字,另一类是操作命令。
8259 的编程就是根据应用需要将初始化命令字ICW1-ICW4 和操作命令字OCW1- OCW3 分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4 各命令字格式如图2所示,OCW1-OCW3各命令字格式如图3 所示,其中OCW1 用于设置中断屏蔽操作字,OCW2 用于设置优先级循环方式和中断结束方式的操作命令字,OCW3 用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259 内部寄存器的读出命令。
图 2(a) ICW1格式图 2(b) ICW2格式图 2(c) ICW3格式图 2(d) ICW4格式图 3 OCW 命令字格式3.2 8259寄存器及命令的控制访问在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
对寄存器和命令的访问控制如表1所示。
表 1 8259 寄存器及命令的访问控制3.3 EPC 微机系统中的8259在80x86 系列EPC 微机系统中,系统中包含了两片8259 中断控制器,经级连可以管理15 级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表2 示。
实验九 中断控制器8259实验
![实验九 中断控制器8259实验](https://img.taocdn.com/s3/m/100f60d7c1c708a1284a446c.png)
初始化
附录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中断控制器实验](https://img.taocdn.com/s3/m/b771c9317fd5360cbb1adb14.png)
南京信息工程大学实验(实习)报告实验(实习)名称 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工作在全嵌套方式下,在中断处理程序结束时,需要发中断结束命令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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所示。
表6-1 8259寄存器及命令的访问控制3. 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-2 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。