微机原理与接口技术 实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术
实验报告
学院:计算机与通信工程学院
专业:计算机科学与技术
班级:
学号:
姓名:
实验一8259中断控制器应用实验
一、实验目的
1.掌握PC机中断处理系统的基本原理。
2. 掌握可编程中断控制器8259的应用编程方法。
二、实验内容
1.PC机内中断实验。使用单次脉冲模拟中断产生。验证中断处理程序,在显示器屏幕上显示一行预设定的字符串。
2.PC机内中断嵌套实验。使用单次脉冲模拟两个中断源的中断产生,填写中断处理程序,体会中断嵌套的过程。
3.扩展多中断源查询方式应用实验。利用实验平台上8259控制器作为中断扩展源,编写程序对8259控制器的中断请求进行处理。
三、实验步骤
1.实验1-1:PC机内中断应用实验
(1)按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,屏幕显示结果截图如下:
(2)自设计实验。改变接线方式,将单次脉冲连到USB核心板上的IRQ10插孔上,参考本实验代码,编程实现IRQ10中断。(注意:考虑PC机内中断级联的方式,参看前面的原理说明),代码如下:
DA TA SEGMENT
MESS DB 'IRQ10 ',0DH,0AH, '$'
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DA TA
START: MOV AX, CS
MOV DS, AX
MOV DX,OFFSET INT10
MOV AX,2572H ;设置IRQ10对应的中断向量
INT 21H
IN AL,21H ;读取中断屏蔽寄存器
AND AL,0F3H ;开放IRQ3中断和从片
OUT 21H,AL
IN AL,0A1H ;从片的中断屏蔽寄存器
AND AL,0FBH ;开放IRQ10中断
OUT 0A1H,AL
MOV CX,10
STI
WAIT: JMP W AIT
INT10: MOV AX, DATA ;中断服务程序
MOV DS, AX
MOV DX, OFFSET MESS
MOV AH, 09 ;在屏幕上显示每次中断的提示信息
INT 21H
MOV AL, 20H ; 发出EOI结束中断到PC内主片的地址20H OUT 20H, AL
LOOP NEXT
IN AL, 21H ;读中断屏蔽寄存器,获取中断屏蔽字
OR AL, 08H ;关闭IRQ3中断
OUT 21H, AL ;将中断屏蔽字送到中断屏蔽寄存器
STI ;置中断标志位
MOV AH, 4CH ;返回DOS
INT 21H
NEXT: IRET ;中断返回
CODE ENDS
END START
调用程序代码,观察实验现象,屏幕显示截图如下:
2.实验1-2:PC机内中断嵌套实验
实验要求:
(1)按接线图连好接线,调用程序源代码8259-2.asm,做如下操作,观察屏幕显示结果并分析产生该现象的原因:
A.按下连接IRQ的单次脉冲按键,屏幕上会显示10个3,在屏幕上10次显示未结束之前,按下连接IRQ10的单次脉冲按键,观察现象;
按下IRQ时屏幕上会显示10个3,此时按下IRQ10,会直接在屏幕上显示10个10,然后结束后再显示剩余的3B.按下连接IRQ10的单次脉冲按键,屏幕上会显示10个10,在屏幕上10次显示未结束之前,按下连接IRQ3的单次脉冲按键,观察现象。
在屏幕上显示10个10的过程中按下IRQ无反应,等到10个10全部显示完毕后才再显示10个3
出现这种现象的原因是IRQ10的中断优先级高于IRQ3
屏幕截图:
(2)程序所有代码及注释:
DA TA SEGMENT
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
START:
.386
CLI
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET INT10 ;采用间接修改法,设置中断向量
MOV AX,2572H ;设置IRQ10对应的中断向量
INT 21H
MOV DX,OFFSET INT3 ;采用间接修改法,设置中断向量
MOV AX,250BH ;设置IRQ3对应的中断向量
INT 21H
IN AL,21H ;读中断屏蔽寄存器,21H是该寄存器的端口号AND AL,0F3H ;开放中断,允许从片和IRQ3
OUT 21H,AL
IN AL,0A1H ;读中断屏蔽寄存器,0A1H是该寄存器的端口
AND AL,0FBH ;开放中断IRQ10
OUT 0A1H,AL
MOV CX,10 ;记中断循环次数为10次
STI
WAIT: JMP W AIT
INT10: CLI ;中断服务程序
PUSHAD
PUSHFD
MOV CX,10 ;记中断循环次数为10次
NEXT10_1:
MOV DX,31H
MOV AH,02H ;输出DL
INT 21H
MOV DX,30H
MOV AH,02H ;输出DL
INT 21H
MOV DX,20H ;发出EOI结束中断到PC内主片的地址20H
MOV AH,02H ;输出DL,3
INT 21H
CALL DELAY1 ;等待
LOOP NEXT10_1
MOV DX,0DH
MOV AH,02H ;输出DL,‘ ’
INT 21H
MOV DX,0AH ;发出EOI结束中断到PC内从片占用的是0A0H端口MOV AH,02H ;输出DL,发生中断后输出10
INT 21H
MOV AL,20H ;将中断屏蔽字送到中断屏蔽寄存器
OUT 0A0H,AL ;从片
OUT 20H,AL ;主片
POPFD ;关中断,出栈,返回
POPAD
STI
IRET
INT3: CLI ;中断服务程序