电子表程序设计.docx
- 文档编号:25371647
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:34
- 大小:115.64KB
电子表程序设计.docx
《电子表程序设计.docx》由会员分享,可在线阅读,更多相关《电子表程序设计.docx(34页珍藏版)》请在冰豆网上搜索。
电子表程序设计
电子表程序设计
课程设计任务书
学生姓名:
0000000专业班级:
自动化0804
指导教师:
苏义鑫工作单位:
自动化学院
题目:
电子表程序设计
初始条件:
带有编辑器、汇编程序、连接程序和调试程序的电脑一台。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
采用汇编语言设计一个电子表程序,在屏幕上以七段数码管的形式显示本机时间,精确到秒。
按S启动,按T停止,按P暂停。
按Q退出程序。
(1)设计任务及要求分析
(2)方案比较及认证说明
(3)系统原理阐述
(4)软件设计课题需要说明:
软件思想,流程图,源程序及程序注释
(5)调试记录及结果分析
(6)总结
(7)参考资料
(8)附录:
芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图
时间安排:
1月10日~1月12日:
收集资料,方案选择
1月13日~1月16日:
整体流程,程序细节
1月17日~1月20日:
调试程序,报告撰写
1月21日:
交设计报告,程序演示,答辩
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
前言
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间的要求很高的场合,汇编语言的应用是必不可少的。
至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可了。
随着科学技术迅速发展,理工科大学生不仅需要掌握计算机方面的基本理论知识,而且还需要掌握基本的实验技能及一定的科学研究能力。
通过课程设计,使学生巩固和加深微型计算机原理理论知识,通过实践进一步加强学生独立分析问题和解决问题的能力、综合设计及创新能力的培养,同时注意培养学生实事求是、严肃认真的科学作风和良好的实验习惯,为今后工作打下良好的基础。
鉴于汇编语言的广泛用途及其在当代计算机界的重要作用,本人利用学的知识,在同学门的帮助下,花费大量时间,完成了关于电子表的系统设计。
这个系统是应用于电脑中的小应用程序,可是显示电脑中的时间。
很多地方都会有个时钟显示,其中大多是应用了类似这样的方法。
1设计任务及要求分析
1.1设计目的
(1)通过设计电子表,掌握中断的使用方法。
(2)掌握基本的显存读写技术。
(3)学会在屏幕上以七段数码管的形式显示本机时间的方法。
(4)学会用汇编语言编写一个完整的程序,提高自己的动手操作能力。
(5)学习程序设计的基本思路和方法,培养分析问题、解决问题的能力。
1.2设计任务
采用汇编语言设计一个电子表程序,在屏幕上以七段数码管的形式显示本机时间,精确到秒。
按S启动,按T停止,按P暂停,按Q退出程序。
1.3具体要求
(1)设计任务及要求分析
(2)方案比较及认证说明
(3)系统原理阐述
(4)软件设计课题需要说明:
软件思想,流程图,源程序及程序注释
(5)调试记录及结果分析
(6)总结
(7)参考资料
(8)附录:
芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图
2.方案比较及认证说明
设计方案:
数字0~9中的每一个数字用“|”和“—”字符组成的“七段”码图形表示,时与分、分与秒之间的两点用“▼”字符表示。
这些字符预先定义在数据段的字符图形里,利用BIOSINT1AH的2号系统功能调用,读出计算机系统的时间(为BCD码),置换成字符图形标中的图形字符显示。
本程序设计的关键是随着系统时间的变化,用字符组成的图形数字如何进行相应的变化。
方法是:
不停地读取系统时间并保存在寄存器中,将每次取出的时间显示并与前一次比较,先比较“秒”值,在不同的情况下(系统时间发生了增1的变化),则调用相应的图形字符显示,在不超过60秒的情况下,重复比较秒,然后再比较和显示“分”值与“小时”值。
程序流程图如图所示。
3.系统原理阐述
用七段码电子表显示程序系统时间,程序设计的关键是随系统时间的变化,用字符组成图形数字如何进行相应的变化。
编写的程序,主要包含以下子程序:
1)对时间值进行处理并显示的子程序:
xianproc
pushsi
pushdi
pushdx
pushcx
pushbx
pushax
popax
pushax
movbx,ax
movax,0
moval,bh
movcl,4
shral,cl
movbl,al
movdh,10
movdl,2
callff
popax
pushax
movbx,ax
movax,0
moval,bh
andal,0fh
movbl,al
movdh,10
movdl,6
callff
movdh,10
movdl,10
movbl,10
callff
popax
pushax
movcl,4
shral,cl
movbl,al
movdh,10
movdl,14
callff
popax
pushax
andal,0fh
movbl,al
movdh,10
movdl,18
callff
movdh,10
movdl,22
movbl,10
callff
popax
popbx
pushbx
pushax
movax,0
moval,bh
movcl,4
shral,cl
movbl,al
movdh,10
movdl,26
callff
popax
popbx
pushbx
pushax
moval,bh
andal,0fh
movbl,al
movdh,10
movdl,30
callff
movdh,0
movdl,15
movbl,22
callff
popax
popbx
popcx
popdx
popdi
popsi
ret
xianendp
2)显示具体数值的子程序:
ffproc
pushax
pushbx
pushcx
pushdx
cmpbl,0
jel0
cmpbl,1
jel1
cmpbl,2
jel2
cmpbl,3
jel3
cmpbl,4
jel4
cmpbl,5
jel5
cmpbl,6
jel6
cmpbl,7
jel7
cmpbl,8
jel8
cmpbl,9
jel9
cmpbl,10
jel10
cmpbl,22
jeld
l0:
leadi,s0
jmpty
l1:
leadi,sy
jmpty
l2:
leadi,s2
jmpty
l3:
leadi,s3
jmpty
l4:
leadi,s4
jmpty
l5:
leadi,s5
jmpty
l6:
leadi,s6
jmpty
l7:
leadi,s7
jmpty
l8:
leadi,s8
jmpty
l9:
leadi,s9
jmpty
l10:
leadi,s11
jmpty
ld:
leadi,str
ty:
movah,0fh;显示方式
int10h
subcx,cx
movcl,[di]
incdi
plot_next:
adddh,[di+2]
adddl,[di+3]
movah,2
int10h
moval,[di]
movbl,[di+1]
pushcx
movcx,1
movah,09
int10h
popcx
adddi,4
loopplot_next
popdx
popcx
popbx
popax
movcx,100
gg:
deccx
loopgg
ret
ffendp
3)报时子程序:
beepproc
pushax
pushbx
pushcx
pushdx
moval,10110110b
out43h,al
movax,533h
out42h,al
moval,ah
out42h,al
inal,61h
movah,al
oral,03
out61h,al
subcx,cx
movbl,28h
g7:
loopg7
decbl
jnzg7
moval,ah
out61h,al
popdx
popcx
popbx
popax
ret
beependp
4.软件设计课题说明
4.1软件思想
本课题主要涉及以下知识点:
数据段
(1)Disptime,Showtime显示时钟
(2)定义0—9十个图形数字,以便模拟七段码显示时钟
宏定义
(1)Clear定义清屏宏
(2)rowcol定义光标定位宏
(3)crlf回车换行宏
(4)display显示字符串宏
(5)change计算时间宏
函数
(1)main主函数
(2)paly主要完成显示七段码电子表显示
(3)prog0到prog10完成七段码到一半显示的转换
(4)moveshape显示七段码电子表
(5)delay延迟函数
(6)exit返回DOS函数
4.2流程图
本实验程序流程图见下页
4.3源程序及程序注释
datasegment
;*****定义please等提示信息*****
infondb0dh,0ah,0dh,0ah,'PleasepressStostart!
$'
;strdb0dh,0ah,'PressPtopause$'
strdb49
db50h,7,0,0
db6ch,7,0,1
db65h,7,0,1
db61h,7,0,1
db73h,7,0,1
db65h,7,0,1
db70h,7,1,-3
db72h,7,0,1
db65h,7,0,1
db73h,7,0,1
db73h,7,0,1
db50h,7,0,2
db6bh,7,0,2
db65h,7,0,1
db79h,7,0,1
db70h,7,0,2
db61h,7,0,1
db75h,7,0,1
db73h,7,0,1
db65h,7,0,1
db21h,7,0,1
db70h,7,1,-9
db72h,7,0,1
db65h,7,0,1
db73h,7,0,1
db73h,7,0,1
db51h,7,0,2
db6bh,7,0,2
db65h,7,0,1
db79h,7,0,1
db65h,7,0,2
db78h,7,0,1
db69h,7,0,1
db74h,7,0,1
db21h,7,0,1
db70h,7,1,-9
db72h,7,0,1
db65h,7,0,1
db73h,7,0,1
db73h,7,0,1
db54h,7,0,2
db6bh,7,0,2
db65h,7,0,1
db79h,7,0,1
db73h,7,0,2
db74h,7,0,1
db6fh,7,0,1
db70h,7,0,1
db21h,7,0,1
;*****定义0-9十个图形数字*****
s0db6
db5fh,7,0,0
db7ch,7,1,-1
db7ch,7,1,0
db5fh,7,0,1
db7ch,7,0,1
db7ch,7,-1,0
sydb2
db7ch,7,1,0
db7ch,7,1,0
s2db5
db5fh,7,0,0
db7ch,7,1,1
db5fh,7,0,-1
db7ch,7,1,-1
db5fh,7,0,1
s3db5
db5fh,7,0,0
db7ch,7,1,1
db5fh,7,0,-1
db7ch,7,1,1
db5fh,7,0,-1
s4db4
db7ch,7,1,0
db5fh,7,0,1
db7ch,7,1,1
db7ch,7,-1,0
s5db5
db5fh,7,0,0
db7ch,7,1,-1
db5fh,7,0,1
db7ch,7,1,1
db5fh,7,0,-1
s6db6
db5fh,7,0,0
db7ch,7,1,-1
db5fh,7,0,1
db7ch,7,1,1
db5fh,7,0,-1
db7ch,7,0,-1
s7db3
db5fh,7,0,0
db7ch,7,1,1
db7ch,7,1,0
s8db7
db7ch,7,1,0
db5fh,7,-1,1
db7ch,7,1,1
db5fh,7,0,-1
db7ch,7,1,1
db5fh,7,0,-1
db7ch,7,0,-1
s9db6
db7ch,7,1,0
db5fh,7,-1,1
db7ch,7,1,1
db5fh,7,0,-1
db7ch,7,1,1
db5fh,7,0,-1
s11db2
db03h,7,1,0
db03h,7,1,0
dataends
stacksegment
db200dup(0)
stackends
codesegment
assumecs:
code,ss:
stack,ds:
data
start:
movax,data
movds,ax
star:
movah,0;设置显示方式
moval,3
int10h
movah,0bh;置彩色调板
movbh,0
movbl,1
int10h
movah,0bh;置彩色调板
movbh,1
movbl,4
int10h
leadx,infon
movah,9
int21h
key0:
movah,1;读键盘缓冲区字符
int16h
movah,0
int16h
cmpal,'S'
jnzkey0
movah,2;取系统时间
int1ah
movax,0
movbx,0
movah,ch;取系统时间
moval,cl;保存分钟
movbh,dh;保存秒
movbl,dl;保存百分之一秒
tt:
pushax
pushbx
movah,0
moval,3
int10h
movah,0bh
movbh,0
movbl,1
int10h
movah,0bh
movbh,1
movbl,4
int10h
ww:
popbx
popax
callxian;调用显示子程序
pushax
movah,1;读键盘缓冲区字符
int16h
jzqu
movah,8;从键盘输入字符
int21h
cmpal,'Q';输入s,结束程序
jetu
cmpal,'T'
jzstar
cmpal,'P'
jnequ
key:
movah,1;读键盘缓冲区字符
int16h
movah,0
int16h
cmpal,'P'
jnzkey
qu:
movah,2;取系统时间
int1ah
cmpbh,dh
jequ
popax
incbh;对时间进行加1
cmpbh,100
jltt
movbh,0
incal
callbeep
cmpal,100
jltt
moval,0
incah
cmpah,24
jltt
movah,0
jmptt
tu:
movah,4ch
int21h
ret
xianproc;对时间值进行处理并显示的子程序
pushsi
pushdi
pushdx
pushcx
pushbx
pushax
popax
pushax
movbx,ax
movax,0
moval,bh
movcl,4
shral,cl
movbl,al
movdh,10
movdl,2
callff
popax
pushax
movbx,ax
movax,0
moval,bh
andal,0fh
movbl,al
movdh,10
movdl,6
callff
movdh,10
movdl,10
movbl,10
callff
popax
pushax
movcl,4
shral,cl
movbl,al
movdh,10
movdl,14
callff
popax
pushax
andal,0fh
movbl,al
movdh,10
movdl,18
callff
movdh,10
movdl,22
movbl,10
callff
popax
popbx
pushbx
pushax
movax,0
moval,bh
movcl,4
shral,cl
movbl,al
movdh,10
movdl,26
callff
popax
popbx
pushbx
pushax
moval,bh
andal,0fh
movbl,al
movdh,10
movdl,30
callff
movdh,0
movdl,15
movbl,22
callff
popax
popbx
popcx
popdx
popdi
popsi
ret
xianendp
ffproc;显示具体数值
pushax
pushbx
pushcx
pushdx
cmpbl,0
jel0
cmpbl,1
jel1
cmpbl,2
jel2
cmpbl,3
jel3
cmpbl,4
jel4
cmpbl,5
jel5
cmpbl,6
jel6
cmpbl,7
jel7
cmpbl,8
jel8
cmpbl,9
jel9
cmpbl,10
jel10
cmpbl,22
jeld
l0:
leadi,s0
jmpty
l1:
leadi,sy
jmpty
l2:
leadi,s2
jmpty
l3:
leadi,s3
jmpty
l4:
leadi,s4
jmpty
l5:
leadi,s5
jmpty
l6:
leadi,s6
jmpty
l7:
leadi,s7
jmpty
l8:
leadi,s8
jmpty
l9:
leadi,s9
jmpty
l10:
leadi,s11
jmpty
ld:
leadi,str
ty:
movah,0fh;显示方式
int10h
subcx,cx
movcl,[di]
incdi
plot_next:
adddh,[di+2]
adddl,[di+3]
movah,2
int10h
moval,[di]
movbl,[di+1]
pushcx
movcx,1
movah,09
int10h
popcx
adddi,4
loopplot_next
popdx
popcx
popbx
popax
movcx,100
gg:
deccx
loopgg
ret
ffendp
beepproc
pushax
pushbx
pushcx
pushdx
moval,10110110b
out43h,al
movax,533h
out42h,al
moval,ah
out42h,al
inal,61h
movah,al
oral,03
out61h,al
subcx,cx
movbl,28h
g7:
loopg7
decbl
jnzg7
moval,ah
out61h,al
popdx
popcx
popbx
popax
ret
beependp
codeends
endstart
5.调试记录及结果分析
5.1程序调试过程
(1)将上述程序编译→汇编源文件,命名为sun.asm。
(2)asm将生成一个exe文件。
如果程序有错误则不能生成,需找出源程序中的错误并改正。
(3)编译、连接、运行文件,即可显示结果。
(4)根据显示结果输入字母,查看运行结果。
5.2运行结果
(1)程序运行后,屏幕显示如下图所示:
图5-1运行程序后的桌面显示
(2)在键盘上输入S,显示本机时间,如下图所示:
图5-2输入S后,显示本机时间
(3)在键盘上输入T,屏幕重新显示开始时的画面,如下图所示;再次输入S,重新显示本机时间。
图5-3输入T后的屏幕显示
(4)输入P,时间将会暂停,如下所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子表 程序设计