免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学微机原理与接口课程设计说明书课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: “霓虹灯”的模拟显示 初始条件:带有编辑器、汇编程序、连接程序和调试程序的电脑一台。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示程序,由及*字符相间,从下到上由三角型变化成矩形。按Q退出程序。(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5) 调试记录及结果分析(6) 总结(7) 参考资料(8) 附录:程序清单或芯片资料,软件演示屏幕拷贝图或硬件实物图时间安排:1月4日1月6日: 收集资料,方案选择1月7日1月12日: 整体流程,程序细节1月13日1月15日:调试程序,报告撰写1月16日: 交设计报告,程序演示,答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日摘 要本次课程设计的设计内容是采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示程序,由及*字符相间,从下到上由三角型变化成矩形,并按Q退出程序。该霓虹灯是由及*字符相间组成,显示方式是从下到上由三角型变化成矩形,这就要求该霓虹灯能够动态地进行变化;最后,是当按下键盘上的Q键时,程序能够退出,以免程序一直运行而导致电脑死机。霓虹灯模拟显示程序主要是进行程序循环调用,可以通过CMP、JMP、JZ、RET等命令进行跳转。由于是霓虹灯的模拟显示,因此在进行程序循环调用前需要进行数据段定义,以使子程序在进行调用时能够根据数据段的定义来执行,最后显示结果。运行程序时,把编好的源程序命名保存为ZHANGLI.asm,在MASM for Windows集成环境中进行调试,首先点运行选项中的调试,如果编译成功,就选择运行选项中的生成exe文件,这样就产生了一个可运行程序,然后点击运行,就会看到与题目要求相符的界面。最后是调试程序,把源程序放在MASM for Windows集成环境中进行编译,如果源程序中有错误,编译时系统就会给出提示,根据系统提示我们可以找到是哪一行出现了问题,对其进行分析并修改,重新编译,直到编译时系统对那一行没有提示为止。武汉理工大学微机原理与接口课程设计说明书目 录设计内容11 设计任务及要求分析22 方案认证说明23 系统原理24 软件程序34.1 软件思想34.2 流程图35调试记录及结果分析45.1 运行程序45.2 调试程序45.3 软件演示屏幕拷贝图56 总 结6参考资料7附录8“霓虹灯”的模拟显示设计内容采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示程序,由及*字符相间,从下到上由三角型变化成矩形。按Q退出程序。(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5) 调试记录及结果分析(6) 总结(7) 参考资料(8) 附录:程序清单或芯片资料,软件演示屏幕拷贝图或硬件实物图11 设计任务及要求分析 本次课程设计的内容是设计一个霓虹灯的模拟显示程序,该霓虹灯是由及*字符相间,从下到上由三角型变化成矩形,然后按Q退出程序。由此分析,此次设计没有硬件实物图,仅是采用汇编语言编写程序代码,生成一个霓虹灯的模拟显示程序;同时,该霓虹灯是由及*字符相间组成,显示方式是从下到上由三角型变化成矩形,这就要求该霓虹灯能够动态地进行变化;最后,是当按下键盘上的Q键时,程序能够退出,以免程序一直运行而导致电脑死机。2 方案认证说明 本次课程设计的霓虹灯模拟显示程序主要是进行程序循环调用,可以通过CMP、JMP、JZ、RET等命令进行跳转。由于是霓虹灯的模拟显示,因此在进行程序循环调用前需要进行数据段定义,以使子程序在进行调用时能够根据数据段的定义来执行,最后显示结果。3 系统原理 本次设计的关键在于正确地使用堆栈及子程序循环调用。首先将已定义好的数据段压入堆栈,从堆栈中依次弹出内容并显示。由于堆栈的特点是先入后出,正好可以实现数据段的输出显示。在编程过程中要设置一个计数器,统计及*显示的行数和列数。其次是进行子程序调用。由于源程序涉及多个子程序的调用,因此过程比较麻烦。通过CMP、JMP、JZ、RET等命令进行跳转,并不断地进行子程序循环调用,而各个子程序的功能又不尽相同,从而达到理想结果。最后是主程序的执行,由于霓虹灯的显示是从下往上、由三角形变成矩形,因此在显示中每一行的及*数目是不相同的,故主程序也需要一个循环程序调用,以达到霓虹灯的正确显示。94 软件程序4.1 软件思想 霓虹灯的显示主要是通过调用子程序来实现的。首先是定义数据段,这样在各个子程序调用时,不同的子程序调用不同的数据段,以达到动态显示霓虹灯的目的。4.2 流程图 程序的流程图如下所示。其中分主程序流程图和子程序流程图。主程序流程图如图1所示;子程序流程图如图2所示。图1 主程序流程图图2 子程序流程图5 调试记录及结果分析5.1 运行程序把编好的源程序命名保存为ZHANGLI.asm,在MASM for Windows集成环境中进行调试,首先点运行选项中的调试,如果编译成功,就选择运行选项中的生成exe文件,这样就产生了一个可运行程序,然后点击运行,就会看到与题目要求相符的界面。5.2 调试程序编好源程序后,需要对它进行修改和完善,具体做法是:把源程序放在MASM for Windows集成环境中进行编译,如果源程序中有错误,编译时系统就会给出提示,根据系统提示我们可以找到是哪一行出现了问题,对其进行分析并修改,重新编译,直到编译时系统对那一行没有提示为止。如果系统提示源程序中存在多条错误,就按照上述方法逐条进行修改,直到系统提示编译成功。此时运行程序,就可以得到与任务书中要求相符的“霓虹灯”图形显示。在调试中出现了很多问题,刚开始对源程序进行编译时,由于源程序的子程序及调用太多,结果导致调用时出错,显示的图形并非是从三角形变化到矩形。在经过了反复的修改过后,源程序运行才算正常,显示的图形也正如任务书要求的那样。在调试过程中,错误是不可避免的,产生错误的原因也很多种,情况也很复杂,有的是由于一个代码输入错误而导致整个源程序运行出错,而有的是因为子程序调用或者逻辑问题而使源程序无法运行,结合以上多种原因相互作用而引起的复杂错误,因此需要掌握错误的一般诊断方法,错误诊断过程就是以错误现象为依据,通过反复测试,做出分析判断,逐步找出错误的过程。经过反复修改和测试,最终得到了正确的调试结果,即调试成功。5.3 软件演示屏幕拷贝图软件演示屏幕拷贝图如下图所示,其中图1是三角形的图形显示;图2是矩形的动态显示。图1图26 总 结两周的课程设计就这样匆匆结束了,突然感觉时间变得如此之短,而同时,所需要掌握、学习的东西又那么多。微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。总的来说,这次课程设计学到了不少东西,概括起来有如下几个方面:第一,加深了对课本知识的理解和掌握。刚开始拿到此次课程设计的题目时,大脑一片空白,根本不知道该如何进行。最后,不得不重新拾起课本,将课本上有关的知识仔细认真地看了一遍,才渐渐有了眉目。而通过此次的学习,不仅加深了对以前学过的知识的理解和掌握,同时,又对此次的课程设计有了底。第二,增强了学习的兴趣。以前学习微机原理与接口专业知识时,总感觉它与我们实际运用联系的不紧密。可是,通过这次课程设计,我才发现,原来我们实际生活中常用的知识均来自于我们所学的课本基础知识。通过对汇编语言的实际应用,可以让我更好地应用所学知识去处理问题,也增强了我的学习兴趣。第三,理论要联系实际。虽然这次课程设计我们没有做实物,但通过老师的讲解和指导,让我明白,光靠理论知识是行不通的,我们在做设计时,需要考虑方方面面的东西。我们需要通过理论联系实际,才能设计出满足设计要求的方案。最后,感谢学校为我们提供这样一次学习锻炼的机会,也衷心感谢老师的细心指导!参考资料1 周佩林,彭虎,傅忠谦. 微机原理与接口技术. 北京:电子工业出版社,20052 郑学坚,周斌,马立妮. 微型计算机原理及应用实验指导.北京:清华大学出版社,20013 方立友. 微机原理与汇编语言实用教程. 北京:清华大学出版社,20074 朱世鸿. 微机系统和接口应用技术. 北京:清华大学出版社,20065 宋杰等. 微机原理与接口技术课程设计. 北京:机械工业出版社,2005附录 源程序清单如下所示:data_seg segment ;定义数据段 star2 db 26 db 40h,0bh,0,0 db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1 db 40h,0bh,-1,3 db 02ah,0bh,0,-1star3 db 26 db 40h,0bh,0,0 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1 db 40h,0bh,-1,-3 db 02ah,0bh,0,1info1 db 0dh,0ah,input q to quit,$char_cnt dw ?pointer dw ?line_on db ?col_on db ?char_cnt2 dw ?pointer2 dw ?line_on2 db ?col_on2 db ?char dw ?col db ?col0 db ?col00 db ?col01 db ?count db ?count0 db ?count1 db ?count2 db ?char0 db ?char1 db ?char01 db ?char2 db ?line1 db ?col1 db ?pot1 dw ?line2 db ?col2 db ?pot2 dw ?count_cx db ?data_seg ends;-code_seg segment ;定义代码段 assume cs:code_seg,ds:data_segmain proc farpush ds ;设置堆栈返回sub ax,axsub cx,cxpush axpush cxmov ax,data_segmov ds,ax ;数据段寄存器赋初值mov col,2mov col0,2mov col01,2mov char0,2mov char01,2mov count,1mov char1,1mov char2,77mov count0,4mov count1,2again: lea di,star2mov dh,16mov dl,38call move_shape1lea di,star3mov dh,16mov dl,40 call move_shape2 dec count_cx call must_2 ;- mov ax,data_segmov ds,axmov ah,0mov al,4int 10hinput: lea dx,info1 ;显示字符串info1mov ah,9int 21h mov ah,08int 21hcmp al,q ;按Q退出jz exitexit:mov ah,4chint 21h ;返回DOSretmain endp;-clear_screen proc near push ax push bx push cx push dx mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h pop dx pop cx pop bx pop ax retclear_screen endp;-move_shape1 proc near push ax push bx push cx push dx push di mov ah,0fh int 10h sub ch,ch mov cl,di inc di mov char_cnt,cx mov pointer,di mov line_on,dh mov col_on,dl mov char,cx pop di pop dx pop cx pop bx pop ax retmove_shape1 endp;-move_shape2 proc nearpush ax push bx push cx push dx push di mov ah,0fh int 10h sub ch,ch mov cl,di inc di mov char_cnt2,cx mov pointer2,di mov line_on2,dh mov col_on2,dl mov char,cx pop di pop dx pop cx pop bx pop ax retmove_shape2 endp;-must_2 proc near push ax push bx push cx push dx push di mov ah,0fh int 10hexit41: sub cx,cx mov col,2 mov col01,2 mov char0,2 mov char01,2 mov cx,char_cnt mov di,pointer mov dh,line_on mov dl,col_on mov char,cx jmp plot_next1exit31: sub cx,cx mov cx,char_cnt2 mov di,pointer2 mov dh,line_on2 mov dl,col_on2 mov char,cx jmp plot_next1 ;-exit61: call dly_qrtr mov char0,2 mov char01,2 mov col01,2 mov col,2 mov dl,col_on2 inc dl cmp char2,dl je exit71 call dly_qrtr call dly_qrtr call dly_qrtr call dly_qrtr call erase1 cmp col0,26 je exit41 add col0,2 jmp exit41 ;-exit71: cmp count1,1 je exit93 cmp line_on,16 jne exit91 cmp col0,26 jne exit92exit91: sub col0,2 je exit82 dec line_on dec line_on2 add col_on,2 sub col_on2,2 call dly_qrtr call dly_qrtr call dly_qrtr call dly_qrtr call erase1 mov count1,2 jmp exit41exit82: cmp count_cx,1 je exit22 jmp exit81exit92: mov al,26 sub al,col0 mov count2,al add count2,2 mov dl,col0 mov col00,dlexit93: sub count2,2 je exit91 dec line_on dec line_on2 add col_on,2 sub col_on2,2 sub col0,2 call dly_qrtr call dly_qrtr call erase1 mov dl,col00 mov col0,dl dec count1 cmp count1,1 je exit94 mov count1,1exit94: jmp exit41 exit22: jmp exit21exit81: add char1,2 sub char2,2 cmp char1,39 je exit21 mov line_on,4 mov line_on2,4 mov dl,char1 inc dl mov col_on,dl mov dl,char2 dec dl mov col_on2,dl mov col0,2 mov count1,2 jmp exit41exit01: mov line2,dh mov col2,dl add di,4 mov pot2,di mov dl,col01 cmp col0,dl je exit02 add col01,2 mov col,2 mov char01,2 dec char01 jmp exit410exit02: jmp exit61exit21: pop di pop dx pop cx pop bx pop ax retexit03: jmp exit01exit410: mov dh,line1 mov di,pot1 mov dl,col1 jmp plot_next1exit310: mov dh,line2 mov di,pot2 mov dl,col2;-plot_next1: add dh,di+2 add dl,di+3 mov ah,2 int 10h mov al,di mov bl,0ch push cx mov cx,1 mov ah,09 int 10h pop cx dec col je exit51 add di,4 jmp plot_next1exit51: cmp char01,0 je exit03 ;- cmp char01,1 je exit12 cmp char0,1 je exit03 ;- mov line1,dh mov col1,dl add di,4 mov pot1,di mov col,2 dec char0 jmp exit31exit12: mov line1,dh mov col1,dl add di,4 mov pot1,di mov col,2 dec char01 jmp exit310must_2 endp;-erase1 proc near sub cx,cx mov cx,char_cnt mov di,pointer mov dh,line_on mov dl,col_on mov char,cx jmp erase_next1exit62: sub cx,cx mov cx,char_cnt2 mov di,pointer2 mov dh,line_on2 mov dl,col_on2 mov char,cx jmp erase_next1exit011: mov line2,dh mov col2,dl add di,4 mov pot2,di mov dl,col01 cmp col0,dl je exit021 add col01,2 mov col,2 mov char01,2 dec char01 jmp exit4101exit021:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届山东省济宁市鱼台县第一中学化学高二第一学期期中检测试题含解析
- 2026届安徽省宿州市五校化学高三上期中调研模拟试题含解析
- 广西南宁市三中2026届化学高一上期中复习检测试题含解析
- 2026届浙江省宁波市东恩中学高一化学第一学期期末教学质量检测试题含解析
- 2025秋初三化学人教版(新教材)第一学期期中质量检测卷附答案(3套)
- 2025浙江台州路桥区社会事业发展集团有限公司招聘4人笔试历年常考点试题专练附带答案详解试卷3套
- 2025江西吉安市吉安县城市投资控股集团有限责任公司及下属子公司招聘拟入闱投档分数线及安排笔试历年难易错考点试卷带答案解析试卷3套
- 2026届湖南省道县第二中学高一化学第一学期期中教学质量检测试题含解析
- 2025年辽宁省阜新市二中化学高一上期中检测模拟试题含解析
- 辽宁省葫芦岛市兴城高级中学2026届高二上化学期末学业水平测试试题含解析
- 2025年时政题库及答案(100题)
- 2025年税务遴选试题及答案
- 2025年技能等级证书护理题库及答案
- 2025年镇江美术中考真题及答案
- 2025年即热式饮水机行业研究报告及未来发展趋势预测
- 医学检验科SOP文件全集
- 全国大学生职业规划大赛《大数据技术》专业生涯发展展示【高职(专科)】
- 大学生国家安全教育(复旦大学版)学习通网课章节测试答案
- 旅行社计调应急处置考核试卷及答案
- 新媒体时代百雀羚营销策略优化研究
- 宋应星《钱》教学课件
评论
0/150
提交评论