万年历课程设计.docx
- 文档编号:7191189
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:30
- 大小:2.91MB
万年历课程设计.docx
《万年历课程设计.docx》由会员分享,可在线阅读,更多相关《万年历课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
万年历课程设计
汇编语言
课程设计报告书
一.课程设计的题目和内容
用汇编语言编写一个万年历程序系统,该系统要有进入系统的封面,要有验证用户名和密码的功能,能正确显示万年历,在推出系统的时候,要有封底。
二.系统设计及功能要求
1.系统封面设计
内容:
题目名称,设计日期,设计者姓名。
要求:
具有动感,如题目名称移动;字体具有立体感。
可插入一些图画,如学校的校徽图。
2.输入画面设计
内容及要求:
①密码及口令:
输入,核查及修改功能。
②年份:
输入及判断功能。
如:
年份值是否为4位整数,不为4位,提示用户重输。
3.日历计算功能设计
①求某年某月某日是星期几的子功能。
(要求编成子程序)
算法:
s=(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+c
(其中:
y为年份;c为某月某日是这一年的第几天,由②求出;s为总天数。
“/”为整除。
)
n=s%7(其中:
n为星期数;“%”为求余数)
②求某月某日是这一年的第几天的子功能。
(要求编成子程序)
二月份是否为平年(28天)或闰年(29天)的算法:
y/400=0∨y/4=0∧y/100≠0(y为年份;“/”整除),则y为以闰年;否则,y为平年。
根据①②可求出一年中的日历。
4.日历输出功能设计。
①格式及显示设计
显示要求:
设置显示滚动区;在该区中每次显示4个月的日历(并列排列)。
②日历打印设计:
将日历按年存入磁盘不同的文件中保存,供打印或再次显示使用。
三.程序系统说明书
1.程序系统总体功能模块调用图及模块功能说明
封面程序的功能是显示欢迎信息,并且显示制
作人的信息的;验证用户名和密码的程序是验证用
户是否是合法的用户的,该程序要有容错的功能;
万年历程序是主程序,该程序的功能是通过用户输
入年和月,来查询日历的,并且该程序还可以判断
输入的年份是平年还是闰年。
封底程序是用来显示
用户退出万年历系统的时候,一个感谢用户使用万
年历的界面的。
2.程序系统详细的程序框图(每个子程序的流程图)
①封面子程序,封底子程序的框图
注:
以封面程序为例,封底程序与封面程序类似
②用户名和密码子程序框图
注:
以用户名程序为例,密码程序和用户名程序类似
③求某年某月某日是星期几的子程序
④..求某月某日是这一年的第几天的
⑤判断是平年还是闰年的子程序
⑥年份月份转化为真值的子程序
四.程序运行结果
五.系统源程序
.386
DATASEGMENTUSE16
A0DB'_____◆____◆____◆____◆____◆____◆_____◆_____$'
DB'※※$'
DB'||$'
DB'◆◆$'
DB'|┏☆━━━━━━━━━━━━━━☆┓|$'
DB'◆☆^ǒ^*☆*^ǒ^*★*^ǒ^*☆*^ǒ^*★*^ǒ^*☆◆$'
DB'|┃欢迎进入万年历系统┃|$'
DB'◆☆^ǒ^*★*^ǒ^*☆*^ǒ^*★*^ǒ^*☆*^ǒ^*☆◆$'
DB'|┗☆━━━━━━━━━━━━━━☆┛|$'
DB'◆◆$'
DB'||$'
DB'◆制作人:
某某某◆$'
DB'||$'
DB'◆班级:
2班◆$'
DB'||$'
DB'◆学号:
123456789012◆$'
DB'||$'
DB'◆日期:
08.1.15◆$'
DB'||$'
DB'◆◆$'
DB'||$'
DB'◆◆$'
DB'|版权所有,请勿仿冒|$'
DB'※____◆____◆____◆____◆____◆____◆____◆____※$'
A1DB'◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆$'
DB'◇◇$'
DB'◆◆$'
DB'◇◇$'
DB'◆┏━☆━━━━━━★━━━━━━☆━┓◆$'
DB'◇┃◆◇┃◇$'
DB'◆┃ 请输入用户名和密码┃◆$'
DB'◇┃◇↑↑↑↑↑↑↑↑↑↑↑↑↑◆┃◇$'
DB'◆┗━☆━━━━━━★━━━━━━☆━┛◆$'
DB'◇◇$'
DB'◆◆$'
DB'◇◇$'
DB'◆◆$'
DB'◇用户名:
◇$'
DB'◆◆$'
DB'◇◇$'
DB'◆密码:
◆$'
DB'◇◇$'
DB'◆◆$'
DB'◇◇$'
DB'◆◆$'
DB'◇◇$'
DB'◆◆$'
DB'◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇$'
A2DB'******★******☆******★*******☆*******★********$'
DB'☆☆$'
DB'||$'
DB'★★$'
DB'|***********************************|$'
DB'☆*欢迎再次使用万年历系统*☆$'
DB'|***********************************|$'
DB'★★$'
DB'||$'
DB'☆☆$'
DB'||$'
DB'★☆☆★★$'
DB'|如有不足之处,请联系我☆☆|$'
DB'☆☆$'
DB'|★★☆|$'
DB'★我们会不断的完善的★$'
DB'||$'
DB'☆^_^☆$'
DB'||$'
DB'★ISBN7-300-00528-9★$'
DB'||$'
DB'☆********★******☆********★********★*********☆$'
A3DB'******************万年历*******************$'
DB'********$'
DB'======================================$'
DB'|SUN|MON|TUE|WED|THU|FAI|SAT|$'
DB'|=====|=====|=====|=====|=====|=====|=====|$'
DB'||||||||$'
DB'|=====|=====|=====|=====|=====|=====|=====|$'
DB'||||||||$'
DB'|=====|=====|=====|=====|=====|=====|=====|$'
DB'||||||||$'
DB'|=====|=====|=====|=====|=====|=====|=====|$'
DB'||||||||$'
DB'|=====|=====|=====|=====|=====|=====|=====|$'
DB'||||||||$'
DB'|=====|=====|=====|=====|=====|=====|=====|$'
DB'||||||||$'
DB'|=====|=====|=====|=====|=====|=====|=====|$'
YEARDW?
MONTHDB?
BDW?
C1DW0
D1DW0
EDW0
GDB0
TDW0
SDB0
PDW?
NDW0
YDW0
MDW0
BUF1DB31,?
31,30,31,30,31,31,30,31,30,31
BUF2DB1,2,3,4,5,6,7,8,9,10,11,12
INPUT1DB'请输入要查询的年份:
$'
INPUT2DB'请输入要查询的月份:
$'
INPUT3DB'该年是平年$'
INPUT4DB'该年是闰年$'
INPUT5DB'要继续查询?
1.继续查询2.退出万年历系统$'
STR5DB5
DB0
DB5DUP(0)
STR6DB3
DB0
DB3DUP(0)
BUF3DB'1',0AH,0DH,'$'
DB'2',0AH,0DH,'$'
DB'3',0AH,0DH,'$'
DB'4',0AH,0DH,'$'
DB'5',0AH,0DH,'$'
DB'6',0AH,0DH,'$'
DB'7',0AH,0DH,'$'
DB'8',0AH,0DH,'$'
DB'9',0AH,0DH,'$'
DB'10',0AH,0DH,'$'
DB'11',0AH,0DH,'$'
DB'12',0AH,0DH,'$'
DB'13',0AH,0DH,'$'
DB'14',0AH,0DH,'$'
DB'15',0AH,0DH,'$'
DB'16',0AH,0DH,'$'
DB'17',0AH,0DH,'$'
DB'18',0AH,0DH,'$'
DB'19',0AH,0DH,'$'
DB'20',0AH,0DH,'$'
DB'21',0AH,0DH,'$'
DB'22',0AH,0DH,'$'
DB'23',0AH,0DH,'$'
DB'24',0AH,0DH,'$'
DB'25',0AH,0DH,'$'
DB'26',0AH,0DH,'$'
DB'27',0AH,0DH,'$'
DB'28',0AH,0DH,'$'
DB'29',0AH,0DH,'$'
DB'30',0AH,0DH,'$'
DB'31',0AH,0DH,'$'
CDB?
DDB?
STR1DB20
DB0
DB20DUP(0)
STR2DB20
DB0
DB20DUP(0)
STR3DB'admin';用户名
COUNT1EQU$-STR3
STR4DB'admin';密码
COUNT2EQU$-STR4
BUF4DB'用户名不正确,请重新输入!
$'
BUF5DB'密码不正确,请重新输入!
$'
DATAENDS
STACKSEGMENTUSE16STACK
DB200DUP(0)
STACKENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAH,0;设置显示方式
MOVAL,3;彩色文本方式
INT10H
;************************封面程序************************************
MOVAH,6
MOVAL,0
MOVCH,0
MOVCL,0;清整个屏幕
MOVDH,24
MOVDL,79
MOVBH,26
INT10H
MOVCX,24
MOVSI,OFFSETA0
MOVB,000EH
LOPA0:
MOVAH,2
MOVBX,0
MOVDX,B
INT10H
ADDDX,0100H
MOVB,DX
MOVDX,SI
MOVAH,9
INT21H
ADDSI,52
DECCX
JNZLOPA0
MOVAH,1
INT21H
;*************************用户名,密码程序****************************
MOVAH,6
MOVAL,0
MOVCH,0
MOVCL,0;清整个屏幕
MOVDH,24
MOVDL,79
MOVBH,30
INT10H
MOVCX,24;显示用户名的密码页面,共24行,循环输出24次
MOVSI,OFFSETA1
MOVB,000EH
LOPA1:
MOVAH,2;定光标位置
MOVBX,1
MOVDX,B
INT10H
ADDDX,0100H
MOVB,DX
MOVDX,SI;显示字符串
MOVAH,9
INT21H
ADDSI,52
DECCX
JNZLOPA1
MOVC,3;容错三次
LOPA2:
MOVAH,2;设置用户名光标位置
MOVBH,0;页号为1(帧屏号)
MOVDX,0D21H
INT10H
LEADX,STR1;输入用户名,保存在缓冲区STR1中
MOVAH,10
INT21H
MOVAL,STR1+1;用户名的长度送到AL中
CMPAL,COUNT1;比较输入的用户名是否和指定的用户名长度一样
JNER;长度不一样,跳转到P
LEASI,STR1+2
LEADI,STR3
MOVCX,COUNT1
REPZCMPSB;逐一比较两串的对应字符是否相等
JNER;不相等,跳转到P否则程序往下执行,输入密码
MOVD,3
LOPA3:
MOVAH,2;设置密码光标位置
MOVBH,0;页号为1(帧屏号)
MOVDX,1021H
INT10H
LEADX,STR2;输入密码,保存在缓冲区STR2中
MOVAH,10
INT21H
MOVAL,STR2+1;密码的长度送到AL中
CMPAL,COUNT2;比较输入的密码是否和指定的密码长度一样
JNEQ;长度不一样,跳转到Q
LEASI,STR2+2
LEADI,STR4
MOVCX,COUNT2
REPZCMPSB;逐一比较两串的对应字符是否相等
JNEQ;不相等,转Q
JMPT1;相等,转LOPA4
R:
MOVAH,2;设置显示用户名错误信息光标位置
MOVBH,0;页号为1(帧屏号)
MOVDX,1521H
INT10H
LEADX,BUF4;输出用户名错误信息
MOVAH,9
INT21H
MOVAH,6
MOVAL,1
MOVCH,13
MOVCL,33;清用户名输入行的屏幕
MOVDH,13
MOVDL,53
MOVBH,30
INT10H
MOVAH,1
INT21H
MOVAH,6
MOVAL,1
MOVCH,21
MOVCL,33;清用户名出错行的屏幕
MOVDH,21
MOVDL,60
MOVBH,20
INT10H
DECC;循环次数减1
JNZLOPA2;跳转到LOPA2,重新输入用户名
JEEXIT
Q:
MOVAH,2;设置显示密码错误信息光标位置
MOVBH,0;页号为1(帧屏号)
MOVDX,1521H
INT10H
LEADX,BUF5;输出密码错误信息
MOVAH,9
INT21H
MOVAH,6
MOVAL,1
MOVCH,16
MOVCL,33;清密码输入行的屏幕
MOVDH,16
MOVDL,53
MOVBH,30
INT10H
MOVAH,1
INT21H
MOVAH,6
MOVAL,1
MOVCH,21
MOVCL,33;清密码出错行的屏幕
MOVDH,21
MOVDL,60
MOVBH,20
INT10H
DECD;循环次数减1
JNZLOPA3;跳转到LOPA3,重新输入密码
JEEXIT
MOVAH,1
INT21H
;***********************显示万年历程序*******************************
T1:
MOVT,0
MOVAH,6
MOVAL,0
MOVCH,0
MOVCL,0;清整个屏幕
MOVDH,24
MOVDL,79
MOVBH,27
INT10H
MOVCX,17
MOVSI,OFFSETA3
MOVB,0411H
LOPA4:
MOVAH,2
MOVBX,0
MOVDX,B
INT10H
ADDDX,0100H
MOVB,DX
MOVDX,SI
MOVAH,9
INT21H
ADDSI,44
DECCX
JNZLOPA4
MOVAH,2;定输入年份提示信息的光标
MOVBX,0
MOVDH,1
MOVDL,17
INT10H
LEADX,INPUT1;提示信息,请输入要查询的年份
MOVAH,9
INT21H
MOVAH,2;定输入年份的光标
MOVBX,0
MOVDH,5
MOVDL,19
INT10H
LEADX,STR5;输入年份,保存在缓冲区STR1中
MOVAH,10
INT21H
LEADI,STR5+2;DI指向年份输入串的首地址
MOVCL,STR5+1;输入年份字符串的长度送到CL
MOVAX,0;年份转化为真值
P1:
MOVBL,[DI];取字符送到BL
SUBBL,30H;字符减去30H,转化为真值
MOVBH,0
MOVP,10
MULP
ADDAX,BX
INCDI;DI指向下一个字符
DECCX;长度减一
JNZP1
MOVYEAR,AX;把年送到YEAR中
CALLPR;调用判断平年还是闰年的程序
JCL1;有进位,借位,跳转到L1,输出闰年,否则顺序执行,是平年
MOVAH,2;输出平年信息的光标
MOVBX,0
MOVDH,1
MOVDL,36
INT10H
LEADX,INPUT3;输出平年
MOVAH,9
INT21H
LEADI,BUF1
MOV[DI+1],BYTEPTR28;平年把28送入BUF1中
JMPJ0
L1:
MOVAH,2;输出闰年信息的光标
MOVBX,0
MOVDH,1
MOVDL,36
INT10H
LEADX,INPUT4;输出闰年
MOVAH,9
INT21H
LEADI,BUF1
MOV[DI+1],BYTEPTR29;闰年把29送入BUF1中
J0:
MOVAH,2;定输入月份提示信息的光标
MOVBX,0
MOVDH,2
MOVDL,17
INT10H
LEADX,INPUT2;提示信息,请输入要查询的月份
MOVAH,9
INT21H
MOVAH,2;定输入月份的光标
MOVBX,0
MOVDH,5
MOVDL,56
INT10H
LEADX,STR6;输入月份,保存在缓冲区STR2中
MOVAH,10
INT21H
LEADI,STR6+2;DI指向月份输入串的首地址
MOVCL,STR6+1;月份输入串的长度送到CL中
MOVAX,0
P2:
MOVBL,[DI];取字符送到BL中
SUBBL,30H;字符减去30H
MOVBH,0
MOVS,10
MULS
ADDAX,BX
INCDI;DI指向下一个字符
DECCX;长度减一
JNZP2
MOVWORDPTRMONTH,AX;月份值送到MONTH中
CALLDTOB1;显示日历,调用DTOB1子程序返回N侄
MOVDI,OFFSETBUF1
DECMONTH
ADDDI,WORDPTRMONTH;取出每个月的天数
MOVCL,[DI]
MOVG,CL
MOVSI,OFFSETBUF3
MOVAL,6
MULN
ADDAX,19
MOVB,AX
MOVC1,9
J1:
MOVAH,2;确定每个月的一号的光标位置,即确定初始输入位置
MOVBX,0
MOVDH,BYTEPTRC1
MOVDL,BYTEPTRB
INT10H
CMPDL,55
JBEJ2;DL<33,跳转到J2,否则行加1列从3开始
ADDC1,2
MOVB,19
JMPJ1
J2:
MOVDX,SI
MOVAH,9;在当前光标位置显示数字
INT21H
ADDSI,5
ADDB,6
DECG
JNZJ1
MOVAH,2;定输入月份的光标
MOVBX,0
MOVDH,22
MOVDL,17
INT10H
LEADX,INPUT5
MOVAH,9
INT21H
MOVAH,1
INT21H
CMPAL,31H
JET1
JMPT2
DTOB1PROCNEAR;求某年某月某日是星期几子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
MOVCX,0
DECYEAR
MOVAX,YEAR;YEAR-1送入AX中
MOVCX,YEAR
MOVDX,0
MOVBL,4
DIVBX
MOVC1,AX;(YEAR-1)/4送入C1中
ADDCX,C1
MOVAX,YEAR
MOVDX,0
MOVBL,100
DIVBX
MOVD1,AX;(YEAR-1)/100送入D中
SUBCX,D1
MOVAX,YEAR
MOVDX,0
MOVBX,400
DIVBX
MOVE,AX;(YEAR-1)/400
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 课程设计