
汇编-七段码电子表显示程序.doc
18页攀枝花学院学生课程设计(论文)题 目: 七段码电子表显示程序 学生姓名: 蒋志勇 学 号: 201010801035 所在院(系 ): 计算机学院 专 业: 计算机科学与技术 班 级: 10 级计本 1 班 指 导 教 师: 李艳华 职称: 讲师 2011 年 12 月 31 日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题 目 七段码电子表显示程序1、课程设计的目的通过本课程设计教学所要达到的目的是:1、培养学生理论联系实际的设计思想,提高学生综合运用汇编语言课程的理论知分析问题、解决问题的能力2、通过查找、运用设计资料,完成工程设计所必备的基本训练3、使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)设计内容:用电子表的形式显示系统时间以“时:分:秒”的形式显示时间设计思路:数字 0~9 中的每一个数字用“ |”和“—”字符组成的“ 七段”码图形表示,时与分、分与秒之间的两点用“▼” 字符表示。
这些字符预先定义在数据段的字符图形里,利用 BIOS INT 1AH 的 2 号系统功能调用,读出计算机系统的时间(为 BCD 码) ,置换成字符图形标中的图形字符显示本程序设计的关键是随着系统时间的变化,用字符组成的图形数字如何进行相应的变化方法是:不停地读取系统时间并保存在寄存器中,将每次取出的时间显示并与前一次比较,先比较“秒” 值,在不同的情况下(系统时间发生了增 1 的变化) ,则调用相应的图形字符显示,在不超过 60 秒的情况下,重复比较秒,然后再比较和显示“分” 值与“小时”值程序流程图如图所示3、主要参考文献[1]《汇编语言程序设计》,吴向军等,高等教育出版社,2002[2]《IBM-PC 汇编语言及程序设计》(第 2 版), 沈美明等,清华大学出版社,2001[3]《IBM-PC 汇编语言及程序设计实验教程》 ,沈美明等,清华大学出版社 ,2001[4]《汇编语言程序设计》, 钱晓捷等,电子工业出版社,2000[5]《汇编语言程序设计》, 张志明等,重庆大学出版社,19974、课程设计工作进度计划时间(天) 内容安排1 分析设计准备3 编程调试阶段1 编写课程设计报告指导教师(签字) 日期 年 月 日教研室意见:年 月 日- 2 -学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表题目名称评分项目 分值 得分 评价内涵01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度02 科学实践、调研 7 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料工作表现20% 03 课题工作量 7 按期圆满完成规定的任务,工作量饱满04 综合运用知识的能力 10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论05 应用文献的能力 5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力06 设计(实验)能力,方案的设计能力 5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整07 计算及计算机应用能力 5 具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等能力水平35%08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10 具有较强的数据收集、分析、处理、综合的能力09插图(或图纸)质量、篇幅、设计(论文)规范化程度5 符合本专业相关规范或规定要求;规范化符合本文件第五条要求。
10 设计说明书(论文)质量 30 综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学成果质量45% 11 创新 10 对前人工作有改进或突破,或有独特见解成绩- 3 -指导教师评语指导教师签名: 年 月 日- 1 -摘 要七段码电子表是我们日常生活中最常见的一种表它的显示格式为“时:分:秒” ,数字 0~9 中的每一个数字用“ |”和“—”字符组成的 “七段”码图形表示在我们生活的各个领域都能看到它的身影,因此学习如何用汇编语言编写七段码电子表程序对我们学习汇编语言至关重要在经过了自己这几天的上网搜索,图书馆寻找后,我在本文介绍了汇编语言源程序的编辑以及编译,对于七段码电子表显示程序程序设计思想和设计流程也做出了全面的叙述,经过错误的分析、修改、调试,实现了七段码电子表的程序显示关键词:七段码,程序设计,电子表,汇编语言- 2 -一、课程设计题目描述和要求1.1 问题提出及功能要求用电子表的形式显示系统时间以“时:分:秒”的形式显示时间不停地读取系统时间并保存在寄存器中,将每次取出的时间显示并与前一次比较,先比较“秒”值,在不同的情况下(系统时间发生了增 1 的变化) ,则调用相应的图形字符显示,在不超过 60 秒的情况下,重复比较秒,然后再比较和显示“分”值与“小时”值。
1.2 运行环境1.2.1 硬件环境微型计算机(Intel x86 系列 CPU)一台1.2.2 软件环境Windows98/2000/XP 操作系统文本编辑器建议使用 EDIT 或 NOTEPAD,汇编程序建议使用 MASM.EXE,连接程序建议使用 LINK.EXE,调试程序建议使用调试调试程序建议使用调试程序建议使用调试程序建议使用这 DDEBUG.EXE1.3 本课题涉及的知识点以“时:分:秒”的形式显示时间这些字符预先定义在数据段的字符图形里,利用 BIOS INT 1AH 的 2 号系统功能调用,读出计算机系统的时间(为BCD 码) ,置换成字符图形标中的图形字符显示本程序设计的关键是随着系统时间的变化,用字符组成的图形数字如何进行相应的变化方法是:不停地读取系统时间并保存在寄存器中,将每次取出的时间显示并与前一次比较,先比较“秒”值,在不同的情况下(系统时间发生了增 1 的变化) ,则调用相应的图形字符显示,在不超过 60 秒的情况下,重复比较秒,然后再比较和显示“分”值与“小时”值 3 -二、 算法设计2.1 设计思路数字 0~9 中的每一个数字用“|”和“—”字符组成的“七段”码图形表示,时与分、分与秒之间的两点用“▼”字符表示。
这些字符预先定义在数据段的字符图形里,利用 BIOS INT 1AH 的 2 号系统功能调用,读出计算机系统的时间(为 BCD 码) ,置换成字符图形标中的图形字符显示,程序流程图如图 2.1 构思流程图所示图 2.1 构思流程图取秒的高位调用 ff取小时的高位取小时的低位调用 ff调用 ff取分隔符“:”调用 ff调用 ff调用 ff调用 ff取分的高位取分隔符“:”取秒高位调用 ff取分的低位调用 ff取分隔符“:”现场保护取分的高位调用 ff取分的低位调用 ff- 4 -2.2 主要流程图如图 2.2 和 2.3 显示了对于调用各子函数的方法以及显示了对应算法的构思图 2.2 流程图结束保护现场恢复现场根据 bl 的值给Di 赋偏移地址显示字符开始- 5 -YNYYNYNNYNN图 2.3.开始屏幕初始化读取系统时间从键盘输入字符Al=“s”?Call xian读取系统时间秒加1?Bh bh+1bh<100?al al+1Call beepAl<100?Ah ah+1Ah<24?ah=0结束- 6 -三、代码设计Data segment;*****定义 please 等提示信息*****str db 20db 50h,7,0,0db 6ch,7,0,1db 65h,7,0,1db 61h,7,0,1db 73h,7,0,1db 65h, 7,0,1 db 70h,7,1,-10db 72h,7,0,1db 65h,7,0,1 db 73h,7,0,1 db 73h,7,0,1db 53h,7,0,2 db 6bh,7,0,2db 65h,7,0,1db 79h,7,0,1db 65h,7,0,2db 78h,7,0,1db 69h,7,0,1 db 74h,7,0,1 db 21h,7,0,1;*****定义 0-9 十个图形数字*****s0 db 6 ;对 S0 进行定义db 5fh,7,0,0db 7ch,7,1,-1db 7ch,7,1,0db 5fh,7,0,1db 7ch,7,0,1db 7ch,7,-1,0 sy db 2 ;对 Sy 进行定义db 7ch,7,1,0db 7ch,7,1,0s2 db 5 ;对 S2 进行定义db 5fh,7,0,0db 7ch,7,1,1db 5fh,7,0,-1db 7ch,7,1,-1db 5fh,7,0,1s3 db 5 ;对 S3 进行定义db 5fh,7,0,0db 7ch,7,1,1db 5fh,7,0,-1db 7ch,7,1,1db 5fh,7,0,-1s4 db 4 ;对 S4 进行定义db 7ch,7,1,0db 5fh,7,0,1db 7ch,7,1,1db 7ch,7,-1,0s5 db 5 ;对 S5 进行定义db 5fh,7,0,0db 7ch,7,1,-1db 5fh,7,0,1db 7ch,7,1,1db 5fh,7,0,-1s6 db 6 ;对 S6 进行定义db 5fh,7,0,0db 7ch,7,1,-1db 5fh,7,0,1db 7ch,7,1,1db 5fh,7,0,-1db 7ch,7,0,-1s7 db 3 ;对 S7 进行定义db 5fh,7,0,0- 7 -db 7ch,7,1,1db 7ch,7,1,0s8 db 7 ;对 S8 进行定义db 7ch,7,1,0db 5fh,7,-1,1db 7ch,7,1,1db 5fh,7,0,-1db 7ch,7,1,1db 5fh,7,0,-1db 7ch,7,0,-1s9 db 6 ;对 S9 进行定义db 7ch,7,1,0db 5fh,7,-1,1db 7ch,7,1,1db 5fh,7,0,-1db 7ch,7,1,1db 5fh,7,0,-1s11 db 2 ;对 S11 进行定义db 03h,7,1,0db 03h,7,1,0data ends ;定义以上量对后面的函数进行说明与符合汇编语言的语法相匹配stack segment db 200 dup (0)stack endscode segmentassume cs:code,ss:stack,ds:datastart:mov ax,datamov ds,axmov ah,0 ;设置显示方式mov al,4int 10hmov ah,0bh ;置彩色调板mov bh,0mov bl,1int 10hmov ah,0bh ;置彩色调板mov bh,1mov bl,4int 10hmov ah,2 ;取系统时间int 1ahmov ax,0mov bx,0mov ah,ch ;取系统时间mov al,cl ;保存分钟mov bh,dh ;保存秒mov bl,dl ;保存百分之一秒;取系统时间,并且保存 1 秒对后面程序的调用以及时间周期起到决定性的作用tt: push axpush bxmov ah,0mov al,4int 10hmov ah,0bhmov bh,0mov bl,1int 1。












