汇编语言课程设计显示系统当前时间与日期_第1页
汇编语言课程设计显示系统当前时间与日期_第2页
汇编语言课程设计显示系统当前时间与日期_第3页
汇编语言课程设计显示系统当前时间与日期_第4页
汇编语言课程设计显示系统当前时间与日期_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华北科技学院课程设计说明书课程名称: 汇编语言班级:计算机B08-1 姓名:.召E璐婷.学号:200807014109设计题目:显示系统当前时间与日期设计时间:2009 06 21 至 2009 07 02指导教师:孟广学评 语:评阅成绩:评阅教师:、课程设计目的进行程序设计方法和技能的基本训练, 巩固在课堂上学到的有关程序设计的 基本知识和基本方法, 通过实际动手能力的培养, 进一步熟悉汇编语言的结构和 使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。二、课程设计要求1 要求编写并调试通过一个小型软件,实现对软件或硬件的操作。 2遵循模块化、结构化的程序设计方法。3. 要求

2、程序必须正确。4. 程序简明易懂,多运用输入输出提示,出错信息及必要的注释。5. 要求程序结构合理,语句使用得当。6. 适当追求编程技巧和程序运行效率。三、课程设计题目 :题目:显示系统当前时间与日期要求设计界面提示信息为:“ Please in put DATE(D) OR TIME(T)OR QUIT(Q): ”,从键盘键入“ D',可显示系统日期。从键盘输入“ T”,可显示系 统时间。从键盘输入“ Q',退出程序。利用DOS勺系统功能调用的2AH和2CH功能 调用,读取系统日期和时间。将日期和时间转换为相应的ASCII码字符,显示在屏幕上。四、课题分析这个题目是显示系统当

3、前时间与日期,这就需要用 DOS勺2A号功能-取系 统日期和2C号功能-取系统时间,以及BIOS的06号功能-清屏或上卷,02 号功能 - 制光标位置。此题目主要是将时间,日期转换为相应的 ASCII 码,并 显示出来。五、流程图:- 1 -;1宏定义 ,设置七个参数;2 AH=06 屏幕初始化或上卷指 定的行;3 清屏;4 卷入行属性;5 左上角行号;6 左上角列号;7 右上角行号;8 右上角列号;9调用BIOS功能【见43行】;10 制定光标位置;11 第0页;12 第0行;13 第0列;14;15;16 定义堆栈段;17;18;19 定义数据段;20 提示界面;21;22;23;24;2

4、5;26;27 显示 DATE;28 显示 TIME【3A冒号0A换行OD回车】;29;30 代码段;31;32;33;34 AH=0 设置显示模式;35 设置80*25图形显示六、程序源代码:CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4MOV AH,06HMOV AL,00HMOV BH,79HMOV CH,OP1MOV CL,OP2MOV DH,OP3MOV DL,OP4INT 10HMOV AH,02HMOV BH,00HMOV DH,00HMOV DL,00HINT 10HENDMSTACK SEGMENTDB 200 DUP(0)STACK ENDSDATA

5、SEGMENTWELCOME DB 'WELCOME YOU TO COME HERE!$' INF01 DB 0DH,0AH,'THIS IS A DISPLAY PROGAME!$' INF02 DB 0DH,0AH,'D:DISPLAY SYSTEM DATE;$' INF03 DB 0DH,0AH,'T:DISPLAY SYSTEM TIME;$'INF04 DB 0DH,0AH,'Q:QUIT.',0DH,0AH,'$'INF05 DB 0DH,0AH,'PLEASE INPUT

6、THE CHAR:$'INPUTER DB 0DH,0AH,'INPUT ERROR!',0DH,0AH,'$' DATEDIS DB ' 00 - 00 - 0000',0AH,'$'TIMEDIS DB ' 00 ',3AH,' 00 ',3AH,' 00 ',0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MAIN PROC FARMOV AH,00HMOV AL,03HI

7、NT 10H;36CLEAR_SCREEN 00H,00H,19H,50H;37 调用宏定义MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AX;38;39;40;41SHOW MACRO bLEA DX,bMOV AH,9INT 21HENDM;42-46 显示宏定义;43;44;45;46SHOW WELCOME;47-52 调用宏定义,显示 字符串的内容SHOW INF01SHOW INF02SHOW INF03SHOW INF04SHOW INF05;48;49;50;51;52INPUT:MOV AH,01INT 21H;53 键盘输入并回写;54CMP

8、 AL,44HJNE L1CALLDATEDISPLAYJMP EXIT1;55 与D比较;56 不相等转 L1;57 相等调用日期显示子程序;58 继续输入字母L1:CMP AL,54HJNE L2CALLTIMEDISPLAYJMP EXIT1;59 与T比较;60 不相等转 L2;61 相等调用时间显示子程序;62 继续输入字母L2:CMP AL,51HJE EXIT;63与Q比较;64 相等转 EXITSHOW INPUTERSHOW INF05;65 显示输入错误;66 显示输入提示JMP INPUTEXIT1:SHOW INF05JMP INPUTEXIT:MOV AH,4CHIN

9、T 21HMAIN ENDPDATEDISPLAY PROC NEARMOV AH,2AHINT 21HMOV AX,CXMOV BX,10LEA SI,DATEDIS + 14MOV CX,4PUSH DXTAB:XOR DX, DXDIV BXADD DL, 30HMOV SI, DLDEC SILOOP TABPOP DXMOV AL, DLXOR AH, AHDIV BLADD AX, 3030HSUB SI, 4MOV SI, AXMOV AL, DH;67;68 显示输入提示;69;70 结束;71;72;73 日期显示子程序;74 取当前系统日期;75;76送年份入AX乍为被除数

10、【年份存在CX中;77 (BX)=10;78使SI指向年的最后一位【从 0开始数;79 (CX)=4 年的位数,循环4次;80 DX入栈,保存月日;81 DX清零,存余数;82 (DX,AX)/BX,商送 AX,余数送DX;83余数与30H相加变为字符的ASCII码;84 余数送入 SI 所指向的字 节区;85 SI 减一;86 循环 4 次【年的ASCII码转换;87 DX 还原;88日送AL【日存在D冲;89 AH 清零;90 AX/BL,商送AL,余数送AH;91 转变为数字字符的 ASCII码;92使SI指向日的第一位;93 (AX)送SI所指向的字节区;94月送AL【月存在DH中XO

11、R AH, AHDIV BLADD AX, 3030H;95 AH 清零;96 AX/BL, 商送AL,余数送AH;97 转变为数字字符的 ASCII 码SUB SI, 5 MOV SI, AX;98使SI指向月的第一位;99 (AX)送SI所指向的字节区SHOW DATEDISRETDATEDISPLAY ENDP;100 显示日期;101 调用后返回TIMEDISPLAY PROC NEARMOV AH,2CHINT 21HMOV BX,10LEA DI,TIMEDIS;102 时间显示子程序;103;104;105;106MOV AL,CHXOR AH,AHDIV BLADD AX,30

12、30HMOV DI+1,AX;107 CH存时;108;109;110;111MOV AL,CLXOR AH,AHDIV BLADD AX,3030HMOV DI+6,AX;112 CL 存分;113;114;115;116MOV AL,DHXOR AH,AHDIV BLADD AX,3030HMOV DI+11,AX;117 DH存秒;118;119;120;121SHOW TIMEDIS;122RETTIMEDISPLAY ENDP;123 时间调用返回CODE ENDSEND START;124;125- 5 -七、结果显示八、感想、收获及体会刚开始拿到这个程序的时候,首先想到应该是从键

13、盘输入的这个字符跟大写 字母T,D, Q分别比较,如果和哪个字母的 ASCII码相等,就调用与此字母相应 的子程序,显示日期,时间或者直接退出。在程序的开始,就已经先定义了清屏上卷宏定义, 制定了光标位置。考虑到 程序中多次要显示字符串,所以将显示字符串也作为一个宏定义, 避免了代码冗 长,程序罗嗦,不清晰的麻烦。而在整个程序中,我们只有两个子程序,日期显 示子程序和时间显示子程序。在编写日期显示子程序时,先取 CX中存的系统当前日期,存在 AX中,作 为被除数,除以10,给各位加上30H,变为它的ASCII码。使存日月的DX入 栈,以保护日月。指针指向DATEDIS字符串的最后一位,即年的最

14、后一位,循 环4次,将年的ASCII码依次放入字符串 DATEDIS ' 00-00-0000'的 0000' 位,随后DX出栈还原。取DL中存的日,放入AL中,将高位AH清零,AX作为 被除数,重复转换ASCII码的步骤,指针减4,指向字符串DATEDIS ' 00 - 00 -0000'的日的第一位,将转换后的日的 ASCII码放进 00'位。接着取DH中的 月,重复日的步骤,直到将月放进字符串。然后调用显示宏定义,将转换后的日 期显示出来。在显示月的子程序中,在 AX除以BL之后,即执行DIV BL ,其商送AL, 余数送AH,如6月存放与

15、DH中,除以BL之后,商为0,余数为6。分别存放 在AL和AH之中,加上3030H之后,AX中的内容为3630H。由于定义DATEDIS 为字节型,故存放时 30H 存放在低字节, 36H 存放在高位字节,显示时, 0' 字符在第一个显示, 6'字符在第二个显示,才会显示 06'。所以, SI 指针应 指向第一个 0',即第一个字节空间。同理,显示日和时间的时候也需要注意出 现这种情况。在显示完日期,时间后,若要退出系统,则只能按 Q 退出,按其他键不起 用。做这个程序的过程中,我加深了对某些指令的理解,如push, pop, jmp 指令。本次实验, 我觉得最大的收获便是慢慢学会了独立思考问题及解决问题, 并 且最终将自己的想法通过程序代码来实现, 我感觉这是对自我的一种突破。 乍一 看到这个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论