汇编语言设计说明书.docx

上传人:b****8 文档编号:29807547 上传时间:2023-07-27 格式:DOCX 页数:13 大小:79.83KB
下载 相关 举报
汇编语言设计说明书.docx_第1页
第1页 / 共13页
汇编语言设计说明书.docx_第2页
第2页 / 共13页
汇编语言设计说明书.docx_第3页
第3页 / 共13页
汇编语言设计说明书.docx_第4页
第4页 / 共13页
汇编语言设计说明书.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

汇编语言设计说明书.docx

《汇编语言设计说明书.docx》由会员分享,可在线阅读,更多相关《汇编语言设计说明书.docx(13页珍藏版)》请在冰豆网上搜索。

汇编语言设计说明书.docx

汇编语言设计说明书

汇编语言综合程序设计说明书

题目:

显示系统的当前时间和日期

 

系部:

计算机科学与技术系

班级:

计算机应用技术09-1班

姓名:

张三

指导教师文凭

 

目录

一、题目2

二、此程序编写的基本原理2

三、程序设计2

1)主程序2

2)子程序12

3)子程序22

4)子程序33

5)子程序43

四,流程图4

五、源代码4

六、运行结果:

10

七、设计的总结:

11

一、题目

编写一程序,完成以下功能:

在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序。

二、此程序编写的基本原理

通过调用INT10H的功能,显示提示信息。

在显示信息提示下输入一个字符,再调用INT21H功能中断,读取键盘的状态扫描键盘输入,从键盘输入的相关内容,若输入D,则依次读取当前系统日期年、月、日,然后转换成相应的ASCII码字符,再调用21H功能中断返回dos状态显示;在键盘输入T,则会依次读取当前电脑所显示的系统时间时、分、秒,转换成相应的ASCII码字符调用21H功能中断并返回dos状态显示;若输入大写字母Q,则退出当前状态;若是D/T/Q这三个字符以外的其他字符,则无反应。

三、程序设计

1)主程序

通过调用INT10H的功能,显示提示信息。

在根据显示的提示信息下输入一个字符,通过调用INT21H中断的功能扫描键盘输入,读取键盘的当前状态,根据输入的字母,与字母“D"进行比较,若比较值不相等则执行L1,否则响应按键D,输入“T”和“Q”时与输入“D”同理。

2)子程序1

即日期时间显示程序,以日期显示程序为例,通过读取系统的日期项如“年”,通过调用CALLDATEDISPLAY把日期数值转换成相应的ASCII码字符,再通过调用DATEDISPLAYPROCNEAR日期数值转换成ASCII码字符子程序,然后返回dos界面显示出来,再以同样方法读取月,日。

3)子程序2

此子程序是显示时间子程序,当键盘输入字母“D”时所调用执行的子程序;通过调用CALLDATEDISPLAY将时间数值转换成ASCII码字符,因此需调用DATEDISPLAYPROCNEAR时间数值转换成ASCII码字符子程序,然后返回dos完成一个日期项的显示,然后再循环去读取其他时间项;最后返回主程序执行主程序。

4)子程序3

即日期时间显示程序,以时间显示程序为例,通过读取系统的时间项,通过调用CALLTIMEDISPLAY把时间数值转换成相应的ASCII码字符,再通过调用TIMEDISPLAYPROCNEAR时间数值转换成ASCII码字符子程序,然后返回dos界面显示出来,然后再循环以同样方法读取月、日。

5)子程序4

本子程序是显示时间子程序,当键盘输入字母“T”时所调用执行的子程序;通过调用CALLTIMEDISPLAY将时间数值转换成ASCII码字符,因此需调用TIMEDISPLAYPROCNEAR时间数值转换成ASCII码字符子程序,然后返回dos完成一个时间项的显示,然后再循环去读取其他时间项;最后返回主程序执行主程序。

四,流程图

五、源代码

程序源代码:

CLEAR_SCREENMACROOP1,OP2,OP3,OP4

MOVAH,06H

MOVAL,00H

MOVBH,79H

MOVCH,OP1

MOVCH,OP2

MOVCH,OP3

MOVCH,OP4

int10H

MOVAH,02H

MOVBH,00H

MOVDH1,00H

MOVDL,00H

int10H

ENDM

STACKSEGMENTSTACK;定义堆栈段

DB200DUP(0)

STACKENDS

DATASEGMENT;定义数据段

WELCOMEDB'WELCOMEYOUTOCOMEHERE!

$';提示界面

INF01DB0DH,0AH,'THISISADISPLAYPROGAME!

$'

INF02DB0DH,0AH,'PLEASEINPUT"D""T"OR"Q"TOSHOWDATATIMEOREXIT!

$'

INF03DB0DH,0AH,'D:

DISPLAYSYSTEMDATE;$'

INF04DB0DH,0AH,'T:

DISPLAYSYSTEMTIME;$'

INF05DB0DH,0AH,'Q:

QUIT.$'

INF06DB0DH,0AH,'PLEASEINPUTTHECHAR:

$'

INPUTERDB0DH,0AH,'PNPUTERROR!

$'

DATEDISDB'00-00-0000',0AH,'$';显示DATE

TIMEDISDB'00:

00:

00',0DH,0AH,0AH,'$';显示TIME

DATAENDS

CODESEGMENT;代码段定义

ASSUMECS:

CODE,DS:

DATA,SS:

STACK;主程序

MAINPROCFAR

start:

MOVAH,0;设置40*25图形显示

MOVAL,3

int10H

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;显示输入提示INF05

JMPINPUT

EXIT1:

SHOWINF05;显示输入提示INF05

JMPINPUT

EXIT:

MOVAH,4CH;结束

int21H

MAINENDP;日期显示子程序

DATEDISPLAYPROCNEAR

LEADX,INF03;将INF03的偏移地址放到DX中,使DX指向INF03

MOVAH,09H;调用9号功能显示字符串

INT21H

MOVAH,04H;调用bios(基本输入输出系统)1A中段获取系统日期

INT1AH;CH=BCD码格式的世纪

;CL=BCD码格式的年

;DH=BCD码格式的月

;DL=BCD码格式的日

;CF=0时钟在走,否则,时钟停止

MOVAX,CX;设置年并覆盖00/00/0000中的0000

MOVCX,4;需要循环4次,把年的4位中每一位

LEASI,DATEDIS+6;取出,并覆盖掉DATEDIS中的后四位字符

LA1:

PUSHCX

MOVCL,4

ROLAX,CL

MOVBL,AL

ANDBL,0FH

ORBL,30H

MOV[SI],BL

INCSI

POPCX

LOOPLA1

MOVAX,DX;设置月日并覆盖00-00-0000中的00-00

MOVCX,4;需要循环4次,把年的4位中每一位

LEASI,DATEDIS;取出,并覆盖掉DATEDIS中的第1.2.4.5位字符

LA2:

PUSHCX

MOVCL,4

ROLAX,CL

MOVBL,AL

ANDBL,0FH

ORBL,30H

MOV[SI],BL

INCSI

POPCX

CMPCX,3

JNZP2;跳过00-00中的'-'

INCSI

P2:

LOOPLA2

LEADX,DATEDIS;显示系统当前日期

MOVAH,09H

INT21H

RET;调用后返回

DATEDISPLAYENDP;时间显示子程序

TIMEDISPLAYPROCNEAR

LEADX,INF04;将INF04的偏移地址放到DX中,使DX指向INF04

MOVAH,09H;调用9号功能显示字符串

INT21H

MOVAH,02H;调用bios1A中断的二号功能获取系统时间;时间计数器当前值写入数据区

INT1AH;CH=BCD码格式的小时

;CL=BCD码格式的分钟

;DH=BCD码格式的秒

;DL=00H标准时间,否则,夏令时

;CF=0时钟在走,否则,时钟停止

MOVAX,CX;设置小时,分钟,并覆盖00:

00:

00中时分

MOVCX,4

LEASI,TIMEDIS

LA3:

PUSHCX

MOVCL,4

ROLAX,CL

MOVBL,AL

ANDBL,0FH

ORBL,30H

MOV[SI],BL

INCSI

POPCX

CMPCX,3;跳过00:

00中的':

'

JNZP3

INCSI

P3:

LOOPLA3

PUSHDX;设置秒,并覆盖00:

00:

00中的最后的秒

MOVCL,4

SHRDH,CL;DH右移CL

ORDH,30H

MOVTIMEDIS+6,DH;将DH传送到DIMEDIS+6

POPDX

ANDDH,0FH

ORDH,30H

MOVTIMEDIS+7,DH

LEADX,TIMEDIS;显示时间

MOVAH,09H

INT21H

RET;时间调用后返回

TIMEDISPLAYENDP

codeends

endstart

六、运行结果:

输入“D”时出现的结果如图所示

输入“T”时出现的结果如下所示

如果按除了D/T/Q以外的字符时,出现的结果如下所示:

输入大写的Q时:

下面如图所示:

七、设计的总结:

1.在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序;若不是相关字符,则显示从新输入信息。

2在完成课程设计过程中,我认识到平时学习基础知识的重要性,只有能够熟练的掌握才能在课程设计过程中得心应手,否则就会不知从何处入手,因此,扎实的理论知识是课程设计成功的重要保障!

通过这次课程设计,我们对各个指令以及语句有了进一步的了解,对各个语句的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论概念的层面,而通过了这次的课程设计才真正的体会到,也做到了理论概念和汇编实际的相结合,使理论知识真正运用到了实用中去。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1