用汇编语言显示系统日期时间
- 格式:doc
- 大小:77.50 KB
- 文档页数:7
摘要本设计是采用单片机技术的电子定时闹钟,近年来集成电路技术的出现和应用,是推动了人类文明的突飞猛进。
基于集成电路技术的单片机产品更是方便了人们的生活和工作,目前以单片机技术的应用为核心的产品种类非常丰富。
应用我们所学过的知识和查阅相关资料,我制作了这个单片机技术为基础的LCD 可校时可定时电子闹钟,这是一个简单的实用的单片机电子设计产品。
本“LCD定时电子闹钟’设计采用AT89C51为主控芯片。
在充分理解了设计的要求后,准确的定位了设计的目的,然后构思了总体的方案。
在选择和合适的硬件完成了电路的设计后,又进行了软件的设计和调试。
本系统的硬件组成以及工作原理都有详细的图文说明,所应用的软件技术和各个模块设计的功能及工作过程也有详细的介绍,最后的部分则详细描述了了软件仿真及调试过程。
本电子钟设计是以单片机技术为核心,采用了中小规模集成度的单片机制作的功能较为完善的电子闹钟。
硬件设计应用了成熟的数字钟电路的基本设计方法以,并详细介绍了系统的工作原理。
硬件电路中使用了除AT89C51外,另外还有LCD、晶振、电阻、电容、发光二极管、开关、喇叭等元件。
在硬件电路的基础上,软件设计按照系统设计功能的要求,运用所学的汇编语言,实现的功能包括‘时时-分分-秒秒’显示、设定和修改定时时间的小时和分钟、校正时钟时间的小时、分钟和秒、定时时间到能发出一分钟的报警声。
最后应用‘伟福’及‘Proteus’等软件将硬件电路和软件系统链接在一起对各个部分及整体进行仿真并调试构成了整个完整的电子闹钟的设计。
最后通过反复的实际仿真和测试表明,该系统能够实现所有要求的功能包括:(1)能显示‘时时-分分-秒秒’。
(2)能够设定定时时间、修改定时时间及时钟。
(3)定时时间到蜂鸣器能发出铃声,另外还在此基础上实现了其他的附加功能比如万年历。
当然这个系统仍然是属于比较简单的单片机应用系统,要设计功能更强的更复杂的系统还需要我进一步的学习。
国家示范性软件学院汇编程序设计与组成原理课程设计姓名: _______ _班级: _______ _学号: _______ _指导老师: _______ _成绩: _______ _评语一. 课程设计的目的及意义通过课程设计,主要达到以下目的:1. 使学生增进对汇编语言的认识,加强用汇编语言编程的能力。
2. 使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。
3. 使学生了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础。
(垃,圾,文库,叫你说我文档质量偏低)二. 基本内容题目:显示系统当前时间与日期要求设计界面提示信息为:“Please input DATE(D) OR TIME(T)OR QUIT(Q):”,从键盘键入“D”,可显示系统日期。
从键盘输入“T”,可显示系统时间。
从键盘输入“Q”,退出程序。
利用DOS 的系统功能调用的2AH 和2CH 功能调用,读取系统日期和时间。
将日期和时间转换为相应的ASCII 码字符,显示在屏幕上。
(垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低)三. 系统功能结构框图(垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低)主程序MAIN(显示界面提示信息,根据键盘输入的字符调用各子程序) 子程序DATEDISPLAY(调用DOS 的2AH 功能,取系统当前日期,将日期转换成对应的ASCII 码值并显示)子程序TIMEDISPLAY(调用DOS 的2CH 功能,取系统当前时间,将时间转换成对应的ASCII 码值并显示)CALLCALL四. 系统流程框图五. 源程序代码;*************清屏宏定义***********CLEAR_SCREEN MACRO ;宏定义,设置七个参数MOV AH,06H ;AH=06屏幕初始化或上卷指定的行 MOV AL,00H ;清屏INT 10H ;调用BIOS 功能 MOV AH,02H ;制定光标位置 MOV BH,00H ;第0页 MOV DH,00H ;第0行 MOV DL,00H ;第0列 INT 10H ENDM;*********定义堆栈段******** STACK SEGMENT DB 200 DUP (?) tos label byte STACK ENDS;*********定义数据段******** DATA SEGMENTSTR00 DB ' |********** Welcome! **********|$' ;提示界面 STR01 DB 0DH,0AH,' |* *|$' STR02 DB 0DH,0AH,' |* This is a display program. *|$'开始设置显示方式为80×25彩色文本方显示界面提示信息从键盘输入单个字符判断字符显示系统日期显示系统时间提示输入错误结束D(d)T(t)otherQ(q)STR03 DB 0DH,0AH,' |* D: display Date *|$' STR04 DB 0DH,0AH,' |* T: display Time *|$' STR05 DB 0DH,0AH,' |* Q: Quit *|$' STR06 DB 0DH,0AH,' |* *|$' STR07 DB 0DH,0AH,' |********************************|$' STR08 DB 0DH,0AH,'Please input a char: $'INPUTER DB 0DH,0AH,'Input Error!',0DH,0AH,'$'DATEDIS DB' 0000-00-00 ',0AH,'$';显示DATETIMEDIS DB' 00:00:00',0AH,'$';显示TIMEDATA ENDS;*********定义代码段********CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MAIN PROC FARMOV AH,00H ;AH=0设置显示模式MOV AL,03H ;设置80*25图形显示INT 10HCLEAR_SCREEN ;调用宏定义MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXmov sp,offset tos;*******显示宏定义********;用于显示字符串SHOW MACRO strLEA DX,strMOV AH,9INT 21HENDMSHOW STR00SHOW STR01SHOW STR02SHOW STR03SHOW STR04SHOW STR05SHOW STR06SHOW STR07INPUT:SHOW STR08 ;显示输入提示MOV AH,01 ;键盘输入并回写INT 21HCMP AL,"D";与D比较JE PRINT_DATE ;相等转PRINT_DATE打印日期CMP AL,"d"JE PRINT_DATECMP AL,"T";与D比较JE PRINT_TIME ;相等转PRINT_TIME打印时间CMP AL,"t"JE PRINT_TIMECMP AL,"Q";与Q比较JE EXIT ;相等转EXIT退出程序CMP AL,"q"JE EXITSHOW INPUTER ;显示输入错误JMP INPUTPRINT_DATE:CALL DATEDISPLAY ;调用日期显示子程序JMP INPUT ;继续输入字母PRINT_TIME:CALL TIMEDISPLAY ;调用时间显示子程序JMP INPUT ;继续输入字母EXIT: ;结束,退出程序MOV AH,4CHINT 21HMAIN ENDP;*********日期显示子程序*********DATEDISPLAY PROC NEARMOV AH,2AH ;取当前系统日期INT 21HMOV AX,CX ;送年份入AX作为被除数【年份存在CX中】MOV BX,10 ;(BX)=10LEA SI,DATEDIS+4 ;使SI指向年的最后一位【从0开始数】MOV CX,4 ;(CX)=4 年的位数,循环4次PUSH DX ;DX入栈,保存月日TAB:XOR DX,DX ;DX清零,存余数DIV BX ;(DX,AX)/BX,商送AX,余数送DXADD DL, 30H ;余数与30H相加变为字符的ASCII码MOV [SI], DL ;余数送入SI所指向的字节区DEC SI ;SI减一LOOP TAB ;循环4次POP DX ;DX还原MOV AL, DL ;日送AL【日存在DL中】XOR AH, AH ;AH清零DIV BL ;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADD AX, 3030H ;转变为数字字符的ASCII码LEA SI, DATEDIS+9 ;使SI指向日的十位MOV [SI], AX ;(AX)送SI所指向的字节区MOV AL, DH ;月送AL 【月存在DH中】XOR AH, AH ;AH清零DIV BL ;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADD AX, 3030H ;转变为数字字符的ASCII码LEA SI, DATEDIS+6 ;使SI指向月的十位MOV [SI], AX ;(AX)送SI所指向的字节区SHOW DATEDIS ;显示日期RET ;调用后返回DATEDISPLAY ENDP;*********时间显示子程序*********TIMEDISPLAY PROC NEARMOV AH,2CHINT 21HMOV BX,10MOV AL,CH ;CH存时XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+1MOV [DI],AXMOV AL,CL ;CL存分XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+4MOV [DI],AXMOV AL,DH ;DH存秒XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+7MOV [DI],AXSHOW TIMEDISRET ;时间调用返回TIMEDISPLAY ENDPCODE ENDSEND START六.使用说明七.参考文献[1]沈美明、温冬婵,《IBM-PC汇编语言程序设计(第二版)》,清华大学出版社,2010年10月。
微机原理课程设计题目名称:数字钟姓名:学号:专业:指导老师:同组者:江汉大学物理与信息工程学院一.设计目的和意义:1.熟悉集成电路的引脚安排.2.掌握各芯片的逻辑功能及使用方法.3.了解面包板结构及其接线方法.4.了解数字钟的组成及工作原理.5.熟悉数字钟的设计与制作.二.系统设计框架:系统硬件设计主要利用微机实验平台上的电路模块。
硬件电路主要由键盘电路、单脉冲产生单元、8254定时计数器、8255并行接口单元、8259中断控制器和LED显示电路等等。
系统设计框图如图1所示。
图1 系统设计框图三.工作原理1)计时单元由定时/计数器8254的通道0来实现。
定时采用硬件计数和软件技术相结合的方式,即通过8254产生一定的定时时间,然后再利用软件进行计数,从而实现1小时制定时。
8254定时时间到了之后产生中断信号,8254在中断服务程序中实现分、秒的累加。
2)时间显示采用实验平台上的4个LED数码管分别显示分、秒,采用动态扫描方式实现。
3)校时和闹铃定时通过键盘电路和单脉冲产生单元来输入。
按键包括校时键、闹钟定时键、加1键和减1键等。
四.硬件设计根据设计思路,硬件电路可通过实验平台上的一些功能模块电路组成,由于实验平台上的各个功能模块已经设计好,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。
完整系统的硬件连接如图2所示。
硬件电路由定时模块、按键模块、数码管显示模块和蜂鸣器模块组成。
图2 硬件连接图各个模块的详细说明:1.定时模块定时模块主要是实现硬件定时1s,由8254的计数器0来实现。
Clk0接实验平台分频电路输出IRQ,f=1hz。
GATE0接+5V,由8255的PA0输出来控制计数器的起停。
OUT0接8259的IRQ2,定时完成请求中断,进入中断服务程序。
软件在中断服务程序中实现时分秒的累加。
2.LED数码管模块实验平台上提供一组4个LED数码管。
插孔A-G用于数码管段选的输出选通,插孔X1-X4用于数码管位选信号的输出选通。
20个简单汇编语言程序汇编语言是一种底层编程语言,其语法简洁、速度快,被广泛应用于嵌入式系统和设备驱动程序的开发。
本文将介绍20个简单的汇编语言程序,帮助读者了解该语言的基本语法和用法,以便更好地进行编程。
1. 程序1:将两个数相加并显示结果。
这个程序演示了如何使用汇编语言进行简单的算术操作。
2. 程序2:计算并显示斐波那契数列。
这个程序展示了如何使用循环和条件语句来求解数学问题。
3. 程序3:判断一个数是否是素数。
这个程序演示了如何使用分支语句来进行逻辑判断。
4. 程序4:将一个字符串逆序输出。
这个程序展示了如何使用栈来实现字符串逆序。
5. 程序5:计算一个字符串的长度。
这个程序展示了如何使用循环和计数器来确定字符串的长度。
6. 程序6:将一个字符串转换为大写。
这个程序演示了如何使用位运算来进行字符转换。
7. 程序7:计算一个数的阶乘。
这个程序展示了如何使用循环和累加运算来求解阶乘。
8. 程序8:判断一个字符串是否是回文。
这个程序演示了如何使用循环和栈来进行字符串回文判断。
9. 程序9:实现快速排序算法。
这个程序展示了如何使用递归和分区操作来进行快速排序。
10. 程序10:实现冒泡排序算法。
这个程序演示了如何使用循环和比较操作来进行冒泡排序。
11. 程序11:计算一个数组的平均值。
这个程序展示了如何使用循环和累加运算来求解平均值。
12. 程序12:查找一个数组中的最大值。
这个程序演示了如何使用循环和比较操作来进行最大值查找。
13. 程序13:判断一个数是否是回文。
这个程序展示了如何使用循环和取余操作来进行数字回文判断。
14. 程序14:实现字符串拼接操作。
这个程序演示了如何使用循环和指针操作来进行字符串拼接。
15. 程序15:实现矩阵乘法运算。
这个程序展示了如何使用循环和累加运算来进行矩阵乘法。
16. 程序16:计算一个数的平方根。
这个程序演示了如何使用二分法和近似计算来求解平方根。
17. 程序17:实现字符串匹配操作。
课程设计说明书姓名:学号:院系:专业:题目:实时时钟程序设计指导教师:职称:课程设计说明书院系:专业:姓名:学号:课程设计题目:实时时钟程序设计起迄日期:课程设计地点:指导教师:系主任:课程设计任务书课程设计任务书目录第一章课题设计目的容及要求 (6)1.1 目的................ ... . . . . . . . . .61.2 容 (6)1.3 要求 (6)第二章程序流程图设计 (2)2.1主流程图设计 (2)2.2子流程图设计.............. 错误!未定义书签。
第三章程序段落的说明 (8)3.1光标的设立和隐藏 (8)3.2调用系统的时间 (5)3.3判断是否有键盘的输入 (6)第四章程序调试说明、结果记录与分析 (7)4.1程序调试的过程 (7)4.2调试结果 (7)4.3分析结果 (8)第五章总结与体会 (8)参考文献 (8)附录 (9)1.程序流程图 (9)2.程序清单 (11)第一章课题设计目得容及要求1.1 目得1)培养学生文献检索的能力,特别是如何利用Internet检索需要的文献资料。
2)培养学生综合分析问题、发现问题和解决问题的能力。
3)培养学生运用知识的能力和工程设计的能力。
4)提高学生课程设计报告撰写水平。
1.2 容设计一个根据所学汇编语言课程的知识,熟练8086汇编语言的编程原理,和程序设计思想,编写一个实时时钟程序进一步提高综合运用知识的能力。
1.3 要求每隔一秒显示系统时钟;可以重复输入,有退出键功能。
第二章程序流程图设计2.1主流程图设计由方案设计分析可知,此次设计比较简单,先初始化程序,然后设立光标,在光标移动时,不断地取时,取分,取秒,并不断的循环。
在循环的过程中,当按下ESC键时退出程序;当按下其它键时,程序继续运行,并显示时间界面,再按下ESC键时,程序又将退出。
流程图设计:当初始化后,设定一个光标用来显示时间的时、分、秒,并将光标隐藏。
微机原理与接口课程设计引言21世纪是信息技术高度发展且得到广泛应用的时代,信息技术从多方面改变着人类的生活、工作和思维方式。
我们每一个人都应当学习信息技术、应用信息技术。
微型计算机原理与接口技术是我们计算机科学与技术专业重要的一门基础专业课之一,要求我们有较强的自学能力和分析解决问题的能力以及实际动手能力,其作用是为了培养学生善于用计算机作为工具。
通过课程设计掌握汇编语言的编程、调试,通过对芯片的学习,初步了解微机应用系统的开发过程及设计过程。
长期以来,注重课本知识,轻视实际动手能力是我们学习中普遍从在的现象。
进行课程设计的目的就是要改变我们的这种学习方法,使我们即具备了理论知识,也能够解决实际学习,生活工作方面遇到的问题。
让我门把理论用到了实际中去,将知识变成实际的生产力,把理论与实际有效的结合起来,让我们对知识有了更深一步的学习。
也促进了我们的学习积极心。
也做到了手与脑的有效结合。
通过课程设计,也可以让我们对所学的知识有了更一步的了解,并能掌握学习理论时没有注意的细节。
也会意识到程序的编写要注意没一个细节,每一个空格等,并能通过调试寻找错误,改正错误,解决问题。
计算机课程有两种不同的方法:一是从理论入手;二是从实际入手。
中国有上下五千年的历史,都是应用时间来记载的,时间就是金钱,所以就从我们的生活和实际出发,我们的每件事,每个计划或是事件的安排都会受到时间的限制,而这次的课程设计也就是我们日常生活中处处注意的,一个有关时间的问题。
目录引言 (2)1.概述 (5)1.1 课程设计的目的 (5)1.2 课程设计的任务 (6)1.3设计的题目61.4 设计要求 (7)2.总体方案设计 (7)2.1 主程序设计思想 (7)2.2 设计原理说明 (7)2.3 设计应用的环境 (8)3.系统分析 (8)4. 软件设计 (9)4.1程序流程图94.2程序源代码 (10)5.系统调试 (35)5.1显示系统时间355.2按B键修改年月日355.3按C键修改具体时间356.设计总结 (36)7.参考文献 (37)1.概述1.1 课程设计的目的对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
计算机操作系统基础知识操作系统:用于管理和控制计算机所有的硬件和软件资源的一组程序。
它是最底层的系统软件,是对硬件系统功能的首次扩充,也是其它系统软件和应用软件能够在计算机上运行的基础。
下面就让小编带你去看看计算机操作系统基础知识,希望能帮助到大家!计算机基础知识:操作系统1) DOS早期的PC操作系统单用户单任务命令行界面操作系统从4.0版开始成为支持多任务的操作系统。
2) Windows 图形用户界面3) Uni__分时操作系统,主要用于服务器/客户机体系4) Linu__由UNI__发展而来,源代码开放5) Mac OS较好的图形处理能力,主要用在桌面出版和多媒体应用等领域。
用在苹果公司的Power Macintosh机及Macintosh一族计算机上,与Windows缺乏较好的兼容性6) Novell Netware 基于文件服务和目录服务的网络操作系统,用于构建局域网。
操作系统分类Windows是Microsoft公司开发的图形化界面的操作系统。
·基本概念:图标、任务栏、标题栏、菜单栏、滚动条、工具栏、对话框、开始菜单……·基本操作(1)鼠标单击、双击、拖动,左键、右键功能;(2)窗口操作:最大(小)化、大小调整、拖动、关闭、排列、切换;(3)菜单操作激活、选择;命令项的约定——正常显示和灰色显示;命令后带“…”:执行命令则弹出对话框;带快捷键:某些菜单命令的后面标有对应的键盘命令,称为该命令的快捷键或热键;选中标志:某些命令选项的左侧有用打勾表示的选中标志,说明此命令功能正在起作用;命令后带“?”:级联:此命令后会有下一级的子命令菜单弹出供用户作进一步选择;快捷菜单——当鼠标位于某个对象上,单击鼠标右键,可打开有关对象的快捷菜单;(4)剪贴板:复制(Ctrl-C)、粘贴(Ctrl-V)、剪切(Ctrl-__)复制屏幕图像:可将当前屏幕图形以BMP格式传送到剪贴板……(5)其它:查找、运行、切换Windows、进入DOS环境、文件夹选项输入法切换,中、英文切换,半角/全角切换软键盘:是在屏幕上显示的一个键盘图形,用户可用鼠标点击其中某个键以替代实际的按键;·各种文件的后缀名:bat、com、e__e、sys、tmp、zip、……doc、__ls、t__t、htm、……bmp、gif、jpg、psd、……wav、avi、mp3、swf……由美国Microsoft公司发行的DOS称为MS-DOS,主要由IO.sys、MSDOS.sys、 三个基本文件和几十个内、外部命令文件组成。
Hefei University微机原理课程设计课程名称:屏幕显示当前系统的时间学生班级:07级自动化(2)班报告人:王清源:陈瑜:王源卿:指导教师:刘伟、林泽坤课程设计时间:2010年1月4日自动化专业微机原理课程设计任务书2目录摘要 ....................... 错误!未定义书签。
设计题目 ................... 错误!未定义书签。
设计原理 ................... 错误!未定义书签。
任务安排 ................... 错误!未定义书签。
设备与器材 ................. 错误!未定义书签。
流程图 ..................... 错误!未定义书签。
主程序:..................................... 错误!未定义书签。
子程序TIMEDISPLAY: ............ 错误!未定义书签。
子程序DATEDISPLAY: ............ 错误!未定义书签。
............................................................................................................................ 错误!未定义书签。
程序清单 ................... 错误!未定义书签。
程序实现 ................... 错误!未定义书签。
设计总结 ................... 错误!未定义书签。
参考文献 ................... 错误!未定义书签。
3摘要此次课程设计主要是学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应技术的指导性作用,进一步加强理论知识与应用相结合的实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题的能力得到问题的能力得到全面提高。
国家示范性软件学院汇编程序设计与组成原理课程设计姓名: _______ _班级: _______ _学号: _______ _指导老师: _______ _成绩: _______ _评语一. 课程设计的目的及意义通过课程设计,主要达到以下目的:1. 使学生增进对汇编语言的认识,加强用汇编语言编程的能力。
2. 使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。
3. 使学生了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础。
(垃,圾,文库,叫你说我文档质量偏低)二. 基本内容题目:显示系统当前时间与日期要求设计界面提示信息为:“Please input DATE(D) OR TIME(T)OR QUIT(Q):”,从键盘键入“D”,可显示系统日期。
从键盘输入“T”,可显示系统时间。
从键盘输入“Q”,退出程序。
利用DOS 的系统功能调用的2AH 和2CH 功能调用,读取系统日期和时间。
将日期和时间转换为相应的ASCII 码字符,显示在屏幕上。
(垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低)三. 系统功能结构框图(垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低)主程序MAIN(显示界面提示信息,根据键盘输入的字符调用各子程序) 子程序DATEDISPLAY(调用DOS 的2AH 功能,取系统当前日期,将日期转换成对应的ASCII 码值并显示)子程序TIMEDISPLAY(调用DOS 的2CH 功能,取系统当前时间,将时间转换成对应的ASCII 码值并显示)CALLCALL四. 系统流程框图五. 源程序代码;*************清屏宏定义***********CLEAR_SCREEN MACRO ;宏定义,设置七个参数MOV AH,06H ;AH=06屏幕初始化或上卷指定的行 MOV AL,00H ;清屏INT 10H ;调用BIOS 功能 MOV AH,02H ;制定光标位置 MOV BH,00H ;第0页 MOV DH,00H ;第0行 MOV DL,00H ;第0列 INT 10H ENDM;*********定义堆栈段******** STACK SEGMENT DB 200 DUP (?) tos label byte STACK ENDS;*********定义数据段******** DATA SEGMENTSTR00 DB ' |********** Welcome! **********|$' ;提示界面 STR01 DB 0DH,0AH,' |* *|$' STR02 DB 0DH,0AH,' |* This is a display program. *|$'开始设置显示方式为80×25彩色文本方显示界面提示信息从键盘输入单个字符判断字符显示系统日期显示系统时间提示输入错误结束D(d)T(t)otherQ(q)STR03 DB 0DH,0AH,' |* D: display Date *|$' STR04 DB 0DH,0AH,' |* T: display Time *|$' STR05 DB 0DH,0AH,' |* Q: Quit *|$' STR06 DB 0DH,0AH,' |* *|$' STR07 DB 0DH,0AH,' |********************************|$' STR08 DB 0DH,0AH,'Please input a char: $'INPUTER DB 0DH,0AH,'Input Error!',0DH,0AH,'$'DATEDIS DB' 0000-00-00 ',0AH,'$';显示DATETIMEDIS DB' 00:00:00',0AH,'$';显示TIMEDATA ENDS;*********定义代码段********CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MAIN PROC FARMOV AH,00H ;AH=0设置显示模式MOV AL,03H ;设置80*25图形显示INT 10HCLEAR_SCREEN ;调用宏定义MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXmov sp,offset tos;*******显示宏定义********;用于显示字符串SHOW MACRO strLEA DX,strMOV AH,9INT 21HENDMSHOW STR00SHOW STR01SHOW STR02SHOW STR03SHOW STR04SHOW STR05SHOW STR06SHOW STR07INPUT:SHOW STR08 ;显示输入提示MOV AH,01 ;键盘输入并回写INT 21HCMP AL,"D";与D比较JE PRINT_DATE ;相等转PRINT_DATE打印日期CMP AL,"d"JE PRINT_DATECMP AL,"T";与D比较JE PRINT_TIME ;相等转PRINT_TIME打印时间CMP AL,"t"JE PRINT_TIMECMP AL,"Q";与Q比较JE EXIT ;相等转EXIT退出程序CMP AL,"q"JE EXITSHOW INPUTER ;显示输入错误JMP INPUTPRINT_DATE:CALL DATEDISPLAY ;调用日期显示子程序JMP INPUT ;继续输入字母PRINT_TIME:CALL TIMEDISPLAY ;调用时间显示子程序JMP INPUT ;继续输入字母EXIT: ;结束,退出程序MOV AH,4CHINT 21HMAIN ENDP;*********日期显示子程序*********DATEDISPLAY PROC NEARMOV AH,2AH ;取当前系统日期INT 21HMOV AX,CX ;送年份入AX作为被除数【年份存在CX中】MOV BX,10 ;(BX)=10LEA SI,DATEDIS+4 ;使SI指向年的最后一位【从0开始数】MOV CX,4 ;(CX)=4 年的位数,循环4次PUSH DX ;DX入栈,保存月日TAB:XOR DX,DX ;DX清零,存余数DIV BX ;(DX,AX)/BX,商送AX,余数送DXADD DL, 30H ;余数与30H相加变为字符的ASCII码MOV [SI], DL ;余数送入SI所指向的字节区DEC SI ;SI减一LOOP TAB ;循环4次POP DX ;DX还原MOV AL, DL ;日送AL【日存在DL中】XOR AH, AH ;AH清零DIV BL ;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADD AX, 3030H ;转变为数字字符的ASCII码LEA SI, DATEDIS+9 ;使SI指向日的十位MOV [SI], AX ;(AX)送SI所指向的字节区MOV AL, DH ;月送AL 【月存在DH中】XOR AH, AH ;AH清零DIV BL ;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADD AX, 3030H ;转变为数字字符的ASCII码LEA SI, DATEDIS+6 ;使SI指向月的十位MOV [SI], AX ;(AX)送SI所指向的字节区SHOW DATEDIS ;显示日期RET ;调用后返回DATEDISPLAY ENDP;*********时间显示子程序*********TIMEDISPLAY PROC NEARMOV AH,2CHINT 21HMOV BX,10MOV AL,CH ;CH存时XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+1MOV [DI],AXMOV AL,CL ;CL存分XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+4MOV [DI],AXMOV AL,DH ;DH存秒XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+7MOV [DI],AXSHOW TIMEDISRET ;时间调用返回TIMEDISPLAY ENDPCODE ENDSEND START六.使用说明七.参考文献[1]沈美明、温冬婵,《IBM-PC汇编语言程序设计(第二版)》,清华大学出版社,2010年10月。