课程设计题目电子时钟的设计与实现学院自动化学院专业电气工程及其自动化班级姓名指导教师2014 年 1 月9 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目:电子时钟的设计与实现初始条件:掌握8086汇编语言程序设计方法,设计一个电子时钟,实现分、秒、时的显示与刷新功能。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 定义显示界面。
2. 调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。
3. 将存在系统内存区的时间数用数字式或指针式钟表的形式显示出来。
4. 获取键盘的按键值,判断键值并退出系统。
5. 撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:12月26日----- 12月28日查阅资料及方案设计12月29日----- 1月2日编程1月3日----- 1月7日调试程序1月8日----- 1月9日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)1 设计任务及要求 (2)1.1 设计题目 (2)1.2 设计要求 (2)1.3 设计过程 (2)1.4 设计目的 (2)2 设计方案论述 (3)2.1 设计方案概括 (3)2.2 设计方案具体说明 (3)2.2 设计思路介绍 (3)3 软件设计说明 (5)3.1. 理论知识介绍 (5)3.1.1 DOS中断与BIOS中断的功能及调用 (5)3.1.2 子程序的设计 (7)3.1.3 中断概述 (7)3.2 设计流程 (8)3.2.1 主流程图及说明 (9)3.2.2.显示系统时间子流程图及说明 (9)3.3. 程序设计 (10)3.3.1 清屏程序 (10)3.3.2. 光标定位程序 (10)3.3.3 多字符显示程序 (11)3.3.4 读取键盘状态程序 (12)3.3.5 读取键盘值程序 (12)3.3.6 调用系统时间显示程序 (12)3.3.7 将二进制数转换为ASCII码程序 (13)3.4 软硬件环境要求 (14)4 调试结果及分析 (15)5 收获与体会 (17)参考文献 (18)附录:设计源程序 (19)本科生课程设计成绩评定表 (25)摘要本程序用计算机最基本的语言---汇编语言,实现电子时钟系统。
程序通过调用DOS 中断,得到系统当前时间,并将其二进制转换成ASCII码,再调用DOS字符串显示功能将时间显示在显示器上,通过调用屏幕的I/O中断,把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。
为了使时间更加精确,在此过程需要用到延时程序,所以把延时程序单独做成一个子程序,然后在需要的时候调用它,使得时间的显示程序更加精炼,使时间显示更加准确。
关键词:8086汇编语言程序电子时钟DOS中断1 设计任务及要求1.1 设计题目掌握8086汇编语言程序设计方法,设计一个电子时钟,实现分、秒、时的显示与刷新功能。
1.2 设计要求小组内各位同学界面不能雷同,可以设计数字式时钟,也可以设计指针式时钟。
本次设计成数字时钟。
1.3 设计过程(1)定义显示界面。
(2)调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码。
将时间数存入内存区。
(3)将存在系统内存区的时间数用显示字符串的形式显示出来。
(4)获取键盘的按键值,判断键值并退出系统。
(5)撰写课程设计说明书。
内容包括:目录、摘要、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
1.4 设计目的(1)理解掌握定时/计数器和中断的使用方法。
(2)掌握微机常用的输入输出方式及接口技术。
(3)掌握一定的汇编语言知识,培养自己的动手操作能力。
(4)学习程序设计的基本思路和方法。
(5)熟练掌握编程软件(如Masm)基本操作和调试程序的各种指令。
(6)培养学生理论与实践相结合以及实践创新的能力2 设计方案论述2.1 设计方案概括根据此次课程设计的要求为电子时钟的设计与制作,通过8086汇编语言程序设计方法,设计一个电子时钟,实现分、秒、时的显示与刷新功能。
在此次电子时钟的设计中,主要功能是显示系统时间,通过DOS中断调用进行系统时间的提取,然后进行输出至屏幕。
2.2 设计方案具体说明(1)用汇编语言编写程序,使其能实现在PC机上用电子时钟时、分、秒的格式显示时间的功能。
(2)调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码。
(3)能用键盘输入的方法修改电子时钟的时间。
(4)把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。
(5)获取键盘的按键值,以“Q”键退出系统返回DOS。
时间显示的重点分为三部分,第一部分是如何调用系统时间,此次电子时钟的设计通过AH=2CH;INT 21H的DOS中断调用进行系统时间的提取。
提取的时间为二进制的存储模式,而系统的输出需要的是ASCII码,因而第二部分的重点为将二进制数转换成为ASCII码。
第三部分即为将转换的时间的ASCII码输出至屏幕,调用AH=09H;INT 21H 中断,将存储的时间作为字符输出。
2.3 设计思路介绍首先在数据段开辟一显示缓冲区,用来存储系统时间。
调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。
分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。
调用DOS字符串显示功能将时间显示出来。
并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。
由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。
调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。
在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。
秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。
时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再提取系统时间,然后显示,由此循环下去。
所有的按键都采取了判断键值ASCII码确定输入字符的方法确定按键值。
为了显示的美观,还设计一个字符图界面,通过显示字符串的方法显示出来。
程序一旦进入运行,就将不间断地在显示屏显示时间。
要想程序停止运行,可按“Q”键退出。
3 软件设计说明3.1. 理论知识介绍3.1.1 DOS中断与BIOS中断的功能及调用(1)DOS中断类型DOS中断类型分为13种,如表3-1所示。
表3-1 DOS中断类型中断号中断名称中断号中断名称20 程序终止27 结束并驻留内存21 功能调用28 键盘忙循环22 终止地址29 快速写字符23 Ctr l_C 中断向量2A 网络接口24 严重错误向量2E 执行命令25 绝对磁盘读2F 多路转接接口26 绝对磁盘写30-3F 保留给DOS(2)BIOS中断类型BIOS中断类型分为14种,如表3-2所示。
表3-2 BIOS中断类型10 显示器I/ O 16 键盘I/ O11 取设备信息17 打印机I/ O12 取内存容量18 ROM BASIC13 磁盘I/ O 19 引导装入程序14 RS-232 串行口I/ O 1A 时钟15 磁带I/ O 40 软盘BIOSDOS 功能与BIOS 功能都通过软件中断调用。
在中断调用前需要把功能号装入AH 寄存器,把子功能号装入AL 寄存器,除此而外,通常还需在CPU 寄存器中提供专门的调用参数。
本例中需要的BIOS中断类型有9中,如表3-3所示。
表3-3本例所用BIOS中断类型一般地说,调用DOS 或BIOS 功能时,有以下几个基本步骤:1)将调用参数装入指定的寄存器中;2)如需功能号,把它装入AH;3)如需子功能号,把它装入AL;4) 按中断号调用DOS 或BIOS 中断;5) 检查返回参数是否正确。
3.1.2 子程序的设计子程序又称为过程,它相当于高级语言中的过程和函数。
在一个程序的不同部分,往往要用到类似的程序段,这些程序段的功能和结构形式都相同,只是某些变量的赋值不同,此时就可以把这些程序段写成子程序形式,以便需要时可以调用它。
过程定义伪操作用在过程(子程序) 的前后,使整个过程形成清晰的、具有特定功能的代码块。
其格式为:procedure name PROC Attribute…procedure name ENDP其中,过程名为标识符,它又是子程序入口的符号地址。
它的写法和标号的写法相同。
属性(attribute) 是指类型属性,它可以是NEAR 或FAR。
段内调用使用NEAR 属性,段间调用使用FAR 属性。
为了使用户的工作更加方便,80x86 的汇编程序用PROC 伪操作的类型属性来确定CALL 和RET 指令的属性。
这样,用户只需在定义过程时考虑它的属性,而CALL 和RET 的属性可以由汇编程序来确定。
3.1.3 中断概述CPU在执行某一程序的过程中,出现了内部或外部某些事件的请求,CPU暂时停止当前程序的正常执行,转去执行请求事件的处理工作,CPU在事件处理结束后又继续原来的程序,这个过程称作中断。
中断程序的入口地址称作中断向量。
8086中断系统最多可以支持256个中断源,系统将这些中断向量按照中断类型码的顺序依次存放在内存RAM的最低地址区的1024个内存单元中,这就构成了中断向量表。
中断向量表的逻辑地址范围为0000H:0000H-0000H:03FF。
另外,中断向量在中断向量表中的位置就是中断向量地址,它与中断类型码之间的关系可以表示如下:中断向量地址=0000H:中断类型码*4 (1)CPU在响应中断后,根据中断源提供的中断类型码,首先计算出中断向量地址,然后根据中断向量地址在表中查找到相应的中断服务程序的入口地址。
3.2 设计流程根据电子时钟功能要求,利用汇编语言完成其程序设计。
电子时钟程序流程图如图3-1所示。
图3-1 电子时钟程序流程3.2.1 主流程图及说明在主流程图中可以了解到,进入程序后首先清屏,设置屏幕的显示,使得界面整体布局安排以及功能的提示信息出现在屏幕上。