系统时钟汇编语言程序设计
基于C51单片机的数字时钟课程设计(C语言,带闹钟).

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词:电子钟 AT89C52 硬件设计软件设计目录一、数字电子钟设计任务、功能要求说明及方案介绍 (4)1.1 设计课题设计任务 (4)1.2 设计课题的功能要求说明 (4)1.3 设计课的设计总体方案介绍及工作原理说明 (4)二、设计课题的硬件系统的设计 (5)2.1硬件系统各模块功能简要介绍 (5)2.1.1 AT89C52简介 (5)2.1.2 按键电路 (6)三、设计课题的软件系统的设计 (6)3.1 使用单片机资源的情况 (6)3.2 软件系统个模块功能简要介绍 (7)3.3 软件系统程序流程框图 (7)3.4 软件系统程序清单 (7)四、设计课题的设计结论、仿真结果、误差分析 (9)4.1 设计结论及使用说明 (9)4.2 仿真结果 (10)结束语 (12)参考文献 (12)附录 (13)附录A:程序清单 (13)一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。
具有时间显示,并有时间设定,时间调整功能。
1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。
汇编语言程序设计

第4章 汇编语言程序设计
例4.4 显示两位压缩BCD码值(00~99) ,要求不显示前导0。 本例一方面要排除前导0的情况,另一方面 对于全0情况又必须显示一个0,所以形 成了两个双分支结构的程序。
第4章 汇编语言程序设计 DATA SEGMENT BCD DB 04H ; 给出一个BCD码数据 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA BEGIN: MOV AX, DATA MOV DS, AX MOV DL,BCD ;取BCD码 TEST DL,0FFH ;如果这个BCD码是0,则显示为0 JZ ZERO TEST DL,0F0H ;如果这个BCD码高位是0,不显示 JZ ONE MOV CL,4 ;BCD码高位右移为低位 SHR DL,CL OR DL,30H ;转换为ASCII码 MOV AH,2 ;显示 INT 21H
第4章 汇编语言程序设计 ADC MOV MOV MUL ADD DX,0 W+4,DX AX,A B+2 W+2,AX ;部分积2的高16位与进位相加 ;结果保存到从W+4开始的内存单元 ;取被乘数的低16位 ;与乘数的高16位相乘,得到部分积3 ;部分积3的低16位与W+2开始的内存单元相加 ;结果保存在从W+2开始的内存单元 ;部分积3的高16位与W+4开始的内存单元及 ;进位相加,结果保存在从W+4开始的内存单元 ;把进位值保存在从W+6开始的内存单元 ;取被乘数的高16位 ;与乘数的高16位相乘,得到部分积4 ;部分积4的低16位与W+4开始的内存单元相加 ;结果保存在从W+4开始的内存单元 ;部分积4的高16位与W+6开始的内存单元及 ;进位相加,结果保存在从W+6开始的内存单元
毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]
![毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]](https://img.taocdn.com/s3/m/9ad55f3e0508763230121257.png)
程序仿真等全套设计,联系153893706第1章绪论二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。
第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。
商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。
本设计为软件,硬件相结合的一组设计。
在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。
基本的要了解一些主要器件的基本功能和作用。
除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。
AT89C52是由ATMEL公司推出的一种小型单片机。
95年出现在中国市场。
其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。
本文介绍了基于AT89C52单片机设计的电子万年历。
选题背景及研究的目的与意义设计的目的电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。
单片机应用技术(C语言版)课后答案

设计和制作一台使用白色光LED作为光源的台灯,台灯具有一个机械电源开关和两个感应式触摸开关,用手触摸感应开关可以调节台灯亮度。
台灯由220V市电供电,并配有小型铅酸蓄电池。
使用变压器和充电电路可对蓄电池充电。
使用中若蓄电池电量不足时,可通过台灯一定规律的闪烁提示对蓄电池充电。
电池电压过低时关闭台灯以保护蓄电池。
主要技术指标(1)系统电源:220V,50Hz交流。
(2)蓄电池:12V,2.3Ah。
(3)LED灯总功率:10Wmax。
(4)调光步进:5级调光。
(5)蓄电池充电最高电压:13.8V。
(6)蓄电池充电电流:<1A(7)蓄电池欠压保护点:11.0V昨天,略去。
今天,珍惜。
明天,争取。
对的,坚持。
错的,放弃。
人生要做两件事:第一件事,就是感恩;第二件事,就是结缘。
人生要迈两道坎:情与钱。
人生要喘两种气:一种是生命之气,一种是精神之气。
人生要会两件事:学会挣钱,学会思考。
人生的两个基本点:糊涂点,潇洒点。
人生的两种状态:谋生,乐生。
一心一意,是世界上最温柔的力量。
有些事情,只有经历了,才有穿透心扉的体验;曾经的人,只有从心底放下了,心灵才会真正地解脱。
没有哪件事,能够一直捆住你的手脚;没有哪个人,能够成为你的永远。
所以,想做的事,只要有能力做,那就不要等,不要害怕失败;想付出的爱,只要觉得可以,那就大胆些,不要留下遗憾。
学会放下,是一种生活的智慧;放下,是一门心灵的学问。
人生在世,有些事情是不必在乎的,有些东西是必须清空的。
该放下时就放下,你才能够腾出手来,抓住真正属于你的快乐和幸福。
已经拥有的不要忘记;已经得到的更加珍惜;属于自己的不要放弃;已经失去的留作回忆;想要得到的一定要努力;累了把心靠岸;选择了就不要后悔;苦了才懂得满足;痛了才享受生活;伤了才明白坚强。
放下压力,累与不累,取决于心态;放下烦恼,快乐其实很简单;放下自卑,把自卑从你的字典里删去;放下懒惰,奋斗改变命运;放下消极,绝望向左,希望向右;放下抱怨,与其抱怨,不如努力;放下犹豫,立即行动,成功无限;放下狭隘,心宽天地宽。
汇编语言程序设计

03《汇编语言程序设计》(总20页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《汇编语言程序设计》习题答案一、单项选择题(本大题共170小题,每小题2分)1、在汇编语言程序中,对 END 语句的叙述正确的是( C )。
A、END 语句是一可执行语句B、END 语句表示程序执行到此结束C、END 语句表示源程序到此结束D、END 语句在汇编后要产生机器码2、将 DX 的内容除以 2,正确的指令是( C )A、DIV 2B、DIV DX,2C、SAR DX,1D、SHL DX,13、下列数值表达式和地址表达式中,错误的是( D )。
A、MOV AL,8*14+4B、MOV SI,OFFSET BUF+13C、MOV CX,NUM2-NUM1D、MOV CX,NUM2+NUM14、用来存放下一条将要执行的指令地址的寄存器是 ( B )A、SPB、IPC、BPD、CS5、要使串处理从低地址向高地址进行,应把标志位置为 ( D )A、IF=1B、TF=0C、DF=1D、DF=06、设SS=2050H,SP=0140H,则栈顶存贮单元的物理地址是( A )A、20640HB、2063EHC、2063FHD、21900H7、十进制数269变换为十六进制数是( C )。
A、10BB、10CC、10DD、10E8、8位的微型计算机系统是以16位来表示地址,则该微机系统有( C )个地址空间。
A、255B、65535C、65536D、10485769、8位有符号二进制数能表示的最大十进制数是( D )。
A、256B、255C、128D、12710、十六进制数88H,可表示成下面几种形式,请找出错误的表示( D )。
A、无符号十进制数136B、带符号十进制数-120C、压缩型BCD十进制数88D、8位二进制数-8的补码表示11、有一个数值152,它与十六进制数6A相等,那么该数值是( B )。
计算机组成原理与汇编语言程序设计期末试题ABC三卷及答案

《计算机组成原理与汇编语言》课程试题A卷一、填空题(每空格1 分共 28 分)1.8位二进制补码所能表示的十进制整数范围是()至(),前者的二进制补码表示为(),后者的二进制补码表示为()。
2.每条指令由两部分组成,即()部分和()部分。
3.微程序顺序控制常用的两种方式是()方式和()方式。
4.8086CPU从结构上可以分为()单元和()单元。
5.半导体动态RAM靠()原理存贮信息,而半导体静态RAM靠()原理存贮息。
6.已知字符A的ASCII码为(),则字符B的ASCII码为(),字符D的ASCII码为()。
7.8086CPU具有()根地址线,直接寻址能力可达()。
8.运算器的主要功能是进行()。
9.通常I/O控制方式可分为5种,即()方式、()方式、和()方式、()方式、()方式。
10.一个源程序中可以包含代码段、()段及()段。
其中代码段是源程序中必不可少的,其它两个段可有可无。
11.标号和变量所具有的三种属性分别为()、()和()属性。
二、判断题(每小题3分共24)12.()在数字计算机中所以采用二进制是因为二进制的运算最简单。
13.()计算机表示的数发生溢出的根本原因是计算机的字长有限。
14.()表示定点数时,若要求数值0在计算机中唯一地表示为全0,应采用补码。
15.()CRC校验码的生成和检验大多采用软件实现。
16.()外(辅)存比主存的存储容量大、存取速度快。
17.()动态RAM和静态RAM都是易失性半导体存储器。
18.()Cache的功能全部由硬件实现。
19.()LCD显示器没有背景光源也能工作。
三、单项选择题:(每小题 3分,共 30 分)20.主机、外设不能并行工作的方式()。
A.程序查询方式 B.中断方式 C.通道方式21.在单独(独立)编址下,下面的说法是()是对的。
A.一个具体地址只能对应输入输出设备B.一个具体地址只能对应内存单元C.一个具体地址既可对应输入输出设备,也可对应内存单元D.只对应内存单元或只对应I/O设备22.在关中断状态,不可响应的中断是()。
单片机课程设计--电子秒表与闹钟的设计

目录摘要 (Ⅰ)1 电子秒表与闹钟系统概述 (1)1.1 课程设计基本要求 (1)1.2 系统实现功能 (1)1.3 系统应用价值展望 (2)2 仿真软件Proteus和Keil简介 (3)2.1 Proteus简介 (3)2.2 Keil简介 (3)3 系统工作原理分析 (4)3.1AT89C2051模块 (4)3.2 显示驱动模块 (6)3.3 数码管显示模块 (8)4 程序流程图设计 (9)5 Proteus仿真原理图 (12)6 课程设计体会 (14)参考文献 (15)附:源程序代码 (16)摘要随着科学技术的不断发展 , 人们对时间计量的要求越来越高。
在当今社会,电子时钟已经得到相当广泛的应用,产品多样,发展更是多元化。
本作品是以STC89C51单片机作为主控芯片,使用12MHZ的晶振,使用专用时钟日历芯片DS12C887产生时间信息,时间精确。
软件部分以C语言为主体,用1602LCD 液晶屏显示输出信息,输出信息量多,更直观、人性化。
该时钟可实现人机交互,可通过提供的键盘对其进行调整。
系统具有以下功能:年、月、日、时、分、秒显示;12小时/24小时模式切换,在12小时模式中,用AM和PM区分上午和下午;秒表功能;整点闹铃和报时功能,且闹钟可设置多组。
本次设计的电子时钟系统由单片机最小系统,1602LCD液晶屏,时钟芯片,调整按键,蜂鸣器,电源五大部分组成。
关键词:定时器中断闹钟电子时钟1 电子秒表与闹钟系统概述1.1 课程设计基本要求(1) 用并行口设计一个具有显示功能的秒表,显示准确的北京时间(时、分、秒),可用24小时制式;(2) 有时间校准功能;(3) 允许通过转换功能键转换显示时间,用定时器实现一个电子闹钟,能设定和修改定时的时间,并能到时响铃通知;(4) 所有按键需要通过串口自发自收来调校各种功能。
1.2 系统实现功能本系统是基于单片机AT89S52制作的数字电子钟。
根据实验要求,在完成实验所要求的基本功能外,扩展了几个功能。
基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。
具有时间显示,并有时间设定,时间调整功能。
1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。
1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。
键盘采用动态扫描方式。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (2)1设计方案论证及比较 (3)1.1方案一:以数字时钟显示 (3)1.2方案二:以图形时钟显示 (4)1.3方案比较 (5)2程序设计流程图 (6)2.1主程序流程图 (6)2.2子程序流程图 (7)3部分程序设计及功能解说 (10)4程序运行结果及分析 (12)4.1程序运行结果 (12)4.2 运行结果及问题分析 (13)5小结 (14)参考文献 (15)附录:程序清单 (16)摘要本设计采用16位微型处理器8086CPU以及86系列微型计算机的指令系统,利用汇编语言编写,设计一个界面实现系统日期及时间显示功能,软件设计平台为多功能计算机实验软件MFS中的微机原理实验集成环境MF2KP。
在本设计中,通过读取键盘输入的相关内容,如:若输入D,则设计程序代码依次读取系统日期年、月、日,并转换成ASCII码调用10号中断予以显示;若在键盘输入T,则设计程序代码依次读取系统时间时、分、秒,并转换成ASCII 码并调用10号中断予以显示;若单击Esc,则退出当前状态;若不是相关字符,则不于任何响应,并不显示任何信息。
关键词:系统时钟、汇编语言、8086系统时钟汇编语言程序设计1设计方案论证及比较1.1方案一:以数字时钟显示通过读取键盘输入的相关内容,如:若输入D,则设计程序代码依次读取系统日期年、月、日,并转换成ASCII码调用10号中断予以显示;若在键盘输入T,则设计程序代码依次读取系统时间时、分、秒,并转换成ASCII码并调用10号中断予以显示;若单击Esc,则退出当前状态;若不是相关字符,则不于任何响应,并不显示任何信息。
图1 方案一程序流程图1.2方案二:以图形时钟显示先画出一个圆,采用Bresenham算法,运用显示器输出中断的调用,设置显示方式和光标位置后,用写像素的方法按一定的算法打点来画出;其次,用同样的方法在已画的圆上标60根分钟线,在圆心处画秒钟、分钟、时钟指针;最后,实现指针的走动,表示本机时间。
图2 方案二程序流程图1.3方案比较以上两种方案均是可行的,方案一采用数字时钟显示,界面直观明了,编程相对比较容易;方案二采用图形时钟显示,界面精致生动,但是编程相对比较复杂。
两种方案均是采用16位微型处理器8086CPU以及86系列微型计算机的指令系统,利用汇编语言编写,均能实现设计要求,但是相比较,方案二编程中算法较复杂,编程难度较高,而方案一编程相对比较简单,综上所述,故采用方案一。
2程序设计流程图2.1主程序流程图扫描键盘输入,读取键盘输入状态,执行相应命令。
若输入D,则设计程序代码依次读取系统日期年、月、日,并转换成ASCII码调用10号中断予以显示;若在键盘输入T,则设计程序代码依次读取系统时间时、分、秒,并转换成ASCII 码并调用10号中断予以显示;若单击Esc,则退出当前状态;若不是相关字符,则不于任何响应,并不显示任何信息。
图3 程序设计主流程图2.2子程序流程图(1) DATE PROC NEAR子程序本子程序是当键盘输入字母“D”时所调用执行的子程序;由于读取的日期项是十进制代码,因此需调用BCDASC1 PROC NEAR子程序转换为ASCII码并予以显示;执行完BCDASC1 PROC NEAR子程序后调用10号中断显示一个分隔符,完成一个日期项的显示,然后再循环去读取其他日期项;最后返回主程序执行主程序。
图4 显示日期子程序流程图(2) TIME PROC NEAR子程序本子程序是当键盘输入字母“T”时所调用执行的子程序;由于读取的日期项是十进制代码,因此需调用BCDASC PROC NEAR子程序转换为ASCII码并予以显示;执行完BCDASC PROC NEAR子程序后调用10号中断显示一个分隔符,完成一个时间项的显示,然后再循环去读取其他时间项;最后返回主程序执行主程序。
其执行过程与执行DSPD PROC子程序相似。
图5 显示时间子程序流程图(3) BCDASC PROC NEAR子程序即日期数值转换为ASCII程序,以日期显示程序为例,通过读取系统的日期项如“年”,由于读取的日期项是十进制代码,所以调用BCDASC,把读取的系统日期项存为ASCII码,然后再循环以同样方法读取月,日。
图6 转换为ASCII码子程序流程图(4) BCDASC1 PROC NEAR子程序即日期数值转换为ASCII程序,和BCDASC PROC NEAR方法类似。
3部分程序设计及功能解说本程序设计中主要有以下4个小程序,在程序设计中起到关键作用,也是本程序设计中的难点,其功能解说如下所示:(1)设置界面界面采用40*25彩色文本方式显示,通过BIOS 10H功能调用,部分关键语句如下所示:MOV AX,0001H ;设置显示方式为40*25彩色文本方式INT 10H ;通过BIOS 10H 功能调用设置存储区位置及界面背景、前景色:MOV DX,0B00H ;存储区起始+偏移MOV CX,1000MOV BX,0020H ;设置前景、背景颜色MOV AX,1300HINT 10H(2)键盘输入根据键盘输入,执行相应命令:MOV AH,1 ;从键盘输入单个字符INT 21HCMP AL,44H ;AL='D'?JNE ACALL DATE ;显示系统日期A: CMP AL,54H ;AL='T'?JNE BCALL TIME ;显示系统时间B: CMP AL,1BH ;AL='Esc'?JNE STARTMOV AH,4CH ;返回dos状态INT 21H(3)读取系统日期及时间通过查阅相关指令,读取系统日期及时间关键语句如下所示:MOV AH,2CH ;取时间INT 21HMOV AH,2AH ;取日期INT 21H(4)时间数值转换成ASCII码字符子程序因为读取的系统时间是十进制的数值,故需要将其转换为ASCII码显示出来。
BCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序PUSH BXCBW ;byte拓展为wordMOV BL,10DIV BLADD AL,'0'MOV DBUFFER[SI],ALINC SIADD AH,'0'MOV DBUFFER[SI],AHINC SIPOP BXRETBCDASC ENDP4程序运行结果及分析4.1程序运行结果图7 无键盘输入时的运行界面图8 键盘输入‘D’时行界面图9 键盘输入‘T’时的运行界面4.2 运行结果及问题分析通过以上的运行结果显示可以看出本程序成功完成本次课程设计的任务,本次课程设计严格按照课程设计任务的要求:在MF2KP环境下,运行程序,在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入“Esc”,可结束程序;若不是相关字符,则不于任何响应,并不显示任何信息。
运行过程中出现的问题:在单击“ESC”退出时,在显示区会瞬间出现乱码再退出。
但是此乱码不造成任何影响,仅是在退出时才会出现,故不需要对其进行相关操作。
5小结经过不懈的努力,终于完成了此次课程设计。
本次程序设计中遇到了很多问题,在设计每个子程序模块时都遇到了或大或小的难题。
首先是如何获取当前系统的时间及日期,由于在微机原理课上没有进行相关知识的介绍,于是通过查阅了相关书籍才得知取系统日期及时间的调用指令。
不过利用系统返回的日期及时间都是BCD码格式的,使用时还需要转换为ASCII码才能进行显示。
然而显示界面的设置又是我们平时课程中所没有涉及到的知识,通过上网查询之后,决定采用40*25的彩色文本形式将调用的系统时间及日期显示在屏幕上。
通过对程序不停地修改、测试,终于将程序调试成功,能够满足设计要求。
虽然本次课程设计中所需要的知识在平时课程中没有涉及到,但是汇编的根基还是我们在课堂上所掌握的基本知识,这使我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障;其次,通过这次课程设计,我对各个函数以及语句有了进一步的了解,对各个语句的功能有了更深刻的认识和体会,特别是掌握了大量的DOS调用及程序设计的基本方法;最后,在课程设计过程中,同组人员之间相互合作,共同研究使我更加坚信了团体的力量。
感谢老师和学长的支持和帮助!参考文献[1]彭虎等编著.微机原理与接口技术(第二版).北京:电子工业出版社,2008[2]程学先等编著.汇编语言程序设计.北京:机械工业出版社,2009[3]杨季文等编著.80X86汇编语言程序设计教程.北京:清华大学出版社,2002[4]李兆先.8086/8088和ARM核汇编语言程序设计.北京:中国科学技术大学出版社,2006附录:程序清单STACK SEGMENT STACKDW 200 DUP (?)STACK ENDSDATA SEGMENTSPACE DB 1000 DUP (' ')PATTERN DB 6 DUP (' '),0C9H,26 DUP (0CDH),0BBH,6 DUP (' ')DB 6 DUP (' '),0BAH,26 DUP (20H),0BAH,6 DUP (' ')DB 6 DUP (' '),0C8H,26 DUP (0CDH),0BCH,6 DUP (' ')DBUFFER DB 8 DUP (':'),12 DUP (' ')DBUFFER1 DB 20 DUP (' ')STR DB 0DH,0AH, 'PLEASE $' ;设置命令键STR1 DB 0DH,0AH, 'INPUT DATE(D) OR TIME(T) OR QUIT(Esc): $'STR2 DB 0DH,0AH,'MADE BY FANJIUJIU ID:0120811360514 $'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,0001H ;设置显示方式为40*25彩色文本方式INT 10H ;通过BIOS 10H 功能调用MOV AX,DATAMOV DS,AXMOV ES,AXMOV BP,OFFSET SPACEMOV DX,0B00H ;存储区起始+偏移MOV CX,1000MOV BX,0020H ;设置前景、背景颜色MOV AX,1300HINT 10HLEA DX,STR2 ;显示提示信息MOV AH,9INT 21HMOV BP,OFFSET PATTERN ;显示矩形条MOV DX,0B00HMOV CX,120MOV BX,004EHMOV AX,1301HINT 10HLEA DX,STR ;显示提示信息MOV AH,9LEA DX,STR1 ;显示提示信息MOV AH,9INT 21HMOV AH,1 ;从键盘输入单个字符INT 21HCMP AL,44H ;AL='D'?JNE ACALL DATE ;显示系统日期A: CMP AL,54H ;AL='T'?JNE BCALL TIME ;显示系统时间B: CMP AL,1BH ;AL='Esc'?JNE CMOV AH,4CH ;返回dos状态INT 21HC: LEA DX ,STR3MOV AH,9INT 21HCALL TIMEDATE PROC NEAR ;显示日期子程序DISPLAY:MOV AH,2AH ;取日期INT 21HMOV SI,0MOV AX,CXMOV BX,100DIV BLMOV BL,AHCALL BCDASC1 ;日期数值转换成相应的ASCII码字符MOV AL,BLCALL BCDASC1INC SIMOV AL,DHCALL BCDASC1INC SIMOV AL,DLCALL BCDASC1MOV BP,OFFSET DBUFFER1MOV DX,0C0DH ;日期显示的位置MOV CX,20MOV BX,004EH ;显示颜色MOV AX,1301HMOV AH,02H ;设置光标位置MOV DX,0300H ;置光标于行列数MOV BH,0 ;页号INT 10HMOV BX,0018HREPEA:MOV CX,0FFFFH ;延时REPEAT:LOOP REPEATDEC BXJNZ REPEAMOV AH,01H ;读键盘缓冲区字符到AL寄存器INT 16HJE DISPLAYJMP STARTMOV AX,4C00HINT 21HRETDATE ENDPTIME PROC NEAR ;显示时间子程序DISPLAY1:MOV SI,0MOV BX,100DIV BLMOV AH,2CH ;取时间INT 21HMOV AL,CHCALL BCDASC ;将时间数值转换成ASCII码字符INC SIMOV AL,CLCALL BCDASCINC SIMOV AL,DHCALL BCDASCMOV BP,OFFSET DBUFFERMOV DX,0C0DHMOV CX,20MOV BX,004EHMOV AX,1301HINT 10HMOV AH,02HMOV DX,0300HINT 10HMOV BX,0018HRE: MOV CX,0FFFFHREA:LOOP READEC BXJNZ REMOV AH,01HINT 16HJE DISPLAY1JMP STARTMOV AX,4C00HINT 21HRETTIME ENDPBCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序PUSH BXCBW ;byty转换为wordMOV BL,10DIV BLADD AL,'0' ;加30H,将十进制转换为ASCCI MOV DBUFFER[SI],ALINC SIADD AH,'0'MOV DBUFFER[SI],AHINC SIPOP BXRETBCDASC ENDPBCDASC1 PROC NEAR ;日期数值转换成ASCII码字符子程序PUSH BXCBWMOV BL,10DIV BLADD AL,'0'MOV DBUFFER1[SI],ALINC SIADD AH,'0'MOV DBUFFER1[SI],AHINC SIPOP BXRETBCDASC1 ENDP CODE ENDS END START。