最新东南大学信息学院微机时钟实验Word下载.docx
- 文档编号:4227520
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:11
- 大小:76.17KB
最新东南大学信息学院微机时钟实验Word下载.docx
《最新东南大学信息学院微机时钟实验Word下载.docx》由会员分享,可在线阅读,更多相关《最新东南大学信息学院微机时钟实验Word下载.docx(11页珍藏版)》请在冰点文库上搜索。
输入时间的最大长度,包含回车
DB?
;
实际输入时间长度
DB9DUP(?
) ;
开辟的长度
DATAENDS
STACK1 SEGMENT STACK ;
定义栈段
DB200DUP(0)
STACK1 ENDS
CODESEGMENTﻩﻩ;
定义代码段
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
ﻩMOVDS,AX
ﻩMOV DL,’:
'
ﻩMOVAH,2
ﻩINT 21H ;
显示冒号,表明输入开始
MOVDX,OFFSETNUM
ﻩMOVAH,0AH ;
将ASCII码转换为16进制数
INT21H
ﻩMOV BX,OFFSET NUM+2
CALLERR1 ;
检查输入时间是否正确,若不正确,返回START
ﻩANDAL,0FH
MOV[BX],AL
ﻩINC BX
CALLERR1;
检查输入时间是否正确,若不正确,返回START
ﻩANDAL,0FH
MOV [BX],AL
INCBX
CALLERR2 ;
检查时分之间是否以:
相隔,若不是,返回START
ﻩINC BX
CALLERR1 ;
检查输入时间是否正确,若不正确,返回START
ﻩANDAL,0FH
MOV[BX],AL
INCBX
CALLERR1 ;
检查输入时间是否正确,若不正确,返回START
ﻩANDAL,0FH
MOV[BX],AL
ﻩINCBX
ﻩCALLERR2 ;
检查分秒之间是否以:
相隔,若不是,返回START
ﻩINCBX
CALLERR1 ;
检查输入时间是否正确,若不正确,返回START
ﻩANDAL,[BX]
ﻩMOV[BX],AL
INCBX
CALLERR1 ;
检查输入时间是否正确,若不正确,返回START
ﻩANDAL,0FH
MOV[BX],AL
MOV BX,OFFSETNUM+2
CALLTOBCDﻩ;
调用转换BCD函数
ﻩMOVCH,AL
ﻩCMPCH,24H ;
若输入小时数大于等于24,重输
JAESTART
ﻩADDBX,3
CALLTOBCD
MOV DH,AL
ﻩCMPDH,60H ;
若输入大于等于60,重输
JAESTART
ﻩADDBX,3
ﻩCALLTOBCD
ﻩMOVDL,AL
ﻩCMPDL,60H
ﻩJAESTART ;
若输入秒数大于等于60,重输
AGAIN:
CALL DELAY ;
调用延时函数
ﻩMOV AL,DL
ADDAL,1
ﻩDAA
MOVDL,AL
ﻩCMPAL,60H
JNEDISPY ;
比较秒数是否达到60,若没有,跳转DISPY
ﻩMOV DL,0
ﻩMOVAL,DH
ﻩADDAL,1
DAA
MOV DH,AL
CMPAL,60H ;
比较分数是否达到60,若没有,跳转DISPY
JNEDISPY
MOV DH,0
ﻩMOVAL,CH
ADDAL,1
ﻩDAA
ﻩMOVCH,AL
CMPAL,24Hﻩﻩ;
比较小时数是否达到24,若没有,跳转DISPY
JNEDISPY
MOVCH,0
DISPY:
ﻩMOVBX,OFFSET NUM
MOV AL,0DH
MOV [BX],AL
INCBX
MOVAL,0AH
ﻩMOV[BX],AL
INCBX
ﻩMOVAL,CH
ﻩCALL TOASC;
调用ASCII码转换函数
INCBX
MOVAL,’:
’
ﻩMOV [BX],AL
ﻩINCBX
MOVAL,DH
ﻩCALLTOASCﻩ;
ﻩINCBX
ﻩMOVAL,’:
MOV[BX],AL
MOVAL,DL
CALLTOASC ﻩ ;
调用ASCII码转换函数
ﻩINC BX
MOVAL,’$’
ﻩMOV[BX],AL
ﻩPUSHBX
ﻩPUSHCX
ﻩPUSHDX
MOV DX,OFFSETNUM
ﻩMOVAH,9
ﻩINT21H ;
显示字符串
ﻩMOV AH,06H
MOVDL,0FFH
ﻩINT21H ;
判断是否有按键按下,如果有,转至GO,即调用DOS中断
ﻩPOPDX
ﻩPOP CX
ﻩPOP BX
JNZGO
ﻩJMPAGAIN
GO:
MOVAH,4CH
INT21H ;
调用DOS中断
TOBCDPROC
ﻩMOVAL,[BX]
SHLAL,1
SHLAL,1
ﻩSHLAL,1
ﻩSHLAL,1
ORAL,[BX+1]
ﻩRET
TOBCD ENDP ;
转换为BCD码
err1PROCﻩﻩ ;
定义错误1:
输入时间不是数字
MOVAL,[BX]
CMPAL,39H
ﻩJASTART
CMPAL,30H
ﻩJB START
RET
ERR1ENDP
ERR2PROCﻩﻩ;
定义错误2:
时分秒没有用:
表示
MOVAL,[BX]
ﻩCMPAL,3AH
JNE START
RET
err2ENDP
TOASCPROC ﻩ;
ASCII码转换程序
MOVCL,AL
SHRAL,1
SHR AL,1
SHRAL,1
ﻩSHRAL,1ﻩﻩ;
AL右移四位
OR AL,30H
MOV [BX],AL
ﻩINCBX
MOV AL,CL
ANDAL,0FH
ﻩORAL,30H
ﻩMOV[BX],AL
RET
TOASC ENDP
DELAYPROCﻩﻩ ;
延时程序
ﻩPUSHCX
PUSHAX
ﻩMOV AX,0FFFFH
MOV CX,08FFFH
G1:
DEC AX
ﻩJNZG1
ﻩDECCX
ﻩJNZG1
ﻩPOPAX
POPCX
DELAYENDP
CODE ENDS
ENDSTART
四、实验结果
键入正确的时间,程序将进行计时
e。
g.1
若没有键入正确的时间(超出时间表示范围或出现其他非法字符时),指针将会跳转至开头重新输入
e。
g。
2
g。
3
五、分析问题并解释原因
问题1:
延迟时间很难掌握
问题2:
在判断输入字符时,能判断“?
”却不能判断“!
”
原因:
只考虑了大于数字ASCII码部分,没有考虑小于数字ASCII码的部分
六、思考题
时钟实验中存在时间误差吗?
若有误差,其来源于何处?
如何进行误差校正?
答:
存在误差。
出栈入栈指令占用时钟周期,不同的CPU的主频不同,机器周期也会有一定的误差。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 东南大学 信息 学院 微机 时钟 实验