《汇编语言》课程设计报告显示系统时间文档格式.docx
- 文档编号:20382245
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:13
- 大小:185.67KB
《汇编语言》课程设计报告显示系统时间文档格式.docx
《《汇编语言》课程设计报告显示系统时间文档格式.docx》由会员分享,可在线阅读,更多相关《《汇编语言》课程设计报告显示系统时间文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
2009年5月31日运行的程序中,
使用2AH的DOS功能调用后,得到CX=07D9H,DX=051FH
其中,CX中的数据为2009D,即年份。
DX中的数据中可分析得:
DH=05H=05D,即月份。
DL=1FH=31D,即日期号。
最后应将数据转换为其字符对应的ASCII码,
即32H,30H,30H,39H,2DH,30H,35H,2DH,33H,31H再显示在屏幕上。
即显示出:
2009-5-31
3主程序设计
其中主要对主程序和宏清屏命令进行了设计和编码,下面将分别对它们进行简要说明。
主程序:
CODESEGMENT;
代码段
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
MAINPROCFAR
BEGIN:
MOVAH,0;
设置40*25图形显示
MOVAL,3
INT10H
CLEAR_SCREEN00H,00H,19H,50H
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
;
*******************显示宏定义*************************
SHOWMACROb
LEADX,b
MOVAH,9
INT21H
ENDM
SHOWWELCOME;
显示数据段的内容
SHOWINF01
SHOWINF02
SHOWINF03
SHOWINF04
SHOWINF05
SHOWINF06
INPUT:
MOVAH,01;
键盘输入并回写
INT21H
CMPAL,44H;
与D比较
JNEL1;
不相等转L1
CALLDATEDISPLAY;
相等调用DATADISPLAY
JMPEXIT1
L1:
CMPAL,54H;
与T比较
JNEL2;
不相等转L2
CALLTIMEDISPLAY;
相等调用TIMEDISPLAY
JMPEXIT1
L2:
CMPAL,51H;
与Q比较
JEEXIT;
相等转EXIT
SHOWINPUTER;
显示输入错误
SHOWINF05;
显示输入提示
JMPINPUT
EXIT1:
SHOWINF06;
JMPINPUT;
EXIT:
MOVAH,4CH;
结束
MAINENDP
主程序主要实现与用户的交互,首先程序会提示用户想要进行什么操作。
是显示DATE,TIME还是退出。
这里对应的给用户提供的选项是“D”、“T”和“Q”。
当用户输入他们的选项之后,主程序要判断用户的输入调用相应的功能模块来满足用户的要求。
我们假设用户输入字符为X,那么首先我们将X与“D”比较。
如果相同则程序调用DATE_DISPLAY模块为用户显示日期。
若不为“D”则要继续与“T”想比较。
相等则调用TIME_DISPLAY模块,不等则继续与“Q”相比较。
相等则正常退出,不等则说明用户输入非法字符主程序返回到选择界面用户可以继续选择。
特别说明:
汇编语言的选择结构不同于C语言的选择结构,程序设计过程中要特别小心。
避免将造成潜在的BUG.
3.1主程序流程图
4子程序设计
4.1DATE子程序流程图
4.2TIME子程序流程图
5调试
(1)、运行环境(软、硬件环境):
硬件:
8086以上CPU,内存256M以上。
软件:
WINDOWS操作系统,MASM,LINK汇编编译链接软件。
(2)、程序界面:
1.提示界面如图6-1
图6-1
2.显示日期如图6-2
图6-2
3.显示时间如图6-3
图6-3
4.错误输入如图6-4
图6-4
1)编译源文件,命名为jie3.ASM;
2)采用命令格式。
MASMjie3.ASM将生成一个OBJ文件,检查源程序中的错误,并改正。
3)键入连接命令:
LINKjie3.OBJ,再次键入jie3回车,即可显示结果。
4)时间在运行中出现了不准确性,对程序的循环次调整后,时间能正常运行。
6设计总结
通过对这一闹钟程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。
通过查阅以下资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。
这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了很多小程序。
但这次是一个综合的程序,平时的很多程序都用到了,例如在程序中用到了不少的子程序,宏,这些子程序的设计是固定的,因此可以直接从指导资料中调用,大多只需要修改几个参数就可以,这大大方便了我们的设计,为我们节省了很多的时间。
在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,这是去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。
从资料中,我们可以看出这个时钟程序的基本流程,修改一些程序就可以实现这个时钟的基本功能,添加一些程序就可以实现这个时钟的附加功能。
不可否认,本程序存在不少缺点和不足,但通过这次作业的却找出了自己在学习上的不足,对以后的工作也有指导作用。
我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!
7程序清单
程序代码:
;
************************清屏宏定义**********************
CLEAR_SCREENMACROOP1,OP2,OP3,OP4;
1
MOVAH,06H;
2
MOVAL,00H;
3
MOVBH,79H;
4
MOVCH,OP1;
5
MOVCL,OP2;
6
MOVDH,OP3;
7
MOVDL,OP4;
8
INT10H;
9
MOVAH,02H;
10
MOVBH,00H;
11
MOVDH,00H;
12
MOVDL,00H;
13
INT10H;
14
ENDM;
15
STACKSEGMENTSTACK;
16定义堆栈段
DB200DUP(0);
17
STACKENDS;
18
DATASEGMENT;
19定义数据段
WELCOMEDB'
WELCOMEYOUTOCOMEHERE!
$'
;
20提示界面
INF01DB0DH,0AH,'
THISISADISPLAYPROGAME!
21
INF02DB0DH,0AH,'
PLEASEINPUT"
D"
"
T"
OR"
Q"
TOSHOWDATATIMEOREXIT!
INF03DB0DH,0AH,'
D:
DISPLAYSYSTEMDATE;
22
INF04DB0DH,0AH,'
T:
DISPLAYSYSTEMTIME;
23
INF05DB0DH,0AH,'
Q:
QUIT.$'
24
INF06DB0DH,0AH,'
PLEASEINPUTTHECHAR:
25
INPUTERDB0DH,0AH,'
INPUTERROR!
26
DATEDISDB'
00-00-0000'
0AH,'
;
27显示DATE
TIMEDISDB'
00'
3AH,'
28显示TIME
DATAENDS;
29
CODESEGMENT;
30代码段
STACK;
31
****************************主程序**************************
MAINPROCFAR;
32
;
33
MOVAH,0;
34设置40*25图形显示
MOVAL,3;
35
INT10H;
36
CLEAR_SCREEN00H,00H,19H,50H;
37
MOVAX,DATA;
38
MOVDS,AX;
39
MOVAX,STACK;
40
MOVSS,AX;
41
************************显示宏定义*************************
SHOWMACROb;
42
LEADX,b;
43
MOVAH,9;
44
INT21H;
45
46
SHOWWELCOME;
47显示数据段的内容
SHOWINF01;
48
SHOWINF02;
49
SHOWINF03;
50
SHOWINF04;
51
SHOWINF05;
52
SHOWINF06;
53
53键盘输入并回写
54
CMPAL,44H;
55与D比较
56不相等转L1
57相等调用DATADISPLAY
JMPEXIT1;
58
CMPAL,54H;
59与T比较
JNEL2;
60不相等转L2
61相等调用TIMEDISPLAY
62
63与Q比较
JEEXIT;
64相等转EXIT
SHOWINPUTER;
65显示输入错误
SHOWINF05;
66显示输入提示
JMPINPUT;
67
SHOWINF05;
68显示输入提示
69
MOVAH,4CH;
70结束
71
MAINENDP;
72
********************日期显示子程序**************************
DATEDISPLAYPROCNEAR;
73
MOVAH,2AH;
74取当前系统日期
INT21H;
75
MOVAX,CX;
76送年份入AX
MOVBX,10;
77(BX)=10
LEASI,DATEDIS+14;
78使SI指向年的最后一位
MOVCX,4;
79(CX)=4
PUSHDX;
80保存月日
TAB:
XORDX,DX;
81DX清零
DIVBX;
82(DX,AX)/BX,商送AX,余数送DX
ADDDL,30H;
83余数与30H相加变为字符的ASCII码
MOV[SI],DL;
84余数送入SI所指向的字节区
DECSI;
85SI减一
LOOPTAB;
86循环
POPDX;
87DX还原
MOVAL,DL;
88日送AL
XORAH,AH;
89AH清零
DIVBL;
90AX/BL,商送AH,余数送AL
ADDAX,3030H;
91转变为数字字符的ASCII码
SUBSI,4;
92使SI指向日的第一位
MOV[SI],AX;
93(AX)送SI所指向的字节区
MOVAL,DH;
94月送AL
95AH清零
DIVBL;
96AX/BL,商送AH,余数送AL
97转变为数字字符的ASCII码
SUBSI,5;
98使SI指向月的第一位
99(AX)送SI所指向的字节区
SHOWDATEDIS;
100显示日期
RET;
101调用后返回
***********************时间显示子程序***********************
TIMEDISPLAYPROCNEAR;
102
MOVAH,2CH;
103
INT21H;
104
MOVBX,10;
105
LEADI,TIMEDIS;
106
MOVAL,CH;
107
XORAH,AH;
108
DIVBL;
109
ADDAX,3030H;
110
MOV[DI+1],AX;
111
MOVAL,CL;
112
113
114
115
MOV[DI+6],AX;
116
MOVAL,DH;
117
118
119
120
MOV[DI+11],AX;
121
SHOWTIMEDIS;
122
123时间调用返回
CODEENDS;
124
ENDBEGIN;
125
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计 报告 显示 系统 时间