微机原理课程设计数字时钟程序.doc

上传人:叶*** 文档编号:35111665 上传时间:2022-08-20 格式:DOC 页数:21 大小:131KB
返回 下载 相关 举报
微机原理课程设计数字时钟程序.doc_第1页
第1页 / 共21页
微机原理课程设计数字时钟程序.doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《微机原理课程设计数字时钟程序.doc》由会员分享,可在线阅读,更多相关《微机原理课程设计数字时钟程序.doc(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、河北科技大学课程设计报告学生姓名: 学 号: 专业班级: 电子信息科学与工程 课程名称: 微型计算机原理及应用 学年学期: 2 0 1 1 2 0 12 学年第 1 学期指导教师: 2 0 0 1 1 年 1 2月课程设计成绩评定表学生姓名学 号成绩专业班级起止时间2011/12/262011/12/30设计题目数字时钟程序指导教师评语指导教师: 年 月 日目录一、课设题目及目的.4二、设计任务.4三、总框图及设计流程.4四、源程序清单.6五、调试结果及显示.19六、个人贡献.19七、课程设计总结及体会.21 一、课设题目及目的实习题目:数字时钟程序实习目的:通过实习,使我们进一步弄懂所学到的

2、课本知识,巩固和深化对8086系统的指令系统、中断系统、键盘/显示系统、程序设计、应用开发等基本理论知识的理解,提高汇编语言应用于技术的实践操作技能,掌握汇编语言应用系统设计、研制的方法,培养利用科技革新、开发和创新的基本能力,为毕业后从事与其相关的工作打下一定的基础。二、课设任务本课题为利用汇编语言设置时钟程序,其显示效果为:截取系统时间,能以时、分、秒(其中时为24小时制)的形式显示,并且通过合理的操作能修改时和分的内容来修改时间。再有,可以给它设定一个ALARM时间,到这个时间它就能产生信号,起到定时作用,。除此之外还能显示日期,日期分为年、月、日,其显示方式为xxxx年xx月xx日。三

3、、总框图及流程显示时间输出报时显示日期显示MESS2显示MESS3显示MESS1时分秒调用二进制转换子程序判断条件整点开始调用清屏子程序显示系统时间Y 判断条件键盘输入调用设置时间子程序调用设置闹钟子程序判断条件M800TO调用音乐子程序M3200TOM1600TOS/sC/cM/m123四源程序清单DATA SEGMENT;数据段开始MESS1 DB *ASM ASSIGNMENT* ,0AH,0DH DB *ELECTRONIC CLOCK* ,0AH,0DH DB *PRESS C OR C TO EDIT THE ALARM TIME* ,0AH,0DH DB *PRESS M OR

4、M TO CHANGE SOUND!* ,0AH,0DH DB*PRESS SORS TO SET THE TIME* ,0AH,0DH ;显示功能菜单 DB *PRESS ESC BUTTON TO EXIT* ,0AH,0DH,$TN DB PLEASE INPUT THE NEW TIME (HH:MM:SS):,0DH,0AH,$TM DB PLEASE INPUT THE ALARM TIME (HH:MM:SS):,0DH,0AH,$MUSICMESS DB PLEASE CHOOSE THE TYPE OF MUSIC:1(FAST) 2(MIDDLE) 3(SLOW),0DH,

5、0AH,$MESS2 DB TIME IS:,0AH,0DH,$MESS3 DB TODAY IS:,0AH,0DH,$ DBUFFER1 DB 20 DUP( ) T_BUFF DB 40 ;在数据段开一段时间显示缓冲区 DB ? DB 40 DUP(?) HOR DB ? MIN DB ? SEC DB ? TEMPHOR DB ? TEMPMIN DB ? TEMPSEC DB ? MUSIC DW 800 ; 存放音乐的频率数DATA ENDSSTACK SEGMENT DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STAC

6、K,DS:DATASTART:CALL CLEAR ;调用清屏子程序DISPLAY: ;时间显示部分 MOV AX,DATA MOV DS,AX MOV BX,OFFSET T_BUFF;送T_BUFF的偏移地址到BX MOV AH,2CH;调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在CH,CL,DH中 INT 21H ;判断时间是否相等 SUB DH,1 ;秒数+1修正 CALL CHECK;. MOV AL,CH ;小时数设定 MOV AH,0 CALL BCTD ;调用进制转换子程序 二进制BCD码子程序 PUSH AX AND AL,0F0H ;选取AL高四位 M

7、OV CL,4 ;设置右循环的次数 ROR AL,CL ;右循环 OR AL,30H ;加30H得到ACSII码 MOV BX,AL ;将得到的结果送到T_BUFF缓冲区 INC BX ;BX自加1,指针指向下一个缓冲区的下一个地址 POP AX AND AL,0FH ;选取低四位 OR AL,30H MOV BX,AL;将转换后的低四位值送入缓冲区的下一个地址 INC BX;. MOV AL,:;显示分隔符号 MOV BX,AL INC BX;. MOV AH,2CH;取时间 INT 21H;. MOV AL,CL;分钟数设定 MOV AH,0 CALL BCTD;调用进制转换子程序 二进制

8、BCD码子程序 PUSH AX AND AL,0F0H;选取AL高四位 MOV CL,4;设定循环次数 ROL AL,CL;循环左移4次 OR AL,30H;加30H得到ACSII码 MOV BX,AL ;将得到的结果送到T_BUFF缓冲区 INC BX;BX自加1,指针指向下一个缓冲区的下一个地址 POP AX AND AL,0FH;选取低四位 OR AL,30H MOV BX,AL;将转换后的低四位值送入缓冲区的下一个地址 INC BX;. MOV AL,: ;显示分隔符号 MOV BX,AL INC BX;. MOV AH,2CH ;秒设定 INT 21H MOV AL,DH MOV A

9、H,0 CALL BCTD;调用进制转换子程序 二进制BCD码子程序 PUSH AX AND AL,0F0H;选取AL高四位 MOV CL,4 ROL AL,CL OR AL,30H;加30H得到ACSII码 MOV BX,AL;将得到的结果送到T_BUFF缓冲区 INC BX POP AX AND AL,0FH;选取低四位 OR AL,30H MOV BX,AL;将转换后的低四位值送入缓冲区的下一个地址 INC BX;. MOV AL,$;将字符串的结束位送至显示缓冲区的最后一位 MOV BX,AL;. CALL DATE PUSH BX ;置光标位置,AH=2,BH=0,DH跟DL分别为行

10、号与列号,并入栈保护BX MOV AH,2;01用于此程序最下边的 在下面的两个置光标位置 MOV BH,0 MOV DH,17;行 MOV DL,41;列 INT 10H POP BX LEA DX,T_BUFF;送T_BUFF偏移地址到DX,并调用DOS显示功能,功能号为9 MOV AH,9 INT 21H;至此当前时间的显示功能结束! PUSH BX ;置光标位置 MOV AH,2 MOV BH,0 MOV DH,16 MOV DL,41 INT 10H ;日期 POP BX LEA DX,DBUFFER1 MOV AH,9 INT 21H PUSH BX ;置光标位置 MOV AH,2

11、 MOV BH,0 MOV DH,16 MOV DL,21 INT 10H POP BX LEA DX,MESS3 MOV AH,9 INT 21H ;显示MESS3 PUSH BX ;置光标位置 MOV AH,2 MOV BH,0 MOV DH,0 MOV DL,0 INT 10H POP BX LEA DX,MESS1 MOV AH,9 INT 21H ;显示MESS1 PUSH BX ;置光标位置 MOV AH,2 MOV BH,0 MOV DH,17 MOV DL,21 INT 10H POP BX LEA DX,MESS2 MOV AH,9 INT 21H ;显示MESS2 ;. C

12、ALL DELAY1 MOV AH,1 ;调用键盘I/O中断功能号1,获取键值到AL INT 16H CMP AL,M JE EDITMUSIC CMP AL,M JE EDITMUSIC CMP AL,C ;是C键,转移闹钟时间修改程序 JE EDITTIME CMP AL,C ;是C键,转移闹钟时间修改程序 JE EDITTIME CMP AL,S ;是S键,转移时间修改程序 JE COR CMP AL,S ;是S键,转移时间修改程序 JE COR CMP AL,1BH JZ QUIT ;是ESC键,退出程序 JMP DISPLAY QUIT: MOV AH,4CH INT 21H RET

13、 COR: CALL SETTIME;设置时间;. EDITMUSIC PROC PUSH AX ;入栈保护数据 PUSH BX PUSH CX PUSH DX PUSHF MOV DX,OFFSET MUSICMESS ;显示修改音乐的种类提示 MOV AH,09H INT 21H MOV DX,OFFSET T_BUFF;数据缓冲区的数据输入 MOV AH,0AH INT 21H AND DX,0H LEA BX,T_BUFF INC BX INC BX INC BX MOV AL,BX CMP AL,1 JE M800TO CMP AL,2 JE M1600TO CMP AL,3 JE

14、M3200TOM800TO:MOV MUSIC,800 JMP TM1600TO:MOV MUSIC,1600 JMP TM3200TO:MOV MUSIC,3200T: POPF ;出栈恢复数据 POP DX POP CX POP BX POP AX JMP START RET;返回DOS EDITMUSIC ENDP;结束BCTD PROC NEAR ;二进制BCD码子程序 ;AX输入参数 ;AX输出参数,存放调整过的BCD码 MOV DX,AX MOV AX,0 MOV CX,16 ;设置循环次数 BCTD1: CLC ;清进位标志C RCL DX,1 ;通过进位的循环左移 ADC AL

15、,AL ;带进位加法 DAA ;加法的十进制调整 XCHG AL,AH ;交换高,低8位 ADC AL,AL DAA XCHG AL,AH LOOP BCTD1 ;循环次数保存在CX里 RETBCTD ENDP;.EDITTIME PROC ;时间修改程序 PUSH AX ;入栈保护数据 PUSH BX PUSH CX PUSH DX PUSHF MOV DX,OFFSET TM ;显示修改时间的格式提示 MOV AH,09H INT 21H MOV DX,OFFSET T_BUFF ;数据缓冲区的数据输入 MOV AH,0AH INT 21H AND DX,0H LEA BX, T_BUFF

16、 INC BX INC BX INC BX MOV DH,BX SUB DH,30H INC BX MOV DL,BX SUB DL,30H MOV CL,10 MOV AL,DH MUL CL ADD AL,DL MOV CH,AL MOV HOR,AL MOV TEMPHOR,AL INC BX INC BX MOV DH,BX SUB DH,30H INC BX MOV DL,BX SUB DL,30H MOV CL,10 MOV AL,DH MUL CL ADD AL,DL MOV CL,AL MOV MIN,AL MOV TEMPMIN,AL INC BX INC BX MOV DH

17、,BX SUB DH,30H INC BX MOV DL,BX SUB DL,30H MOV CL,10 MOV AL,DH MUL CL ADD AL,DL MOV DH,AL MOV TEMPSEC,ALPOPF ;出栈恢复数据 POP DX POP CX POP BX POP AX JMP START RETEDITTIME ENDP;.CLEAR PROC NEAR PUSH AX ;入栈保护现场 PUSH BX PUSH CX PUSH DX MOV AX,0600H;AH=06(滚动)AL=00(全屏空白) MOV BH,1FH;设置背景颜色(1蓝色)和前景颜色(F白色) SUB

18、CX,CX MOV DX,5F5FH INT 10H POP DX;出栈恢复现场 POP CX POP BX POP AX RET CLEAR ENDP;. DATE PROC NEAR MOV AH,2AH;取日期CX:DH:DL=年:月:日 AL=星期 INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL BCDASC1;日期数值转换成相应的ASCII码字符 MOV AL,BL CALL BCDASC1 INC SI MOV AL,DH CALL BCDASC1 INC SI MOV AL,DL CALL BCDASC1 M

19、OV AL,$ MOV DBUFFER1SI,AL RETDATE ENDP;.BCDASC1 PROC NEAR PUSH BXCBW MOV BL,10 DIV BL ADD AL,0 MOV DBUFFER1SI,AL INC SI ADD AH,0 MOV DBUFFER1SI,AH INC SI POP BXRETBCDASC1 ENDP;.SETTIME PROC;时间修改子程序CALL INPUT;调用键盘输入子程序输入数据 MOV CH,HOR MOV CL,MIN MOV DH,SEC AND DL,0H MOV AH,2DH INT 21H JMP START RETSET

20、TIME ENDP;.DELAY1 PROC;精确延迟时间子程序 MOV DX,04FFH;循环次数UP:XOR CX,CXA:NOP LOOP A DEC DX JNZ UP RETDELAY1 ENDP;.INPUT PROC;输入子程序 PUSH AX;入栈保护数据 PUSH BX PUSH CX PUSH DX PUSHF MOV DX,OFFSET TN;显示修改时间的格式提示 MOV AH,09H INT 21H MOV DX,OFFSET T_BUFF;数据缓冲区的数据输入 MOV AH,0AH INT 21H AND DX,0H LEA BX,T_BUFF INC BX INC

21、 BX MOV DH,BX SUB DH,30H INC BX MOV DL,BX SUB DL,30H MOV CL,10 MOV AL,DH MUL CL ADD AL,DL MOV CH,AL MOV HOR,AL INC BX INC BX MOV DH,BX SUB DH,30H INC BX MOV DL,BX SUB DL,30H MOV CL,10 MOV AL,DH MUL CL ADD AL,DL MOV CL,AL MOV MIN,AL INC BX INC BX MOV DH,BX SUB DH,30H INC BX MOV DL,BX SUB DL,30H MOV C

22、L,10 MOV AL,DH MUL CL ADD AL,DL MOV DH,AL MOV SEC,AL POPF;出栈恢复数据 POP DX POP CX POP BX POP AX RETINPUT ENDP;.CHECK PROC PUSH AX PUSH BX CMP CH,TEMPHOR;设置定点报时 JNE CF1 CMP CL,TEMPMIN JNE CF1 CMP DH,TEMPSEC JE XIANGCF1: CMP CL,0 ;设置整点报时 JNE CF CMP DH,0 JNE CFXIANG: CALL OPEN PUSH DX PUSH CX MOV DX,12H M

23、OV AX,34DEH MOV CX,MUSIC DIV CX OUT 42H,AL MOV AL,AH OUT 42H,AL MOV AH,1 INT 21H POP CX POP DX CALL CLOSECF: POP BX POP AX RETCHECK ENDPOPEN PROC PUSH AX IN AL,61H OR AL,03H OUT 61H,AL POP AX RETOPEN ENDPCLOSE PROC PUSH AX IN AL,61H AND AL,0FCH OUT 61H,AL POP AX RETCLOSE ENDP;.CODE ENDSEND START五调试结

24、果及显示六个人贡献在本次课设实现过程中,我主要负责程序校正,和一部分程序的解释,主要有以下程序: MOV AL,CH ;小时数设定 MOV AH,0 CALL BCTD ;调用进制转换子程序 二进制BCD码子程序 PUSH AX AND AL,0F0H ;选取AL高四位 MOV CL,4 ;设置右循环的次数 ROR AL,CL ;右循环 OR AL,30H ;加30H得到ACSII码 MOV BX,AL ;将得到的结果送到T_BUFF缓冲区 INC BX ;BX自加1,指针指向下一个缓冲区的下一个地址 POP AX AND AL,0FH ;选取低四位 OR AL,30H MOV BX,AL;将

25、转换后的低四位值送入缓冲区的下一个地址 INC BX;. MOV AL,:;显示分隔符号 MOV BX,AL INC BX;. MOV AH,2CH;取时间 INT 21H;. MOV AL,CL;分钟数设定 MOV AH,0 CALL BCTD;调用进制转换子程序 二进制BCD码子程序 PUSH AX AND AL,0F0H;选取AL高四位 MOV CL,4;设定循环次数 ROL AL,CL;循环左移4次 OR AL,30H;加30H得到ACSII码 MOV BX,AL ;将得到的结果送到T_BUFF缓冲区 INC BX;BX自加1,指针指向下一个缓冲区的下一个地址 POP AX AND A

26、L,0FH;选取低四位 OR AL,30H MOV BX,AL;将转换后的低四位值送入缓冲区的下一个地址 INC BX;. MOV AL,: ;显示分隔符号 MOV BX,AL INC BX;. MOV AH,2CH ;秒设定 INT 21H MOV AL,DH MOV AH,0 CALL BCTD;调用进制转换子程序 二进制BCD码子程序 PUSH AX AND AL,0F0H;选取AL高四位 MOV CL,4 ROL AL,CL OR AL,30H;加30H得到ACSII码 MOV BX,AL;将得到的结果送到T_BUFF缓冲区 INC BX POP AX AND AL,0FH;选取低四位 OR AL,30H MOV BX,AL;将转换后的低四位值送入缓冲区的下一个地址 INC BX;CLEAR PROC NEAR PUSH AX ;入栈保护现场 PUSH BX PUSH CX PUSH DX MOV AX,0600H;AH=06(滚动)AL=00(全屏空白) MOV BH,1FH;设置背景颜色(1蓝色)和前景颜色(F白色) SUB CX,CX MOV DX,5F5FH INT 10H POP DX;出栈恢复现场 POP CX POP BX POP AX RET CLEAR ENDP;BCTD PROC NEAR ;二进制BCD码子程序 ;AX输入参数 ;AX输出参数,存放

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com