微机原理与接口技术 实验报告

  • 格式:doc
  • 大小:515.50 KB
  • 文档页数:20

下载文档原格式

  / 20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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机内中断级联的方式,参看前面的原理说明),代码如下:

DATA SEGMENT

MESS DB 'IRQ10 ',0DH,0AH, '$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

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 WAIT

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)程序所有代码及注释:

DATA SEGMENT

DATA 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 WAIT

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 ;中断服务程序