一、需求分析
要求:设计程序实现显示系统日期与时间,具体为:
A、程序运行时,先输出作者的相关信息,然后输出提示信息
B、输入大写字母’D’,可显示系统当前日期
C、输入大写字母’T’,可显示系统当前时间
D、输入大写字母’Q’,可结束程序。
在本设计中,首先设置显示方式为40*25文本方式,而后通过调用INT 10H的功能,显示提示信息。在显示信息提示下输入一 个字符,再通过调用INT 21H中断的功能,读取键盘输入的内容,如:若输入D,则设计程序代码一次读取系统日期年、月、日,并转换成ASCII码调用21H中断返回dos状态予以显示;若输入T,则设计程序代码一次读取系统时间时、分、秒,并转换成ASCII码调用21H中断返回dos状态予以显示;若输入Q,则退出程序;若不是相关字符,则显示错误。
二、总体设计
1、设计方案
图1:主程序设计流程图
2、系统功能结构
图2:系统功能结构框图
(1)MAIN程序
通过调用 IH 10H的功能,显示提示信息。在显示信息提示下输入一个字符,再通过调用INT21H中断的功能扫描键盘输入,读取键盘的状态,根据输入的字母,与字母“D”进行比较,若比较值不相等则去执行L1,否则响应按键D。其他如输入“T”和“Q”时同理。
(2)DATEDISPLAY PROC EAR子程序
即日期时间显示程序,以日期显示程序为例,通过读取系统的日期项如“年”通过调用CALL DATEDISPLAY把日期数值转换成相应的ASCII码字符,再通过调用DATEDISPLAY PROC EAR 期数值转换成ASCII码字符子程序,然后返回dos界面显示出来,然后再循环以同样方法读取月,日。
(3)TIMEDISPLAY PROC EAR子程序
本子程序是显示时间子程序,当键盘输入字母“T”时所调用执行的子程序;通过调用CALL TIMEDISPLAY将时间数值转换成ASCII码字符,因此需调用TIMEDISPLAY PROC NEAR时间数值转换成ASCII码字符子程序,然后返回dos完成一个时间项的显示,然后再循环去读取其他时间项,最后返回主程序执行主程序。
三、详细设计
调用dos系统3号功能设计一个文本区,调用INT 10H显示出来。定义行属性和光标的位置,设置内存空间大小,输入作者信息和提示内容,定义内容地址位置。
WELCOME DB '|*******************WELCOME YOU TO COME HERE!*******************|$' ;提示界面 欢迎你来到这里
INF00 DB 0DH, 0AH,'|*THIS IS A DISPLAY PROGAME!*|$' ;这是一个显示日期时