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

上传人:李司机 文档编号:7456778 上传时间:2025-01-04 格式:DOCX 页数:33 大小:108.86KB
返回 下载 相关 举报
微机原理课程设计数字时钟程序.docx_第1页
第1页 / 共33页
微机原理课程设计数字时钟程序.docx_第2页
第2页 / 共33页
微机原理课程设计数字时钟程序.docx_第3页
第3页 / 共33页
微机原理课程设计数字时钟程序.docx_第4页
第4页 / 共33页
微机原理课程设计数字时钟程序.docx_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《微机原理课程设计数字时钟程序.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计数字时钟程序.docx(33页珍藏版)》请在三一办公上搜索。

1、河北科技高校课程设计报告学生姓名:学号:专业班级:电子信息科学及工程课程名称:微型计算机原理及应用学年学期:2011-2012学年第1学期指导老师:20011年12月课程设计成果评定表学生姓名学号成果专业班级起止时间2011/12/262011/12/30设计题目数字时钟程序指导教师评语指导老师:书目一、课设题目及目的.4二、设计任务4三、总框图及设计流程4四、源程序清单.6五、调试结果及显示.19六、个人贡献19七、课程设计总结及体会21一、课设题目及目的实习题目:数字时钟程序实习目的:通过实习,使我们进一步弄懂所学到的课本学问,巩固和深化对8086系统的指令系统、中断系统、键盘/显示系统、

2、程序设计、应用开发等基本理论学问的理解,提高汇编语言应用于技术的实践操作技能,驾驭汇编语言应用系统设计、研制的方法,培育利用科技革新、开发和创新的基本实力,为毕业后从事及其相关的工作打卜肯定的基础。二、课设任务本课题为利用汇编语言设置时钟程序,其显示效果为:截取系统时间,能以时、分、秒(其中时为24小时制)的形式显示,并且通过合理的操作能修改时和分的内容来修改时间。再有,可以给它设定一个A1.ARM时间,到这个时间它就能产生信号,起到定时作用,。除此之外还能显示日期,日期分为年、月、H,其显示方式为XXNX年XX月XX日。显示时间DB*PRESSMORMTOCHANGESo1.ND!*,OAH

3、,ODHDB,*PRESSSORSTOSETTHETIME*,OH,ODH;显示功能菜单DB*presSESCBUTTONTOEXIT*,OAH1ODH1,STNDBP1.EASEINPUTTHENEWTIME(HH:MM:SS),ODH,OAH,$TMDB,P1.EASEINPUTTHEA1.ARMTIME(HH:MM:SS),ODH,OAH,MUSICMESSDB,P1.EASECHOOSETHETYPEOFMUSIC:1(FAST)2(MIDD1.E)3(S1.OW),ODH,OAH,$MESS2DB,TIMEIS,OAH,ODH1,$,MESS3DB,TODAYIS,OH,ODII,$

4、DBUFFER1.DB20DUPC)T_BUFFDB40;在数据段开一段时间显示缓冲区DB?DB40D1.IP(?)HORDB?MINDB?SECDB?TEMI,HORDB?TEMPMINDB?TEMPSECDB?MUSICDW800;存放音乐的频率数DTENDSSTACKSEGMENTDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:CA1.1.C1.EAR;调用清屏子程序DISP1.AY:;时间显示部分MOVX,DTMOVDS,AXMOVBX,OFFSETT_BUFF;送T_BUFF的偏移地址到BXMOVA

5、H,2CH;调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在CH,C1.,DH中推断时间是否相等SUBDH,1+1修正CA1.1.CHECKMOVA1.,CHMOVAH,0CA1.1.BCTD制BCD码子程序PUSHXANDA1.,OFOHMOVC1.,4RORA1.,C1.OR1.,30MOVBX,A1.区INCBX冲区的下一个地址POPAXANDA1.,OFH;秒数;小时数设定;调用进制转换子程序二进;选取A1.高四位;设置右循环的次数;右循环;加3011得到ACSH码;将得到的结果送到T_BUFF缓冲;BX自加1,指针指向下一个缓;选取低四位ORA1.,30HVoVBX

6、,A1.:将转换后的低四位值送入缓冲区的下一个地址INCBXVOVA1.显示分隔符号MOVBX,A1.INCBXMOVAH,2CH;取时间INT2IHMoVA1.C1.;分钟数设定MOVH,0CA1.1.Ben);调用进制转换子程序二进制BCD码子程序PUSHXANDA1.OFOH;选取A1.高四位MOVC1.,4;设定循环次数RO1.A1.,C1.;循环左移4次OR1.,30H;力口30H得到ACSII码MOVBX,A1.;将得到的结果送到T_BUFF缓冲区INCBXiBX自加1,指针指向下一个缓冲区的下一个地址POPAXND1.,OFH;选取低四位ORA1.,30HMOVBX,A1.;将转

7、换后的低四位值送入缓冲区的下一个地INCBXMOVA1.,:,;显示分隔符号MOVBX,A1.INCBXMOVH,2CH;秒设定INT21HMOV1.,DHMOVH,0CA1.1.BCTD;调用进制转换子程序二进制BCD码子程序PUSHAXNDA1.,OFOH:选取1.高四位MOVC1.,4RO1.1.,C1.ORA1.,30H;加30H得到ACSI1.码MOVBX,A1.;将得到的结果送到T_BUFF缓冲区INCBXPOPAXANr)A1.,OFH;选取低四位ORA1.,30HMOVBX,A1.;将转换后的低四位值送入缓冲区的下一个地INCBXMOV1.,$,;将字符串的结束位送至显示缓冲区

8、的地终一位MOVBX,1.CA1.1.DATEPUSHBX;置光标位置,H=2,BH=O,DH跟D1.分别为行号及列号,并入栈爱护BXMOVAH,2:01.用于此程序最下边的在下面的两个置光标位置MOVBH,0MOVDH,17;行MOVD1.,41;列INTIOHPOPBX1.EADX,T_BUFF;送T.BUFF偏移地址到DX,并调用DOS显本功能,功能号为9MOVAH,9INT21H:至此当前时间的显示功能结束!PUSHBX;置光标位置MOVH,2MOVBH,0MOVDH,16MOVD1.,41INTIOH;日期POPBX1.EDX,DBuFFER1.MOVAH,9INT21HPUSHBX

9、;置光标位置MOVH,2MOVBH,0MOVDH,16MOV)1.,21INTIOHPOPBX1.EADX,MESS3MOVH,9INT21H;显示MESS3PUSHBX;置光标位置MOVH,2MOVBH,0MOVDU,0MOVD1.,0INTIOHPOPBX1.EADX,MESS1.MOVAU,9INT21H;显示MESSIPUSHBX;置光标位置MOVH,2MOVBH,0MOVDH,17MOVD1.,21INTIOHPoPBX1.EDX,MESS2MOVAH,9INT21H:显示MESS2CA1.1.DE1.AY1.MOVH,1;调用键盘I/O中断功能号1,获得键值到A1.INT16HCM

10、P1.,M,JEEditmiisicCMP1.,*M,JEEDITMUSICCMPA1.,C:是C键,转移闹钟时间修改程序JEEDITTIMECMPA1.,C;是:键,转移闹钟时间修改程序JEedittimeCMPA1.,S;是S键,转移时间修改程序JECORCMPA1.,S;是S键,转移时间修改程序JECORCMP1.,IBHJZQUIT;是ESC键,退出程序JMPDISP1.AYQUIT:MOVH,4CHINT21HRETCOR:CA1.1.SETTIME;设置时间EDITMUSICPROCPUSHAX;入栈爱护数据PUSHBXPUSHCXPUSHDXPUSHFMOVDXfOFFSETMU

11、SICMISS;显示修改音乐的种类提示MOVAH,09HINT21HVOVDX,OFFSETT_BUFF;数据缓冲区的数据输入MOVAH,OAHINT21HANDDX,OH1.EABX,T_BUFFINCBXINCBXINCBXMOVA1.,BXCMP1.1,JEM800T0CMPA1.,2,JEM1600TOCMPA1.,3,JEM3200TOM800T0:M0VMUSIC,800JMPTM1600T0:M0VMUSIC,1600JMPTM3200T0:M0VMUSIC,3200T:POPF;出栈复原数据POPDXPOPCXPOPBXPOPXJMPSTARTRET;返回DOSEDITMUSI

12、CEW)P;结束BCTDPROCNEAR;二进制BCD码子程序;AX输入参数;AX输出参数,存放调整过的BCD码MOVDX,AXMOVAX,0MOVCX,16;设置循环次数IJCTD1.:C1.C;清进位标记CRC1.DX,1;通过进位的循环左移ADCA1.A1.;带进位加法DAA;加法的十进制调整XCHGA1.,AH;交换高,低8位ADC1.,1.DAXCHG1.,AH1.OOPBCTD1.;循环次数保存在CX里RETBCTDENDPEDIKIMEPROC;时间修改程序PUSHAX;入栈爱护数据PUSHBXPUSHCXPUSHDXPUSHFMOVI)X,OFFSETTM;显示修改时间的格式提

13、示MOVA1.1.,09HINT2IHMOVDX,OFFSETT_BUFF;数据缓冲区的数据输入MOVH,OHINT21HANDDX,0111.EABX,T_BUFFINCBXINCBXINCBXMOVDH,BXSUBDH,30HINCBXMOVD1.,BXSUBD1.,30HMOVC1.,IOMOVA1.,DHMU1.C1.DD1.,D1.MOVCH,1.MOVHOR1A1.MOVTEMPHOR,1.INCBXINCBXMOVDH,BXSUBDH,30HINCBXMOVD1.,BXSUBD1.,30HMOVC1.,10MOVA1.,DHMU1.C1.ADDA1.D1.MOVC1.,1.MOV

14、MIN1A1.MOVTEMPMIN,1.INCBXINCBXMOVD1.1.,BXSUBI)H,30HINCBXMOVD1.,BXSUBD1.,30HMOVC1.,IOMOVA1.,DHMU1.C1.ADD1.,D1.MOVDH,1.MOVTEMPSEC,A1.POPF;出栈复原数据POPDXPOPCXPOPBXPOPXJMPSTARTRETE()i11iMEENDPC1.EARPROCNEARPUSHAX;入栈爱护现场PUSHBXPUSHCXPUSHDXMOVAX,0600H;AH=06(滚动)A1.=Oo(全屏空白)MOVBH,1FH;设置背景颜色(1蓝色)和前景颜色(F白色)SUBCX,

15、CXMOVDX,5F5FHINTIOHPOPDX;出栈红原现场POPCXPOPBXPOPAXRETC1.EARENDPDATEPROCNEARMOVAH,2H;取日期CX:DH:D1.=年:月:日A1.=星期INT21HMOVSI,OMOVAX,CXMOVBX1100DIVB1.MOVB1.,HCA1.1.BQ)ASC1;日期数值转换成相应的ASCII码字符MOV1.,B1.CA1.1.BCDASC1INCSIMOVA1.,)HCA1.1.BCDSC1INCSIMOV1.,D1.CA1.1.BCDASC1MOVA1.,$MOVDBUFFERISI,A1.RETDATEENDPIJCDSC1PR

16、OCNEARPUSHBXCBWMOVB1.,IODIVB1.ADDA1./OMovDbufferisi,1.INCsiADDH,0,MOVDBUFFER1.SI,AHINCSIPOPBXRETBCDASC1ENDPSETTIMEPROC:时间修改子程序CA1.1.INPUT;调用键盘输入子程序输入数据MOVCH,HORMOVC1.,MINMOVDH,SECANDD1.1OHMOVH,2DHINT21HJMPSTARTRETSETTIMEENDPDE1.AY1.PRoC;精确延迟时间子程序MOVDX,04FFH;循环次数UP:XORCX,CXAiNOP1.OOPADECDXJNZUPRETDE1

17、.AY1.ENDPINPUTPROC;输入子程序PUSHAX;入栈爱护数据PUSHBXPUSHCXPUSHDXPUSHFMOVDX,OFFSETTN;显示修改时间的格式提示MOVH,09HINT2IHMOVDX,OFFSETT_BUFF;数据缓冲区的数据输入MOVH,OAHINT21H1.EABX,T_BUFFINCBXINCBXMOVDH,BXSUBDH,30HINCBXMOVD1.JBXSUBD1.,30HMOVC1.,10MOV1.,DHMU1.C1.ADD1.,D1.MOVCH,1.MOVHOR11.INCBXINCBXMOVDH,BXSUBDH,30HINCBXMOVD1.,BXSU

18、BD1.,30HMOVC1.,10MOVA1.,DHMU1.C1.ADDA1.,D1.MOVC1.,1.MOVMIN,A1.INCBXINCBXMOVDH,BXSUBf)H,30HINCBXMOV)1.,BXSUBD1.,30HMOVC1.,IOMOV1.,DHMU1.C1.ADD1.,D1.MOVDH1A1.MOVSEC,1.PoPF;出栈夏原数据POPDXPOPCXPOPBXPoPAXRETINPUTENDPCHECKPROCPUSHAXPUSHBXCMPCH1TEMPH0R;设置定点报时JNECF1.CMPC1.,TEMPMINJNECF1.CMPDH1TEMPSECJEXIANGCF1

19、.:CMPC1.,0;设置整点报时JNECFCMPDH,0JNECFXIANG:CA1.1.OPENPUSHDXPUSHCXMOVDX,12HMOVAX,34DEHMOVCX,MUSICDIVCXOUT42H,1.MOV1.,AHOUT42H,1.MOVAH,1INT2IHPOPCXPOPDXCA1.1.C1.OSECF:POPBXPOPXRETCHECKENDPOPENPROCPUSHXINA1.,61HOR1.,03HOUT61H,A1.PoPXRETOPENENDPC1.OSEPROCPUSHXINA1.,61HND1.,OFCHOUT61H,A1.POPXRETC1.OSEENDPCO

20、DEENDSENDSTART五.调试结果及显示六.个人贡献在本次课设实现过程中,我主要负成程序校正,和一部分程序的说明,主要有以下程序:MOVA1.1CH;小时数设定MOVAH,0CA1.1.BCTD;调用进制转换程序.进制BCD码子程序BUSHAXANDA1.fOFOH;选取A1.高四位MOVC1.,4;设置右循环的次数RORA1.,C1.;右循环ORA1.,30H;加30H得到ACS1.1.码MOVBX,A1.;将得到的结果送到T_BUFF缓冲INCBX;BX自加1,指针指向下一个缓冲区的下一个地址POPAXANDA1.,OFH;选取低四位ORA1.,30HMOYBX,1.:将转换后的低四

21、位值送入缓冲区的下一个地址INCBXMOVA1.显示分隔符号MOVBX,A1.INCBXVOVAH,2CH;取时间INT2IHVOVA1.,C1.;分钟数设定MOVH,0CA1.1.BCTD;调用进制转换子程序二进制BCD码子程序PUSHAXANDA1.OFOH;选取A1.高四位VOVC1.,4;设定循环次数RO1.A1.C1.;循环左移4次OR1.,30H;加30H得到ACSII码MOVBX,A1.;将得到的结果送到T_BUFF缓冲区INCBX:BX自加1,指针指向下一个缓冲区的下一个地址POPAXAND1.,OFH;选取低四位ORA1.,30HMOVBX,A1.;将转换后的低四位值送入缓冲

22、区的下一个地INCBXMOVA1.,:,;显示分隔符号MOVBX,1.INCBXMOVAH,2CH;秒设定INT21HMOV1.,DUMOVH,0CA1.1.BCTD;调用进制转换子程序二进制BCD码子程序PUSHAXAND1.,OFOH:选取A1.高四位MOVC1.,4RO1.1.,C1.ORA1.,30H;加30H得到ACSn码MOVBX,A1.:将得到的结果送到1.BUFF缓冲区INCBXPOPXANDA1.OFH;选取低四位ORA1.,30HMOVBX,A1.;将转换后的低四位值送入缓冲区的下一个地址INCBXC1.EARPROCNEARPUSHAX;入栈爱护现场PUSHBXPUSHC

23、XPUSHDXMOVAX,0600H;AH=O6(滚动)A1.=OO(全屏空白)MOVBH,1FH;设置背景颜色(1蓝色)和前班颜色(F白色)SUBCX,CXMOVDX,5F5FHINTIOHPOPDX;出栈夏原现场POPCXPOPBXPOPAXC1.EARENDPBCTDPROCNEAR;二进制BCD码子程序;AX输入参数;AX输出参数,存放调整过的BCD码MOVDX,XMOVAX,0MOVCX,16;设置循环次数七.课程设计总结及体会在这次的课程设计中,我们选择的题目是电子时钟设计,在设计的过程中,我们进行了相关资料的查询。我们小组的六个人进行了分工,俩个人负责一个部分的设计。通过这次课程设计学习,加深了我们编程相关学问的印象,也给了我们实际运用所学学问进行实践的机会。电子时钟的设计不算简洁,程序比较长,在设计的过程中,对微机原理的学问进一步加深了。我们小组成员相互帮组、相互学习,在实践中加深对理论学问的理解.通过这次学习,为我们在编程方面积累了很好的阅历。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号