北邮微机原理中断程序报告

北邮微机原理中断程序报告

ID:9881356

大小:264.33 KB

页数:14页

时间:2018-05-13

北邮微机原理中断程序报告_第1页
北邮微机原理中断程序报告_第2页
北邮微机原理中断程序报告_第3页
北邮微机原理中断程序报告_第4页
北邮微机原理中断程序报告_第5页
资源描述:

《北邮微机原理中断程序报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、北京邮电大学实验报告题目:微机原理软件实验学院:信息与通信工程专业:信息工程______中断实验报告一、 实验目的 1、 初步掌握中断程序的设计方法; 2、 初步掌握修改 DOS 系统中断,以适应实际使用的方法。二:实验要求编一程序,在显示器上显示时、分、秒。1:借用计数器8253的Timer0作为中断源,通过8259A下向CPU发中断,每10ms产生一次中断。2:在中断服务程序中管理刷新时、分、秒。3:输入文件名(如:CLK)后清屏显示CurrenttimeisXX:XX:XX(时分秒键盘输入)打回车,时、分、秒开始计时,时钟不

2、停的刷新。4:当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。提示: 1、8253的初始化程序段可借用。2、口地址为40H、41H、42H、43H,控制字为36H=00110110B3、时间常数TC=11932:1.1932MHz/11932=100Hz,输出方波频率为100Hz,其周期为1000/100=10ms三:设计思路这个实验需要用到中断控制器8259A和计数器8253。我们先初始化8253的工作方式,利用工作方式3来计数时间,让其分频后产生100hz的方波,每100个周期即为1s,将这个方波作为中断源,通

3、过8259A每10ms向CPU发出一次中断。然后我们将子程序Timer0的地址(CS以及IP)设置为中断向量,每次中断即执行这个子程序,在这个之程序中编写相应代码,看时间是否到1S,没到则跳出中断,等待下一次(1ms之后)中断到来,到1S则让时间+1并且重置计数值,再加上相应的时间显示程序,这样即可实现时间的自动增加与显示,可以当做一个计时器来用,这即是这个工程的主体部分。除此之外,还需要一部分程序来实现键盘输入相应时间,这里要注意时间的每一位都有取值方面的要求,这里就要通过一系列的CMP/JMP指令的组合来达到正确输入的效果,将

4、顺序输入的时间存储起来,配合Timer0子程序即可输出当前设置的时间并且实现时间刷新。当然,如果选择不输入时间直接回车的话,程序可以从0开始计时,可以当成一个秒表。还有一些细节的设计如在计时过程中输入S可以重新设置时间,Ctrl+C可以退出这些也是利用CMP/JMP组合来实现。最后整个程序可以实现以下功能:可以设置开始时间然后自动计时,也可以当做秒表来使用,可以正常退出。开始四:实验流程关中断,保存源中断向量Timer0地址设为中断向量初始化8253,8259A开中断提示输入时间提示错误格式规范?否是显示时间,计时,检测键盘输入输

5、入S?是否输入回车?是秒表计时否Ctrl+c?否是结束中断流程:开始统计进入中断次数已经100次否是计数器清0,时间+1有进位?否是进位调整结束五:实验结果执行程序,输入格式不对时有错误提示:直接按回车,清屏后进入秒表计时模式:按下S后重新设置时间为12:34:10后开始计时:计时时按回车可以保存当前时间:利用ctrl+c退出:六:实验总结这次综合实验是很有难度的,它不仅需要对汇编语言有一定层次的了解,还需要对8259A与8253这两个硬件的工作方式很熟悉。通过不断的查找资料,参考学习,我终于完成了这次实验,在这个过程中我经历了许

6、多也学习到了许多。首先得到提升的是我的debug能力,编的越多能力也就越强。除此之外,我对课本上学习到的微机原理有了更直观与深层次的了解,这对我使用计算机以及今后的学习都是非常有帮助的,最后,感谢这次实验给我带来的宝贵的经历。附录(源代码与子程序清单)datasegmentcount100db100;100个10ms=1s,此处起计数作用msg1db'Pleaseenterthecurrenttime(XX:XX:XX)!(PressENTERtousedefaulttime)$'msg2db'InputError,pleaseu

7、sethecorrectformat!$'msg3db'Now,thetimeis:',0ah,'(PressCtrl+CtoEXIT.)',0ah,'(PressEntertouseasaStopwatch.)',0ah,'(PressSorstosetcurrenttimeagain.)(XX:XX:XX)$'msg4db0ah,'ProgramEXIT.$'tenhourdb'0';小时十位数hourdb'0',':';小时个位数tenmindb'0';分钟十位数minutedb'0',':';分钟个位数tensecdb'0

8、';秒十位数seconddb'0';秒个位数dataendsstacksegmentstack'stack'db256dup(0)stackendscodesegmentassumecs:code,ds:data,es:datastart:mova

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。