- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机原理软件实验
北京邮电大学微机原理软件实验报告实验:中断实验与编程班级:2011211124学号:2011210648姓名: 邵泉源 目录一、实验目的3二、实验任务及内容31、设计思路32、流程图33、程序说明44、源代码4三、实验结果41、编译142、连接153、运行15四、实验总结16一、实验目的编一程序,在显示器上显示时、分、秒。借用计数器8253的Timer0作为中断源,通过8259A向CPU发中断,每10ms产生一次中断。在中断服务程序中管理刷新时、分秒、、秒。输入文件名,(如CLK)后清屏显示:Current time is xx:xx:xx(时分秒键盘输入)打回车,时、分、秒开始计时。时钟不停的刷新。当键入ctrl+c时,停止计时,返回系统,且系统正常运行不死机。日时钟显示范围 00:00:00~23:59:59。二、实验任务及内容1、设计思路主程序负责:初始化寄存器、配置中断设置、清屏、读入起始时间、检查输入、把输入的时间存入数据段、刷新屏幕等工作。利用8253的Timer0计数,每10ms通过8259A向CPU发中断,在中断服务程序中计数满100次(即1秒),修改时分秒在数据段中的数值。2、流程图3、程序说明①输入8位完整时间后(如00:59:06),自动开始计时,无需输入回车。②程序对输入的时间格式和范围有严格检查:时间格式:xx:xx:xx时间范围:00:00:00~23:59:59:只允许输入0~9(数字)及:(冒号),其他符号无效。③时钟运行时,键盘输入 ctrl+C,正常退出程序,返回系统。4、源代码data segment count100 db 100计数器 tenhour db 0 hourdb 0,: tenmin db 0 minute db 0,: tensec db 0 second db 0 s1db (00:00:00~23:59:59)Starting time is:$ 输入时刻 s2 db (Ctrl+C to exit) Current time is:$ s3 db Time Format Error!,13,10,$data endsstack segment stack 初始化堆栈 db 256 dup(0)stack endscode segment assume ds:data,cs:code,ss:stack;CRLF MACRO BEGINCRLF MACRO mov ah,02h mov dl,13 int 21h mov dl,10 int 21hENDM;CRLF MACRO END;check MACRO BEGINcheck MACRO X,MIN,MAX;X is the input char LOCAL ERR,MRET PUSH AX PUSH BX MOV AL,X MOV BL,MIN MOV BH,MAX CMP AL,BL JL ERR CMP AL,BH JG ERR POP BX POP AX JMP MRETERR: mov dx,offset s3 mov ah,09h int 21h JMP beginMRET: NOPENDM;check MACRO ENDstart: mov ax,data mov ds,ax mov es,ax;clean the screen 清屏 mov ah,6 ;init screen, page roll up mov al,0 ;the screen is blank mov ch,0 ;top left row mov cl,0 ;top left col mov dh,42 ;bottom right row mov dl,79 ;bottom right col mov bh,7 ;the color of char is white int 10h begin: mov dx,offset s1 mov ah,09h int 21h ;input begin mov bp,0 mov di,offset tenhour mov ah,01h int 21h mov bl,al;bl is a copy of al check al,0,2 mov [di],al inc di mov ah,01h int 21h cmp bl,2 je tenhour2 check al,0,9 mov [di],al jmp nextchartenhour2: check al,0,3 mov [di],alnextchar: inc di mov ah,01h int 21h check al,:,: inc di mov ah,01h int 21h
文档评论(0)