ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:127.62KB ,
资源ID:11639700      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11639700.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(8259中断实验讲解.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

8259中断实验讲解.docx

1、8259中断实验讲解浙江工业大学计算机学院实 验 报 告实验名称 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)第

2、十一次按键(特殊),输出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 串行口2IRQ4 0CH 串行口1IRQ5

3、 0DH 硬盘IRQ6 0EH 软盘IRQ7 0FH 并行打印机8个中断源的中断请求信号线IRQ0IRQ7在主机的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

4、号中断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。若等于

5、2,输出数字与后缀“nd”。同理,对于49可以直接输出数字和后缀“th”。若数据为二位数,则要先判断个位数。而1019,数字后缀均为“th”,无需判断(特殊情况)。判断中断计数器的值,为0时屏蔽IRQ3中断,并关中断,结束程序。否则,中断返回,等待硬中断。3.2 实验步骤(1)根据电路图,连接各仪器(中断连IRQ3),并进行硬件检测;(2)设置中断向量表,并开放IRQ3的中断屏蔽。(3)等待硬中断。判断数据个位数字,若为1,设置后缀为“st”;若为2,设置后缀为“nd”;若为3,设置后缀为“rd”。特殊情况,1119时,后缀均为“th”。(4)判断中断计数器的值,为0时屏蔽IRQ3中断,并关中

6、断,结束程序。否则,中断返回,等待硬中断。3.3 程序流程图3-1 主程序3-2 中断服务程序四、程序清单与执行结果4.1 程序清单DATAS SEGMENTMESS1 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 ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,

7、SS:STACKSSTART: 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,DATAS MOV DS,AX ;将DS指向数据段 STIWIN: JMP WIN ;等待硬中断IRQ3: MOV DX,OFFSET MESS1 ;输出中断信息前缀 MOV AH,9H INT 21H ;DO

8、S功能调用 CMP BX,9 JA COUT ;中断次数大于9,跳转COUTC4: PUSH BX MOV AX,BX MOV CL,0AH ;除数为10 DIV CL ;中断次数除以10 MOV CL,AH ADD AH,30H ;输出高位数字 MOV DL,AH MOV AH,2H INT 21H POP BX ;保存BX CMP BX,0AH JB C6 ;小于10,跳转C6 JMP C5 ;跳转C5C5: MOV DX,OFFSET STR3 ;DOS功能调用,输出“th” MOV AH,9H INT 21H JMP SEG1 ;跳转SEG1 C6: CMP CL,1 ;个位数是否为1

9、 JA C1 ;大于1,跳转C1 MOV DX,OFFSET MESS4 ;DOS功能调用,输出“st” MOV AH,9H INT 21H JMP SEG1 ;跳转SEG1COUT: MOV AX,BX MOV CL,0AH DIV CL ;中断次数除以10 MOV CL,AH ADD AL,30H ;输出高位 MOV DL,AL MOV AH,02H INT 21H JMP C4 ;跳转C4C1: CMP CL,2 JA C2 MOV DX,OFFSET STR2 ;DOS功能调用,输出“nd” MOV AH,9H INT 21H JMP SEG1 ;跳转SEG1C2: CMP CL,3

10、JNZ C3 MOV DX,OFFSET STR1 ;DOS功能调用,输出“rd” MOV AH,9H INT 21H JMP SEG1 ;跳转SEG1C3: MOV DX,OFFSET STR3 ;DOS功能调用,输出“th” MOV AH,9H INT 21H JMP SEG1 ;跳转SEG1SEG1: MOV DX,OFFSET MESS3 MOV AH,9 INT 21H INC BX CMP BX,15 ;比较中断次数 JNZ NEXT ;跳转NEXT,中断返回 IN AL,21H OR AL,08H OUT 21H,AL MOV DX,OFFSET MESS2 ;输出中断信息后缀

11、MOV AH,9 INT 21H MOV AH,4CH INT 21NEXT: MOV AL,20H ;关中断 OUT 20H,AL IRET ;中断返回CODES ENDS END START4.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!4-1 实验结果截图五、程序调试说明和实验感想5.

12、1 调试说明1.按键时,突然到某个点会停止程序。反复检查程序并没有发现问题,猜测是软件问题。重新开启程序多次后,该问题可解决(治标不治本,硬件问题)。2.写代码时,没有考虑到多位数的情况。比如,尾数为1的数字,一般后缀是”st”;尾数为2的数字,后缀一般是”nd”;尾数为3的数字,后缀一般是”rd”。然而在1020之间,统一用的是”th”,这点一开始没考虑到,验收时经老师提醒才发现。3.汇编的除法很久没有使用,导致AH、AL经常弄错,调试时也不易发现。AH,AL未使用完时一定要保存,不然容易被DOS功能调用时使用AH而产生复用错误。5.2 实验感想与收获1.代码的逻辑性一定要严谨。这次的代码,

13、跳转、判断很多,稍微粗心一点就会造成错误。最好先画好每一步的流程,标记每一段的实际作用,方便自己检查错误。另外,对于CALL、JMP这些功能类似的代码,一定要细心的区分开来,不可混淆使用。2.熟练使用DOS功能调用。对于字符串的输出,已经了然于胸。DOS功能很强大,要善于运用。MOV DX,OFFSET STR3 ;九号功能输出字符串MOV AH,9HINT 21H5.3 实验特色这次实验的要求不低,需要考虑的东西比较多。不同英文的数值后缀需要分别考虑,不能用同一规律一概而论。比如,11的后缀就不是“st”,而是“th”,这方面一定要注意。经过老师提醒,我们这方面也完善的比较好了。另外,由于前缀和后缀都是公共的部分,无需每次都写一段代码,只要逻辑处理妥当,就能减轻代码负担和视觉负担,这方面我们的处理也还是不错的。5.4 展望可以设计这样一个程序:按下单脉冲触发器一次,输出所有尾数为1的数字;按下第二次,输出所有尾数为2的数字. 直到99为止。保存一个计数值9,即为9次中断。每个中断服务程序输出9个数字,做好循环输出工作。2.结合8253计数器,计数值每次减一,进入中断,并输出中断信息。减到0之后,主程序结束。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1