微机万年历(共26页).docx
《微机万年历(共26页).docx》由会员分享,可在线阅读,更多相关《微机万年历(共26页).docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 电子日历 任务内容:1显示位置:屏幕中央 2可显示是否闰年 3. 日期显示格式年:月:日在显示屏上显示提示语“CURRENT DATE IS:”和当前日期。然后再判断是否闰年。要求完成的主要任务: 设计方案的选择与确定:根据题目要求,参考相关文献资料,选择合适的软硬件设计方案。图纸绘制:确定硬件方案,完成完整硬件系统连线图的绘制。程序编制:确定软件方案,绘制系统软件流程图,完成汇编程序的编制。说明书撰写:完成课程设计说明书的撰写,字数不少于3000字。时间安排:资料检索与收集 2天系统方案设计与确
2、定 1天系统设计与程序编写 3天说明书撰写 3天答辩 1天指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要汇编语言属于低级语言,尽管其可读性低,但因其执行效率高,仍然被不少开发和所使用,本课程设计是基于汇编语言的电子万年历的制作,通过调用系统INT一系列的中断服务,来达到调用系统时间的目的,同时对当年的年份进行是否是闰年的判断,并将判断结果显示在界面上。同时本设计为了增加界面的人性化,增加了画边框、日期用黄颜色突出显示,并且能够通过键盘上的按键关闭程序窗口的效果。关键字:汇编语言程序设计,电子日历,微机原理,课程设计专心-专注-专业电子日历1设计任务及要求1.1.设计题
3、目掌握8086汇编语言程序设计方法,设计一个电子日历。1.2.设计要求1显示位置:屏幕中央2可显示是否闰年3. 日期显示格式年:月:日在显示屏上显示提示语“CURRENT DATE IS:”和当前日期。然后再判断是否闰年。1.3.设计目的a) 掌握8086CPU微机系统的存储子系统设计b) 掌握8086 CPU微机系统的中断控制子系统的设计c) 掌握8086CPU微机系统初始化汇编编程和具体项目功能的软件汇编语言代码编写d) 培养学生理论与实践相结合以及实践创新的能力。2设计方案论述2.1.设计方案概括 根据此次课程设计的要求为电子时钟的设计与制作,通过8086汇编语言程序设计方法,设计一个电
4、子日历,实现显示日期及判断闰年功能。在此要求的基础上为体现出创新性,特加入与电子日历相关的附加功能。在此次电子时钟的设计中,主要功能是显示系统时间,通过DOS中断调用进行系统时间的提取,然后进行输出至屏幕。同时要求整个界面看起来人性化,美观,并且能通过键盘按键退出系统。2.2.设计方案具体说明日期显示的重点分为三部分,第一部分是如何调用系统日期,此次电子日历的设计通过AH=2AH;INT 21H的DOS中断调用进行系统日期的提取。提取的日期为二进制的存储模式,而系统的输出需要的是ASCII码,因而第二部分的重点为将二进制数转换成为ASCII码。第三部分即为将转换的日期的ASCII码输出至屏幕,
5、调用AH=09H;INT 21H中断,将存储的日期作为字符输出。3软件设计说明3.1. 理论知识介绍3.1.1.DOS中断与BIOS中断的功能及调用a)DOS 中断类型如下:20程序终止27结束并驻留内存21功能调用28键盘忙循环22终止地址29快速写字符23Ctr l_C 中断向量2A网络接口24严重错误向量2E执行命令25绝对磁盘读2F多路转接接口26绝对磁盘写30-3F保留给DOSb)BIOS中断类型如下:10显示器I/ O 16键盘I/ O11取设备信息17打印机I/ O12取内存容量18ROM BASIC13磁盘I/ O19引导装入程序14RS-232 串行口I/ O 1A时钟15磁
6、带I/ O40软盘BIOSDOS 功能与BIOS 功能都通过软件中断调用。在中断调用前需要把功能号装入AH寄存器, 把子功能号装入AL 寄存器, 除此而外, 通常还需在CPU 寄存器中提供专门的调用参数。一般地说, 调用DOS 或BIOS 功能时, 有以下几个基本步骤:a) 将调用参数装入指定的寄存器中;b) 如需功能号, 把它装入AH ;c) 如需子功能号, 把它装入AL;d) 按中断号调用DOS 或BIOS 中断;e) 检查返回参数是否正确。本例中需要的BIOS中断如下:INT AH 功能 入口参数 出口参数 10 09H表示在当前的光标处按指令属性显示字符AH=09H AL=字符BH=显
7、示页码BL=属性CX=重复输出字符的次数 无 10 02H用文本坐标下设置光标位置AH=02HBH=显示页码DH=行(Y坐标)DL=列(X坐标) 无 21 01H从键盘输入一个字符 无AL=ASCII 21 02H在屏幕上显示一个字符 DL=ASCII 无 16 01H读取键盘状态,即读入输入字符AH01H检查普通键盘ZF1无字符输入,否则,AH键盘的扫描码,AL按键的ASCII码(字符键)或者0(其他键) 16 00H从键盘读入字符AH00H强制读普通键盘AH键盘的扫描码AL按键的ASCII码(字符键)或者0(其他键) 1008H读光标处的字符及其属性AH08HBH显示页码AH属性AL字符
8、21 06H1号2号功能的组合DL=0FFH时为1号功能;DL寄存器放入字符的ASCII值时就是2号功能 无或AL=ASCII 1A02H读取时间 AH02HCHBCD码格式的小时;CLBCD码格式的分钟;DHBCD码格式的秒;DL00H标准时间,否则,夏令时;CF0时钟在走,否则,时钟停止3.1.2.子程序的设计子程序又称为过程, 它相当于高级语言中的过程和函数。在一个程序的不同部分, 往往要用到类似的程序段, 这些程序段的功能和结构形式都相同, 只是某些变量的赋值不同, 此时就可以把这些程序段写成子程序形式, 以便需要时可以调用它。过程定义伪操作用在过程(子程序) 的前后, 使整个过程形成
9、清晰的、具有特定功能的代码块。其格式为:procedure name PROC Attributeprocedure name ENDP当前程序的正常执行,转去执行请求事件的处理工作,CPU在事件处理结束后又继续原来的程序,这个过程称作中断。 中断程序的入口地址称作中断向量。8086中断系统最多可以支持256个中断源,系统将这些中断向量按照中断类型码的顺序依次存放在内存RAM的最低地址区的1024个内存单元中,这就构成了中断向量表。中断向量表的逻辑地址范围为0000H:0000H-0000H:03FF。另外,中断向量在中断向量表中的位置就是中断向量地址,它与中断类型码之间的关系可以表示如下:
10、中断向量地址=0000H:中断类型码*4CPU在响应中断后,根据中断源提供的中断类型码,首先计算出中断向量地址,然后根据中断向量地址在表中查找到相应的中断服务程序的入口地址。本例中即利用了键盘中断来实现相应的功能。3.2.设计思路介绍首先在数据段开辟一显示缓冲区,用来存储系统日期。调用DOS中断,返回系统日期,并将来返回的二进制时间转换成ASCII码,方便日期显示时的调用。分别将日期的每一位存入显示缓冲区,并最终存入一结束字符号$。调用DOS字符串显示功能将时间显示出来。并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷新,所以我
11、们要设计成刷新的方式来不断获取系统的时间。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再提取系统时间,然后显示,由此循环下去。程序的最后还设计一了个按“Q”键就退出的功能。所有的按键都采取了判断键值ASCII码确定输入字符的方法确定按键值。为了显示的美观,还设计一个字符图界面,通过显示字符串的方法显示出来。3.3.设计流程在此次的设计中根据设想功能的实现,在主流程下,共有三个分支功能,故其流程图为一个主流程图,三个附加功能的子流程图。3.3.1.主流程图及说明在主流程图中可以
12、了解到,进入程序后首先清屏,设置屏幕的显示,使得界面整体布局安排以及功能的提示信息出现在屏幕上。然后调用系统时间,将时间显示到设定好的位置上。接着是进行键盘状态的读取,判断有无按键按下,如果没有,重新调用系统时间并显示,如果有按键按下,判断按键字符,若为“D”,执行读取日期子程序;若为“W”,执行整点报时子程序;若为“H”,执行计时器子程序;若为“Q”,则退出程序;如果均不为上述字符,则返回调用系统时间并显示输出,重复上述过程。同时三个子程序执行完毕后也会重新返回调用系统时间并显示输出,开始新一轮的循环。 主程序流程图如下图所示:否是结束判断按键是否为Q是否是设置屏幕显示调用系统日期输出至屏幕
13、显示读取按键字符判断是否有键盘按键输入开始 图3.1主程序流程图3.3.2显示日期子流程图及说明开始提取系统日期将年份数转为ASCII码并存入DATEDIS中将日期数转为ASCII码并存入DATEDIS中将分月份转为ASCII码并存入DATEDIS中显示系统日期返回图3.2 日期显示子程序流程图流程图如右下所示: 根据右图所示的子流程图可以分到系统日期显示的整体过程。在经过功能选择进入日期显示后,首先提取电脑内部的系统日期,提取到的系统日期为二进制码,首先将年份的二进制码转换为ASCII码,存入数据段的缓冲区,然后将月份的二进制码转换为ASCII码,存入数据段的缓冲区,接着是将日期的二进制码转
14、换为ASCII码,存入数据段的缓冲区,于是缓冲区中就包含了系统日期的ASCII码,调用输出函数,将系统日期输出到系统的指定位置。3.4. 程序设计说明3.4.1.清屏程序介绍CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4 ;清屏PUSH AX ;入栈保护现场 PUSH BX PUSH CX PUSH DXMOV AH,06H ;向上滚屏MOV AL,00H ;全屏幕为空白MOV BH,79H ;空白区域缺省属性MOV CH,OP1 ;左上角行号MOV CL,OP2 ;左上角列号MOV DH,OP3 ;右下角行号MOV DL,OP4 ;右下角列号INT 10H ;BIOS
15、对屏幕及显示器中断调用POP DX ;出栈显示数据 POP CX POP BX POP AX ENDM此为宏定义写出的清屏指令,首先将寄存器的数据压入堆栈进行保护,然后调用INT 10中断设定屏幕显示。其中AH设置滚屏方式06为向上滚屏,AL=0为设置窗口的清屏,而CH、CL、DH、DL为设置窗口的大小,根据设定的窗口大小确定清屏的范围。清屏结束后,将压入堆栈的寄存器的数据弹出,使清屏命令不会影响寄存器的数值。3.4.2.光标定位程序介绍CURSOR_POSITION MACRO ROW,CLM ; 设置光标位置宏定义 PUSH AX ;入栈保护现场 PUSH BX PUSH CX PUSH
16、DX MOV AH,2 MOV BH,0 ; 光标页号 MOV DH,ROW ; 光标行号 MOV DL,CLM ; 光标列号 INT 10H ; BIOS 对屏幕及显示器中断调用 MOV AH,1 ; 置光标类型,不显示光标 MOV CH,20H INT 10H POP DX ;出栈显示数据 POP CX POP BX POP AX ENDM此宏定义为光标位置的设定,首先是寄存器数据压入堆栈保护。光标设定需要调用INT 10H,给AH赋值02H,执行设置光标位置命令,然后由DH、DL的数值确定光标的行号和列号。由于根据设计需求,在此还需设置光标属性为隐藏,此功能同样为调用INT 10H,使得
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 万年历 26
限制150内