8259中断实验讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江工业大学计算机学院
实验报告
实验名称 8259A中断实验
姓名李晓峰
学号 ************
班级物联网1301
教师雷艳静
日期 12.18
一、实验内容与要求
1.1 实验内容
利用8259A芯片,实现中断响应程序。要求根据单脉冲按键,输出相应的语句:THIS IS THE xxx INTERRUPT! 。到达中断次数后,屏幕上显示PROGRAM TERMINATED NORMALLY! 1.2 实验要求
(1)第一次按键,输出THIS IS THE 1 st INTERRUPT!;
(2)第二次按键,输出THIS IS THE 2 nd INTERRUPT!;
(3)第十一次按键(特殊),输出THIS IS THE 11 st INTERRUPT!;
(4)以此法继续,直至计数值为零,输出PROGRAM TERMINATED NORMALLY!
二、实验原理与硬件连线
2.1 实验原理
PC用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级别判别等处理后向CPU发出可屏蔽中断请求。IBM PC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源。
中断源中断类型号中断功能
IRQ0 08H 时钟
IRQ1 09H 键盘
IRQ2 0AH 保留
IRQ3 0BH 串行口2
IRQ4 0CH 串行口1
IRQ5 0DH 硬盘
IRQ6 0EH 软盘
IRQ7 0FH 并行打印机
8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级联,对外可以提供16个中断源。
中断源中断类型号中断功能
IRQ8 070H 实时时钟
IRQ9 071H 用户中断
IRQ10 072H 保留
IRQ11 073H 保留
IRQ12 074H 保留
IRQ13 075H 协处理器
IRQ14 076H 硬盘
IRQ15 077H 保留
TPC-USB实验板上,将中断源固定到3号中断IRQ3上,即进行中断实验时,所用中断型号为0BH。
2.2 硬件连线
将TPC-USB实验板上的IQR与8251芯片的IRQ3引脚相连接。
三、设计思路、步骤和程序流程图
3.1 设计思路
要输出“THIS IS THE xxx INTERRUPT!”,必须将字符串分解为3部分,中间部分必须独立输出。后缀分为“th”,“st”,“nd”,“rd”,必须经过判断后进行匹配。
设置中断向量表,并开放IRQ3的中断屏蔽,同时,将DS指向数据段,便于信息的输出。设置中断次数,便于测试。首先,输出中断信息前缀。对于个位数,与1比较.若为1,输出个位数字和对应后缀“st”。若大于1,跳转判断是否等于2。若等于2,输出数字与后缀“nd”。同理,对于4~9可以直接输出数字和后缀“th”。
若数据为二位数,则要先判断个位数。而10~19,数字后缀均为“th”,无需判断(特殊情况)。判断中断计数器的值,为0时屏蔽IRQ3中断,并关中断,结束程序。否则,中断返回,等待硬中断。
3.2 实验步骤
(1)根据电路图,连接各仪器(中断连IRQ3),并进行硬件检测;
(2)设置中断向量表,并开放IRQ3的中断屏蔽。
(3)等待硬中断。判断数据个位数字,若为1,设置后缀为“st”;若为2,设置后缀为“nd”;
若为3,设置后缀为“rd”。特殊情况,11~19时,后缀均为“th”。
(4)判断中断计数器的值,为0时屏蔽IRQ3中断,并关中断,结束程序。否则,中断返回,
等待硬中断。
3.3 程序流程图
3-1 主程序
3-2 中断服务程序
四、程序清单与执行结果
4.1 程序清单
DATAS SEGMENT
MESS1 DB 'THIS IS THE $'
MESS2 DB 'PROGRAM TERMINATED NORMALLY!',0AH,0DH,'$' MESS4 DB 'ST','$'
MESS3 DB ' INTERRUPT!',0AH,0DH,'$'
STR1 DB 'RD','$'
STR2 DB 'ND','$'
STR3 DB 'TH','$'
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DA TAS,SS:STACKS
START:
MOV BX,1
CLI
MOV AX,SEG IRQ3 ;设置中断向量段地址
MOV DS,AX
MOV DX,OFFSET IRQ3 ;设置中断向量偏移地址
MOV AX,250BH ;中断入口地址送中断向量表
INT 21H
IN AL,21H ;读中断屏蔽字
AND AL,0F7H ;开放8259A的IR3中断
OUT 21H,AL
MOV AX,DA TAS
MOV DS,AX ;将DS指向数据段
STI
WIN:
JMP WIN ;等待硬中断
IRQ3:
MOV DX,OFFSET MESS1 ;输出中断信息前缀
MOV AH,9H
INT 21H ;DOS功能调用
CMP BX,9
JA COUT ;中断次数大于9,跳转COUT