显示时间日期
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书
课程设计题目
显示系统日期时间的程序开发
1.课程设计的目的和内容
内容:要求完成一个显示系统当前日期和时间的程序,即通过按下键盘上某个按键就可以显示系统的日期和时间或者终止程序。(比如:在出现的提示信息后输入小写字母“d”,显示系统当前日期;输入小写字母“t”,显示系统当前时间;输入小写字母“q”,结束程序。)
此程序涉及到对DOS和BIOS的常用功能的调用,要求学生掌握使用汇编语言对I/O中断的使用。
目的:(1)使学生能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
(2)培养学生综合运用所学知识独立完成汇编程序课题的能力。
(3)培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
(4)提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
(5)培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
(6)对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
2.开发环境:
(1)软件环境:DOS系统。
(2)硬件环境:普通PC机。
3.功能分析
(1)总体设计功能
工作原理:在DOS环境下完成,先利用BIOS功能调用中显示器驱动程序的00H类型调用,设置显示器的显示模式为80*25彩色。
在屏幕中央显示提示信息(提示用户输入“d”或“t”或“q”)。
然后对用户输入的字母进行判断,利用分支程序分别调用不同的子程序。两个子程序的功能分别是显示当前日期(用2AH的DOS功能调用来取日期),显示当前时间(用2CH的DOS功能调用来取时间)。
必须用到的DOS功能调用:
取当前系统日期:功能号为2AH,返回值送入CX,DX寄存器中。
取当前系统时间:功能号为2CH,返回值送入CX,DX寄存器中。
1.部分程序设计及功能
(1)文本显示
在显示彩色文本时,属性字节能够选择前景(显示的字节)和背景的颜色;每个字符可以选择16种颜色中的一种,背景有8种颜色可以选择;在程序代码中,
我设置了显示绿色,代码部分如下:
LOP:
PUSH CX;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV AL,[DI]
ADD AL,30H
MOV BL,02H
(2)时间日期转化数制
在定义堆栈寄存器,按循环要求读取系统日期项,由于读取的日期项是二进制代码,因此需调用DIVNUM PROC子程序转换为BCD码,其中部分代码如下:
DIVNUM PROC NEAR
PUSH CX
AGAIN: MOV BL,0AH
DIV BL
MOV [DI],AH
MOV AH,0
INC DI
LOOP AGAIN
DEC DI
POP CX
RET
DIVNUM ENDP
(3)光标设置
利用INT 10H的功能1是光标显现或者关闭,这个功能也控制光标行的开始和结束,也就是控制光标的大小;INT 10H的功能2设置光标位置,光标位置的行号设在DH寄存器中,列号设在DL中;BH中必须包含被输出的页号,对单色显示器来说,页号总是0;INT 10H功能3是读光标位置,页号也必须在BH中指定,此功能把光标位置的行号回送给DH,列号回送给DL;程序中的代码部分如下:
MOV BH,0
MOV CX,1
MOV AH,9
INT 10H
MOV BH,0
MOV AH,3
INT 10H
INC DL
MOV AH,2
INT 10H
(2)详细设计功能
本程序通过调用不同的子程序来实现系统功能,以下为各主要子程序的详细设计。
1.日期子程序
系统通过条用时间子程序来实现获取并显示当前时间的功能。此程序主要涉及三个重点:
(1)DOS和BIOS的常用功能的调用。
(2)掌握使用汇编语言对I/O中断的使用。
(3)ACS码与BCD码数制上的转化。
子程序的程序流程图如下
图3-1 日期子程序的流程
当键盘输入字母“D”时所调用执行的子程序;首先定义堆栈寄存器,按循环要求读取系统日期项,由于读取的日期项是二进制代码,因此需调用DIVNUM PROC子程序转换为BCD码,然后接着调用LISNUM PROC予以显示;执行完DIVNUM PROC子程序后调用DIS1 PROC显示一个分隔符”-”,完成一个日期项的显示,然后再循环去读取其他日期项;最后返回主程序执行主程序。
子程序的关键代码:
MOV DX,OFFSET BUF2
MOV AH,9
INT 21H
MOV AH,2AH
INT 21H
MOV YEAR,CX
MOV MON,DH
MOV DAY,DL
MOV DI,OFFSET BUF
MOV AX,YEAR
MOV CX,4
CALL DIVNUM
CALL LISNUM
CALL DIS1
MOV AL,MON
MOV AH,0
MOV CL,2
CALL DIVNUM
CALL LISNUM
CALL DIS1
MOV AL,DAY
MOV AH,0
MOV CL,2
CALL DIVNUM
CALL LISNUM