汇编语言实时时钟程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书

姓名:

学号:

院系:

专业:

题目:实时时钟程序设计

指导教师:职称:

课程设计说明书

院系:

专业:

姓名:

学号:

课程设计题目:实时时钟程序设计起迄日期:

课程设计地点:

指导教师:

系主任:

课程设计任务书

课程设计任务书

目录

第一章课题设计目的内容及要求 (6)

1.1 目的..................... (6)

1.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键时,程序又将退出。

流程图设计:当初始化后,设定一个光标用来显示时间的时、分、秒,并将光标隐藏。流程图有两个分支,表示有两个判断,当时分秒取完后,判断是否在键盘上有输入,如果没有输入,则返回到光标定位,若有输入判断是否为ESC键的ASC码,如果是则退出程序,程序结束,过程比较明了,流程图分支不多,但功能能够很好的实现。流程图如1所示

图1 主程序设计流程图

2.2子流程图设计

可知,在时间的获取时,需要时、分、秒分别获取,显示时使用的是相应的ASCII码。加上分隔符“:”,共同组成完整时钟显示,我们对子程序做流程图,如图2所示。

图2 子程序流程图

第三章程序段落的说明

3.1 光标的设立和隐藏

光标的不停移动,使时间能不停地显示时间的时分秒,并使其显示界面不消失,并随着系统时间的变化而同步变化,隐藏光标使界面看起来更美观。

程序如下:

mov dh,0ah ;行数

mov dl,35 ;列数

mov bh,0 ;页数

mov ah,2

int 10h ;确定光标的位置,使其居在中间

mov cx,2000h

mov ah,01h

int 10h ;隐藏光标

3.2调用系统的时间

获取系统的时间,用程序将系统的时间调用,使显示的时间和系统的时间

同步变化,其中时间的时分秒显示都是需要先转换成相应的ASCII码,再显示在

屏幕上。

获取系统时间:mov ah,02

int 1ah ;系统时间调用

push cx

push dx ;现场保护

时的获取:xor dl,dl ;dl清零

mov dl,ch ;cx高四位给dl

mov cl,4

shr dl,cl ;最终dl中为ch的高四位

add dl,30h ;转换成ASCII码

mov ah,02h

int 21h ;光标处显示时的第一位

mov dl,ch

add dl,0fh

add dl,30h ;转换成ASCII码

mov ah, 02

int 21h ;光标处显示时的第二位

mov dl,":"

mov ah,02

int 21h ;光标处显示“:”

分的获取:pop dx

pop cx ;出栈,恢复现场

push dx ;置光标位置

xor dl,dl

mov dl,cl

mov dh,cl

mov cl,4

shr dl,cl

add dl,30h ;转化成相应的ASCII码

mov ah,02

int 21h ;光标处显示分的第一位

mov cl,dh

and cl,0fh

add cl,30h ;转化成相应的ASCII码

mov dl,cl

mov ah,02

int 21h ;光标处显示分的第二位

mov dl,':'

mov ah,02

int 21h ;光标处显示“:”

秒的获取:pop dx ;出栈,恢复现场

mov bl,dh

mov cl,4

shr dh,cl

add dh,30h ;转化成相应的ASCII码

mov dl,dh

mov ah,02

int 21h ;光标处显示秒的第一位

mov cl,bl

and cl,0fh

add cl,30h ;转化成相应的ASCII码

mov dl,cl

mov ah,02

int 21h ;光标处显示秒的第二位

3.3 判断是否有键盘输入

判断是否有输入,当有字符时判断是否为ESC,若是则退出程序,如果不是程序继续运行。

程序段:

a1: mov ah,0bh ;调用DOS 功能0BH 检测键盘是否有输入int 21h

cmp al,00h ;检测是否有输入

jne a2 ;有则跳到a2

jmp go ;没有则回到go

a2: mov ah, 08h

int 21h

cmp al,1bh ;判断是否为ESC

je exit ;是则退出

jmp go ;不是则跳到go

相关文档
最新文档