微机原理汇编实验八.docx
- 文档编号:27781889
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:20
- 大小:4.94MB
微机原理汇编实验八.docx
《微机原理汇编实验八.docx》由会员分享,可在线阅读,更多相关《微机原理汇编实验八.docx(20页珍藏版)》请在冰豆网上搜索。
微机原理汇编实验八
微机原理与接口技术课程实验报告
实验名称:
8259中断控制器应用实验________
姓名:
应旻婕学号:
1452536同组:
邓修齐学号:
1452533实验日期:
2016年12月29日
1、实验目的
(1)掌握8259的工作方式及应用编程。
(2)掌握8259的典型应用电路接法。
2、实验内容
(1)利用PC机给实验系统分配的中断线,设计一个单中断应用。
使用单次脉冲模拟中断产生。
编写中断处理程序,在显示器屏幕上显示一个字符。
(2)利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。
编写程序对8259控制器的IR0和IR1中断请求进行处理。
(3)将IR0,IR1改为IR6,IR7,观察实验结果。
3、实验原理
(1)8259控制器的介绍
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:
a)记录各级中断源请求;
b)判别优先级,确定是否响应和响应哪一级中断;
c)响应中断时,向CPU传送中断类型号。
8259A的内部结构和引脚如图5-3-1所示。
8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。
8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4各命令字格式如图5-3-2所示,OCW1-OCW3各命令字格式如图5-3-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
图5-3-18259内部结构和引脚图
图5-3-2(a)ICW1格式
图5-3-2(b)ICW2格式
图5-3-2(c)ICW3格式
图5-3-2(d)ICW4格式
图5-3-3OCW命令字格式
(2)8259寄存器及命令的控制访问
在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
对寄存器和命令的访问控制如表5-3-1所示。
表5-3-18259寄存器及命令的控制访问
(3)PC微机系统中的8259
在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表5-3-2示。
两片8259A的端口地址为:
主片8259使用020H和021H两个端口;从片使用0A0H和0A1H两个端口。
系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。
在扩展系统总线上的INTR对应的中断线就是PC机保留中断其中的一个。
对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。
表5-3-2PC微机系统中的硬件中断
4、实验说明及步骤
中断查询方式应用实验
8259支持查询方式检测中断请求,具体过程为:
设置8259OCW3中的P位为1即可执行查询命令,8259将下一个I/O读命令视作一次中断响应。
如果有中断请求,则置ISR中的相应位并读优先级。
从OCW3写操作到I/O读操作期间禁止中断,读出字节的最高位为1表示有中断,最低3位(D0-D2)为最高优先级中断请求源的编码。
查询字格式如图5-3-4所示。
图5-3-48259OCW3查询字格式
本实验要求使用这种方法编写程序处理实验单元8259IR0和IR1请求的中断,IR0请求在屏幕上显示字符“0”,IR0请求则在屏幕上显示字符“1”以示中断到来。
IR0和IR1分别用一个单次脉冲的上升沿模拟中断产生。
参考流程如图5-3-5所示,参考实验接线图如图5-3-6所示。
图5-3-5实验参考流程图
图5-3-6参考实验接线图
实验步骤如下:
a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。
b)运行Tdpit集成操作软件,查看系统资源分配情况,记录与所用片选信号对应的I/O端口始地址。
c)参考实验流程图编写程序,注意使用正确的端口地址,然后编译链接。
d)参考实验接线图连接实验线路。
e)运行程序,按动KK1+、KK1+按键,观察中断响应是否正常。
f)将IR0,IR1改为IR6,IR7,观察实验结果。
拓展实验:
将IRO,IR1修改为IR6,IR7的实验代码
5、实验代码及注释
8259中断查询方式应用实验代码
;***********根据查看端口资源修改下列符号值*******************
IOY0EQU0D800H;片选IOY0对应的端口始地址
;************************************************************
MY8259_ICW1EQUIOY0+00H;实验系统中8259的ICW1端口地址
MY8259_ICW2EQUIOY0+04H;实验系统中8259的ICW2端口地址
MY8259_ICW3EQUIOY0+04H;实验系统中8259的ICW3端口地址
MY8259_ICW4EQUIOY0+04H;实验系统中8259的ICW4端口地址
MY8259_OCW1EQUIOY0+04H;实验系统中8259的OCW1端口地址
MY8259_OCW2EQUIOY0+00H;实验系统中8259的OCW2端口地址
MY8259_OCW3EQUIOY0+00H;实验系统中8259的OCW3端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,MY8259_ICW1;初始化实验系统中8259的ICW1
MOVAL,13H;边沿触发、单片8259、需要ICW4
OUTDX,AL
MOVDX,MY8259_ICW2;初始化实验系统中8259的ICW2
MOVAL,08H
OUTDX,AL
MOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4
MOVAL,01H;非自动结束EOI
OUTDX,AL
MOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1
MOVAL,0FCH;打开IR0和IR1的屏蔽位
OUTDX,AL
QUERY:
MOVAH,1;判断是否有按键按下
INT16H
JNZQUIT;有按键则退出
MOVDX,MY8259_OCW3;向8259的OCW3发送查询命令
MOVAL,0CH
OUTDX,AL
INAL,DX;读出查询字
TESTAL,80H;判断中断是否已响应
JZQUERY;没有响应则继续查询
ANDAL,03H
CMPAL,00H
JEIR0ISR;若为IR0请求,跳到IR0处理程序
JNEIR1ISR;若为IR1请求,跳到IR1处理程序
JMPQUERY
IR0ISR:
MOVAL,30H;IR0处理,显示字符0
MOVAH,0EH
INT10H
MOVAL,20H
INT10H
JMPEOI
IR1ISR:
MOVAL,31H;IR1处理,显示字符1
MOVAH,0EH
INT10H
MOVAL,20H
INT10H
EOI:
MOVDX,MY8259_OCW2;向实验系统中8259发送中断结束命令
MOVAL,20H
OUTDX,AL
JMPQUERY
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
CODEENDS
ENDSTART
将IRO,IR1修改为IR6,IR7的实验代码
;***********根据查看端口资源修改下列符号值*******************
IOY0EQU0D800H;片选IOY0对应的端口始地址
;************************************************************
MY8259_ICW1EQUIOY0+00H;实验系统中8259的ICW1端口地址
MY8259_ICW2EQUIOY0+04H;实验系统中8259的ICW2端口地址
MY8259_ICW3EQUIOY0+04H;实验系统中8259的ICW3端口地址
MY8259_ICW4EQUIOY0+04H;实验系统中8259的ICW4端口地址
MY8259_OCW1EQUIOY0+04H;实验系统中8259的OCW1端口地址
MY8259_OCW2EQUIOY0+00H;实验系统中8259的OCW2端口地址
MY8259_OCW3EQUIOY0+00H;实验系统中8259的OCW3端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,MY8259_ICW1;初始化实验系统中8259的ICW1
MOVAL,13H;边沿触发、单片8259、需要ICW4
OUTDX,AL
MOVDX,MY8259_ICW2;初始化实验系统中8259的ICW2
MOVAL,08H
OUTDX,AL
MOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4
MOVAL,01H;非自动结束EOI
OUTDX,AL
MOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1
MOVAL,03FH;打开IR6和IR7的屏蔽位
OUTDX,AL
QUERY:
MOVAH,1;判断是否有按键按下
INT16H
JNZQUIT;有按键则退出
MOVDX,MY8259_OCW3;向8259的OCW3发送查询命令
MOVAL,0CH
OUTDX,AL
INAL,DX;读出查询字
TESTAL,80H;判断中断是否已响应
JZQUERY;没有响应则继续查询
ANDAL,01H
CMPAL,00H
JEIR6ISR;若为IR6请求,跳到IR6处理程序
JNEIR7ISR;若为IR7请求,跳到IR7处理程序
JMPQUERY
IR6ISR:
MOVAL,36H;IR6处理,显示字符6
MOVAH,0EH
INT10H
MOVAL,20H
INT10H
JMPEOI
IR7ISR:
MOVAL,37H;IR7处理,显示字符7
MOVAH,0EH
INT10H
MOVAL,20H
INT10H
EOI:
MOVDX,MY8259_OCW2;向实验系统中8259发送中断结束命令
MOVAL,20H
OUTDX,AL
JMPQUERY
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
CODEENDS
ENDSTART
6、实验结果及分析
1)基础实验:
地址查询结果:
接线图:
输入代码如图:
编译、连接并运行程序
敲击脉冲左键:
再敲击脉冲右键:
多次敲击脉冲左右键:
实验结果:
每次敲击脉冲左键,屏幕上就显示一个0;
每次敲击脉冲右键,屏幕上就显示一个1;
通过触发开关K1和K2使屏幕上显示‘0’和‘1’
实验成功。
(2)拓展实验:
代码修改方法:
将代码中的IR0改为IR6,IR1改为IR7;
将代码段中的语句:
MOVAL,0FCH
修改为MOVAL,03FH
将代码段中的30H、31H分别修改为36H和37H(6和7的ASCII码)
编译、连接并运行程序
敲击脉冲左键:
再敲击脉冲右键:
多次敲击脉冲左右键:
实验结果:
每次敲击脉冲左键,屏幕上就显示一个6;
每次敲击脉冲右键,屏幕上就显示一个7;
通过触发开关K1和K2使屏幕上显示‘6’和‘7’
实验成功。
7、心得体会
在做8259中断控制器应用实验前,我以为不会难做,就像以前做物理实验一样,做完实验,然后两下子就将实验报告做完。
直到做完实验时,我才知道其实并不容易做,但学到的知识与难度成正比,使我受益匪浅。
通过这个实验,我学习了8259的工作方式及应用编程,掌握了8259的典型应用电路接法,并且成功编写了8259控制器的IR0和IR1中断请求程序。
这次的实验,我学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我受益匪浅。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 汇编 实验