汇编语言实时时钟程序设计Word文件下载.docx
《汇编语言实时时钟程序设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编语言实时时钟程序设计Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
2)培养学生综合分析问题、发现问题和解决问题的能力。
3)培养学生运用知识的能力和工程设计的能力。
4)提高学生课程设计报告撰写水平。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
设计内容:
设计一个根据所学汇编语言课程的知识,熟练8086汇编语言的编程原理,和程序设计思想,编写一个实时时钟程序进一步提高综合运用知识的能力。
设计要求:
每隔一秒显示系统时钟;
可以重复输入,有退出键功能。
3.设计工作任务及工作量的要求〔包括课程设计说明书、图纸、实物样品等〕:
设计工作任务及工作量的要求:
1)根据课程设计题目,收集和学习相关知识,确定编程方案;
2)用相关软件编写程序代码,实现基本要求;
3)撰写课程设计报告——可利用Visio或Word等软件画出相关的程序流程图,列出相应的程序源代码,说明设计过程中遇到的问题和解决问题的方法,附参考资料。
4.主要参考文献:
[1]沈美明,温冬禅.IBMPC汇编语言程序设计.清华大学出版社,第二版
[2]刘丽莉.汇编语言程序设计.北京大学出版社,2010
5.设计成果形式及要求:
1)撰写课程设计报告;
2)程序流程图1份(可手画);
3)程序清单1份。
6.工作计划及进度:
系主任审查意见:
签字:
2012年6月17日
第一章课题设计目得内容及要求
1.1目得
1.2内容
1.3要求
第二章程序流程图设计
2.1主流程图设计
由方案设计分析可知,此次设计比较简单,先初始化程序,然后设立光标,在光标移动时,不断地取时,取分,取秒,并不断的循环。
在循环的过程中,当按下ESC键时退出程序;
当按下其它键时,程序继续运行,并显示时间界面,再按下ESC键时,程序又将退出。
流程图设计:
当初始化后,设定一个光标用来显示时间的时、分、秒,并将光标隐藏。
流程图有两个分支,表示有两个判断,当时分秒取完后,判断是否在键盘上有输入,如果没有输入,则返回到光标定位,若有输入判断是否为ESC键的ASC码,如果是则退出程序,程序结束,过程比较明了,流程图分支不多,但功能能够很好的实现。
流程图如1所示
图1主程序设计流程图
2.2子流程图设计
可知,在时间的获取时,需要时、分、秒分别获取,显示时使用的是相应的ASCII码。
加上分隔符“:
”,共同组成完整时钟显示,我们对子程序做流程图,如图2所示。
图2子程序流程图
第三章程序段落的说明
3.1光标的设立和隐藏
光标的不停移动,使时间能不停地显示时间的时分秒,并使其显示界面不消失,并随着系统时间的变化而同步变化,隐藏光标使界面看起来更美观。
程序如下:
movdh,0ah;
行数
movdl,35;
列数
movbh,0;
页数
movah,2
int10h;
确定光标的位置,使其居在中间
movcx,2000h
movah,01h
int10h;
隐藏光标
3.2调用系统的时间
获取系统的时间,用程序将系统的时间调用,使显示的时间和系统的时间同步变化,其中时间的时分秒显示都是需要先转换成相应的ASCII码,再显示在屏幕上。
获取系统时间:
movah,02
int1ah;
系统时间调用
pushcx
pushdx;
现场保护
时的获取:
xordl,dl;
dl清零
movdl,ch;
cx高四位给dl
movcl,4
shrdl,cl;
最终dl中为ch的高四位
adddl,30h;
转换成ASCII码
movah,02h
int21h;
光标处显示时的第一位
movdl,ch
adddl,0fh
movah,02
光标处显示时的第二位
movdl,"
:
"
movah,02
光标处显示“:
”
分的获取:
popdx
popcx;
出栈,恢复现场
置光标位置
xordl,dl
movdl,cl
movdh,cl
shrdl,cl
转化成相应的ASCII码
光标处显示分的第一位
movcl,dh
andcl,0fh
addcl,30h;
光标处显示分的第二位
movdl,'
'
秒的获取:
popdx;
movbl,dh
shrdh,cl
adddh,30h;
转化成相应的ASCII码
movdl,dh
movah,02
光标处显示秒的第一位
movcl,bl
光标处显示秒的第二位
3.3判断是否有键盘输入
判断是否有输入,当有字符时判断是否为ESC,若是则退出程序,如果不是程序继续运行。
程序段:
a1:
movah,0bh;
调用DOS功能0BH检测键盘是否有输入
int21h
cmpal,00h;
检测是否有输入
jnea2;
有则跳到a2
jmpgo;
没有则回到go
a2:
movah,08h
int21h
cmpal,1bh;
判断是否为ESC
jeexit;
是则退出
jmpgo;
不是则跳到go
exit:
movah,4ch
退出程序
第四章程序调试说明、结果记录及分析
4.1程序调试的过程
程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。
这是保证计算机信息系统正确性的必不可少的步骤。
编完计算机程序,得调试所写程序是否正确,是否能满足所要求的功能。
写好程序后,对DOS系统界面调用功能指令不太熟悉,界面出来后时间显示在右上角,并且光标不能消失,最后经过查询,运用了10号中断,最后把光标隐藏了,并使时间显示在界面的中间位置。
在判断是否在键盘上有输入时,开始不会用键盘扫描功能,没有调试出来,经过向同学请教最后调用DOS功能0bh,并用08h来判断是否是ESC输入,最终实现了退出功能。
4.2调试结果
运行程序,时间显示界面,如图3所示:
图3进入后的运行界面
单击其他键时的显示界面,如图4所示,及图3相同。
单击ESC键时,界面消失,退出程序。
图4单击其它键时的显示界面
4.3分析结果
可知运行程序后,能达到设计要求,即进入后能显示时间在屏幕的中央位置,单击ESC外的键时,程序继续,时间继续显示,单击ESC时,退出程序,程序设计成功。
第五章总结及体会
参考文献
附录
1.程序流程图
主程序设计流程图
子程序流程图
2.程序清单
datassegment
datasends
stackssegment;
此处输入堆栈段代码
stacksends
codessegment
assumecs:
codes,ds:
datas,ss:
stacks
start:
movax,datas
movds,ax
go:
movdh,0ah;
movah,0bh;
调用dos功能0bh检测键盘是否有输入
cmpal,00h
jnea2;
如果有输入,则跳转到a2
jmpgo;
如果没有输入,则跳转到go
int21h;
调用dos功能08h判断键盘输入的字母
cmpal,1bh;
判断键盘输入是否为esc
jeexit;
如果是则跳转到exit
重新跳回开头
exit: