8259中断实验讲解.docx
- 文档编号:11639700
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:10
- 大小:127.62KB
8259中断实验讲解.docx
《8259中断实验讲解.docx》由会员分享,可在线阅读,更多相关《8259中断实验讲解.docx(10页珍藏版)》请在冰豆网上搜索。
8259中断实验讲解
浙江工业大学计算机学院
实验报告
实验名称8259A中断实验
姓名李晓峰
学号************
班级物联网1301
教师雷艳静
日期12.18
一、实验内容与要求
1.1实验内容
利用8259A芯片,实现中断响应程序。
要求根据单脉冲按键,输出相应的语句:
THISISTHExxxINTERRUPT!
。
到达中断次数后,屏幕上显示PROGRAMTERMINATEDNORMALLY!
1.2实验要求
(1)第一次按键,输出THISISTHE1stINTERRUPT!
;
(2)第二次按键,输出THISISTHE2ndINTERRUPT!
;
(3)第十一次按键(特殊),输出THISISTHE11stINTERRUPT!
;
(4)以此法继续,直至计数值为零,输出PROGRAMTERMINATEDNORMALLY!
二、实验原理与硬件连线
2.1实验原理
PC用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。
中断控制器用于接收外部的中断请求信号,经过优先级别判别等处理后向CPU发出可屏蔽中断请求。
IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源。
中断源中断类型号中断功能
IRQ008H时钟
IRQ109H键盘
IRQ20AH保留
IRQ30BH串行口2
IRQ40CH串行口1
IRQ50DH硬盘
IRQ60EH软盘
IRQ70FH并行打印机
8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。
PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级联,对外可以提供16个中断源。
中断源中断类型号中断功能
IRQ8070H实时时钟
IRQ9071H用户中断
IRQ10072H保留
IRQ11073H保留
IRQ12074H保留
IRQ13075H协处理器
IRQ14076H硬盘
IRQ15077H保留
TPC-USB实验板上,将中断源固定到3号中断IRQ3上,即进行中断实验时,所用中断型号为0BH。
2.2硬件连线
将TPC-USB实验板上的IQR与8251芯片的IRQ3引脚相连接。
三、设计思路、步骤和程序流程图
3.1设计思路
要输出“THISISTHExxxINTERRUPT!
”,必须将字符串分解为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程序清单
DATASSEGMENT
MESS1DB'THISISTHE$'
MESS2DB'PROGRAMTERMINATEDNORMALLY!
',0AH,0DH,'$'
MESS4DB'ST','$'
MESS3DB'INTERRUPT!
',0AH,0DH,'$'
STR1DB'RD','$'
STR2DB'ND','$'
STR3DB'TH','$'
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVBX,1
CLI
MOVAX,SEGIRQ3;设置中断向量段地址
MOVDS,AX
MOVDX,OFFSETIRQ3;设置中断向量偏移地址
MOVAX,250BH;中断入口地址送中断向量表
INT21H
INAL,21H;读中断屏蔽字
ANDAL,0F7H;开放8259A的IR3中断
OUT21H,AL
MOVAX,DATAS
MOVDS,AX;将DS指向数据段
STI
WIN:
JMPWIN;等待硬中断
IRQ3:
MOVDX,OFFSETMESS1;输出中断信息前缀
MOVAH,9H
INT21H;DOS功能调用
CMPBX,9
JACOUT;中断次数大于9,跳转COUT
C4:
PUSHBX
MOVAX,BX
MOVCL,0AH;除数为10
DIVCL;中断次数除以10
MOVCL,AH
ADDAH,30H;输出高位数字
MOVDL,AH
MOVAH,2H
INT21H
POPBX;保存BX
CMPBX,0AH
JBC6;小于10,跳转C6
JMPC5;跳转C5
C5:
MOVDX,OFFSETSTR3;DOS功能调用,输出“th”
MOVAH,9H
INT21H
JMPSEG1;跳转SEG1
C6:
CMPCL,1;个位数是否为1
JAC1;大于1,跳转C1
MOVDX,OFFSETMESS4;DOS功能调用,输出“st”
MOVAH,9H
INT21H
JMPSEG1;跳转SEG1
COUT:
MOVAX,BX
MOVCL,0AH
DIVCL;中断次数除以10
MOVCL,AH
ADDAL,30H;输出高位
MOVDL,AL
MOVAH,02H
INT21H
JMPC4;跳转C4
C1:
CMPCL,2
JAC2
MOVDX,OFFSETSTR2;DOS功能调用,输出“nd”
MOVAH,9H
INT21H
JMPSEG1;跳转SEG1
C2:
CMPCL,3
JNZC3
MOVDX,OFFSETSTR1;DOS功能调用,输出“rd”
MOVAH,9H
INT21H
JMPSEG1;跳转SEG1
C3:
MOVDX,OFFSETSTR3;DOS功能调用,输出“th”
MOVAH,9H
INT21H
JMPSEG1;跳转SEG1
SEG1:
MOVDX,OFFSETMESS3
MOVAH,9
INT21H
INCBX
CMPBX,15;比较中断次数
JNZNEXT;跳转NEXT,中断返回
INAL,21H
ORAL,08H
OUT21H,AL
MOVDX,OFFSETMESS2;输出中断信息后缀
MOVAH,9
INT21H
MOVAH,4CH
INT21
NEXT:
MOVAL,20H;关中断
OUT20H,AL
IRET;中断返回
CODESENDS
ENDSTART
4.2执行结果
(1)第一次按键,输出THISISTHE1stINTERRUPT!
;
(2)第二次按键,输出THISISTHE2ndINTERRUPT!
;
(3)第十一次按键(特殊),输出THISISTHE11stINTERRUPT!
;
(4)以此法继续,直至计数值为零,输出PROGRAMTERMINATEDNORMALLY!
4-1实验结果截图
五、程序调试说明和实验感想
5.1调试说明
1.按键时,突然到某个点会停止程序。
反复检查程序并没有发现问题,猜测是软件问题。
重新开启程序多次后,该问题可解决(治标不治本,硬件问题)。
2.写代码时,没有考虑到多位数的情况。
比如,尾数为1的数字,一般后缀是”st”;尾数为2的数字,后缀一般是”nd”;尾数为3的数字,后缀一般是”rd”。
然而在10~20之间,统一用的是”th”,这点一开始没考虑到,验收时经老师提醒才发现。
3.汇编的除法很久没有使用,导致AH、AL经常弄错,调试时也不易发现。
AH,AL未使用完时一定要保存,不然容易被DOS功能调用时使用AH而产生复用错误。
5.2实验感想与收获
1.代码的逻辑性一定要严谨。
这次的代码,跳转、判断很多,稍微粗心一点就会造成错误。
最好先画好每一步的流程,标记每一段的实际作用,方便自己检查错误。
另外,对于CALL、JMP这些功能类似的代码,一定要细心的区分开来,不可混淆使用。
2.熟练使用DOS功能调用。
对于字符串的输出,已经了然于胸。
DOS功能很强大,要善于运用。
MOVDX,OFFSETSTR3;九号功能输出字符串
MOVAH,9H
INT21H
5.3实验特色
这次实验的要求不低,需要考虑的东西比较多。
不同英文的数值后缀需要分别考虑,不能用同一规律一概而论。
比如,11的后缀就不是“st”,而是“th”,这方面一定要注意。
经过老师提醒,我们这方面也完善的比较好了。
另外,由于前缀和后缀都是公共的部分,无需每次都写一段代码,只要逻辑处理妥当,就能减轻代码负担和视觉负担,这方面我们的处理也还是不错的。
5.4展望
可以设计这样一个程序:
按下单脉冲触发器一次,输出所有尾数为1的数字;按下第二次,输出所有尾数为2的数字......直到99为止。
保存一个计数值9,即为9次中断。
每个中断服务程序输出9个数字,做好循环输出工作。
2.结合8253计数器,计数值每次减一,进入中断,并输出中断信息。
减到0之后,主程序结束。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8259 中断 实验 讲解