东南大学信息学院微机时钟实验.docx

上传人:hs****ma 文档编号:557619727 上传时间:2024-01-18 格式:DOCX 页数:14 大小:98.93KB
返回 下载 相关 举报
东南大学信息学院微机时钟实验.docx_第1页
第1页 / 共14页
东南大学信息学院微机时钟实验.docx_第2页
第2页 / 共14页
东南大学信息学院微机时钟实验.docx_第3页
第3页 / 共14页
东南大学信息学院微机时钟实验.docx_第4页
第4页 / 共14页
东南大学信息学院微机时钟实验.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《东南大学信息学院微机时钟实验.docx》由会员分享,可在线阅读,更多相关《东南大学信息学院微机时钟实验.docx(14页珍藏版)》请在金锄头文库上搜索。

1、东南大学信息学院微机时钟实验微机实验报告实验九实验名称:时钟实验 院系:信息科学和工程学院学号:姓名:实验时间:2016.5一、 实验目的1. 熟悉系统功能调用INT 21H的有关功能2. 编写时钟程序二、 实验任务1.执行时钟程序时,屏幕上显示提示符“:”,由键盘输入当前时、分、秒值,即XX:XX:XX,随即显示时间并不停计时。三、 实验代码DATA SEGMENT ;定义数据段NUM DB 9 ;输入时间的最大长度,包含回车 DB ? ;实际输入时间长度 DB 9 DUP(?) ;开辟的长度DATA ENDSSTACK1 SEGMENT STACK ;定义栈段DB 200 DUP(0)ST

2、ACK1 ENDSCODE SEGMENT;定义代码段ASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AXMOV DL,:MOV AH,2INT 21H ;显示冒号,表明输入开始 MOV DX,OFFSET NUMMOV AH,0AH ;将ASCII码转换为16进制数INT 21HMOV BX,OFFSET NUM+2CALL ERR1 ;检查输入时间是否正确,若不正确,返回START AND AL,0FH MOV BX,ALINC BX CALL ERR1 ;检查输入时间是否正确,若不正确,返回START AND AL,0FH

3、MOV BX,AL INC BX CALL ERR2 ;检查时分之间是否以:相隔,若不是,返回STARTINC BX CALL ERR1 ;检查输入时间是否正确,若不正确,返回START AND AL,0FHMOV BX,AL INC BX CALL ERR1 ;检查输入时间是否正确,若不正确,返回START AND AL,0FHMOV BX,ALINC BXCALL ERR2 ;检查分秒之间是否以:相隔,若不是,返回STARTINC BX CALL ERR1 ;检查输入时间是否正确,若不正确,返回START AND AL,BX MOV BX,ALINC BX CALL ERR1 ;检查输入时

4、间是否正确,若不正确,返回START AND AL,0FHMOV BX,ALMOV BX,OFFSET NUM+2CALL TOBCD;调用转换BCD函数MOV CH,ALCMP CH,24H ;若输入小时数大于等于24,重输 JAE STARTADD BX,3CALL TOBCD MOV DH,ALCMP DH,60H ;若输入大于等于60,重输JAE STARTADD BX,3CALL TOBCDMOV DL,AL CMP DL,60HJAE START ;若输入秒数大于等于60,重输AGAIN: CALL DELAY ;调用延时函数MOV AL,DLADD AL,1DAAMOV DL,A

5、LCMP AL,60HJNE DISPY ;比较秒数是否达到60,若没有,跳转DISPY MOV DL,0MOV AL,DHADD AL,1DAAMOV DH,ALCMP AL,60H ;比较分数是否达到60,若没有,跳转DISPY JNE DISPY MOV DH,0MOV AL,CHADD AL,1DAAMOV CH,ALCMP AL,24H ;比较小时数是否达到24,若没有,跳转DISPYJNE DISPYMOV CH,0DISPY:MOV BX,OFFSET NUMMOV AL,0DHMOV BX,ALINC BXMOV AL,0AHMOV BX,ALINC BXMOV AL,CHCA

6、LL TOASC ;调用ASCII码转换函数INC BXMOV AL,:MOV BX,ALINC BXMOV AL,DHCALL TOASC ;调用ASCII码转换函数INC BXMOV AL,:MOV BX,ALINC BXMOV AL,DLCALL TOASC ;调用ASCII码转换函数INC BXMOV AL,$MOV BX,ALPUSH BXPUSH CXPUSH DXMOV DX,OFFSET NUM MOV AH,9 INT 21H ;显示字符串 MOV AH,06HMOV DL,0FFHINT 21H ;判断是否有按键按下,如果有,转至GO,即调用DOS中断POP DXPOP C

7、XPOP BXJNZ GOJMP AGAINGO:MOV AH,4CHINT 21H ;调用DOS中断TOBCD PROCMOV AL,BXSHL AL,1SHL AL,1SHL AL,1SHL AL,1OR AL,BX+1RETTOBCD ENDP ;转换为BCD码err1 PROC ;定义错误1:输入时间不是数字MOV AL,BX CMP AL,39HJA STARTCMP AL,30HJB START RETERR1 ENDP ERR2 PROC;定义错误2:时分秒没有用:表示MOV AL,BXCMP AL,3AHJNE STARTRETerr2 ENDPTOASC PROC ;ASCI

8、I码转换程序MOV CL,ALSHR AL,1SHR AL,1SHR AL,1SHR AL,1;AL右移四位OR AL,30H MOV BX,ALINC BXMOV AL,CLAND AL,0FHOR AL,30HMOV BX,ALRETTOASC ENDPDELAY PROC ;延时程序PUSH CXPUSH AXMOV AX,0FFFFHMOV CX,08FFFHG1:DEC AXJNZ G1DEC CXJNZ G1POP AXPOP CXRETDELAY ENDP CODE ENDSEND START四、 实验结果键入正确的时间,程序将进行计时e.g.1若没有键入正确的时间(超出时间表示范围或出现其他非法字符时),指针将会跳转至开头重新输入e.g.2e.g.3五、 分析问题并解释原因问题1:延迟时间很难掌握问题2:在判断输入字符时,能判断“?”却不能判断“!”原因:只考虑了大于数字ASCII码部分,没有考虑小于数字ASCII码的部分六、 思考题时钟实验中存在时间误差吗?若有误差,其来源于何处?如何进行误差校正?答:存在误差。出栈入栈指令占用时钟周期,不同的CPU的主频不同,机器周期也会有一定的误差。

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

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号