武汉理工大学《微机原理与接口技术》课程设计说明书学号:0121011360116课程设计题目霓虹灯的模拟显示学院自动化学院专业自动化班级自动化1001班姓名张帆指导教师石云2013年1月10日武汉理工大学《微机原理与接口技术》课程设计说明书课程设计任务书学生姓名:张帆专业班级:自动化1001班指导教师:石云工作单位:自动化学院题目:“霓虹灯”的模拟显示初始条件:在屏幕中央以@字符显示一矩型,按F键以*及@将矩型内部由外向内按棱型填满;按R键以相反的次序消失。按Q退出程序。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:1月2日~1月3日:收集资料,方案选择1月4日~1月7日:整体流程,程序细节1月8日~1月10日:调试程序,报告撰写1月10:交设计报告,程序演示,答辩指导教师签名:年月日系主任(或责任教师)签名:年月日武汉理工大学《微机原理与接口技术》课程设计说明书目录1设计任务及要求分析...........................................................11.1初始条件...............................................................11.2要求完成的主要任务.....................................................11.3任务分析...............................................................12方案比较及认证说明...........................................................22.1定义光标位置...........................................................22.2绘制单个字符方案.......................................................22.2.1利用DOS的2号功能调用............................................22.2.2利用BIOS的9号功能调用...........................................32.3循环功能...............................................................32.4延时功能...............................................................43系统原理阐述.................................................................53.1软件设计思想...........................................................53.2程序中用到的DOS功能调用...............................................53.3程序中用到的BIOS内的中断调用..........................................64软件思想及各部分流程图.......................................................64.1主程序流程图...........................................................64.2以@形组成矩形的子程序流程图............................................8图2画矩形子程序流程图....................................................84.3以*和@形按顺序填充矩形的子程序流程图...................................84.4反向消失子程序流程图...................................................95调试记录及结果分析..........................................................105.1调试记录..............................................................105.2结果分析..............................................................126心得体会....................................................................147参考文献....................................................................15附录:源程序及程序注释.......................................................16武汉理工大学《微机原理与接口技术》课程设计说明书摘要本次课程设计的题目是霓虹灯的模拟显示,完成了一个基于8086系统的汇编程序编写,实现了屏幕上显示规定的动画的任务。程序主要由主程序、画矩形框子程序、由外向内填充子程序、反向填充子程序、延时子程序等模块组成。程序在MF2KI编写,在DOS环境下通过了运行调试,最终顺利完成任务。关键词:霓虹灯MF2KIDOS汇编武汉理工大学《微机原理与接口技术》课程设计说明书1“霓虹灯”的模拟显示1设计任务及要求分析1.1初始条件在屏幕中央以@字符显示一矩型,按F键以*及@将矩型内部由外向内按棱型填满;按R键以相反的次序消失。按Q退出程序。1.2要求完成的主要任务(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)软件思想,流程图,(5)源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图1.3任务分析这是一个在屏幕上用ASIIC码字符显示规定的或者动画的任务,因此,首先定义文本显示我们可以选择80*25的彩色文本显示方式,光标位置是画出要求图形的关键。例如我们可以选择其初始坐标值为行坐标为第三行,列坐标为第五列。然后考虑怎么显示单个字符,我们可以知道,若要实现设计任务的要求,首先设计的方案要能具有显示单个字符的功能,我们知道,借助DOS系统功能调用可以实现这一功能。接下来,在实现以“@”组成矩形和以“*”字符将矩型内部由上到下,从左到右填满的过程中,需要用到循环功能,例如利用循环功能使“*”将矩形内部从左到右和从上到下填充的过程中,需要多次调用输出单个字符,循环多次方可。最后考虑延时问题,由于本设计并没有时钟方面的要求,所以,不必采用DOS中断来实现精确定时,因此,我们可以采用编写延时子程序的方法来实现延时。武汉理工大学《微机原理与接口技术》课程设计说明书22方案比较及认证说明2.1定义光标位置定义光标位置是画出要求图形的关键。为了方便编写和操作,采用光标位置的宏定义,其程序如下:MAMACROOP1,OP2;宏定义光标位置PUSHAX;入栈PUSHBXMOVAH,02HMOVBH,0;页号MOVDH,OP1;行坐标MOVDL,OP2;列坐标INT10HPOPBX;出栈POPAXENDM在这其中,我们继续采用BIOS功能调用来设置80*25的彩色文本显示方式和设置光标位置,其中DH代表行坐标,DL代表列坐标。2.2绘制单个字符方案首先我们可以知道,若要实现设计任务的要求,首先设计的方案要能具有显示单个字符的功能,我们知道,借助DOS系统功能调用可以实现这一功能。2.2.1利用DOS的2号功能调用DOS的2号功能调用具有在屏幕上显示一个字符的功能,其输出单个字符的程序如下:MOVAL,'@';字符的ASCII码赋给ALMOVDL,ALMOVAH,2;DOS功能调用INT21H武汉理工大学《微机原理与接口技术》课程设计说明书3MOVAH,4CHINT21H此方案固然能较容易实现单个字符输出,但每实现一次就需要进行一次中断,而且若实现字符的连续输出,无论是横向还是纵向都需要多次循环,这无疑增大了程序的难度。2.2.2利用BIOS的9号功能调用同样借助BIOS的9号功能调用同样可以实现这一目的,其程序如下:MOVAH,9;BIOS功能调用,定义功能号,在光标位置显示字符及属性MOVAL,'@'MOVCX,1;字符显示次数,显示1次INT10HMOVAH,4CHINT21H我们从上面可以知道,DOS的2号功能调用和BIOS的9号功能调用都能实现单字符的输出,但是在实践中我们发现,DOS的2号功能调用每输出一个字符都需循环一次,而BIOS功能调用在输出连续字符方面占有优势,只需把赋给CX的值改变就可以实现横向连续输出字符,故其比起DOS的2号功能调用有一定的优势,使程序变得简单明了!因此我们选用BIOS的9号功能调用,来实现第一步的以“@”字符组成矩形边框。2.3循环功能在实现以“@”和“*”字符将矩型内部由外到内填满的过程中,需要用到循环功能,即需要多次调用输出单个字符,循环多次方可,其需要的程序如下:MOVAH,2;BIOS功能调用,定义功能号,设置光标位置INT10HCALLDELAY;调用延时环节MOVAH,9;定义功能号,在光标位置显示字符及属性MOVBH,0;页号为0MOVBL,0EH;定义字符属性,即其颜色,此颜色为黄色MOVAL,'*';将待显示字符的ASCII码移入AL武汉理工大学《微机原理与接口技术》课程设计说明书4MOVCX,1;字符显示次数,显示1次INT10HINCDL;DL自增1CMPDL,64JBELP1;DL小于等于64时跳入LP1INCDH;DH自增1CMPDH,17MOVDL,6JBELP1;DH小于等于17时跳入LP12.4延时功能由于本设计并没有时钟方面的要求,所以,不必采用DOS中断来实现精确定时,因此,我们可以采用编写延时子程序的方法来实现延时,按照要求,其程序如下:DELAYPROCNEARPUSHCXPUSHDXMOVDX,25D1:MOVCX,65000D2:LOOPD2DECDXJNZD1POPDXPOPCXRETDELAYENDP如此则可以实现延时的功能,如感觉延时时间过短,则可以采用多次延时的方法来修改!本次课设因对时间没有特别的要求,故综合考虑之下,决定采用多次延时的方法来达到延时的要求,因为这样可以更方便地改变延时的时间。武汉理工大学《微机原理与接口技术》课程设计说明书53系统原理阐述3.1软件设计思想由设计要求“在屏幕中央以@字符显示一矩型边框”可知,首先我们需要能够调用输出单字符的功能,然后,由于需要用@字符显示一矩形边框,我们可以想到分别输出四条边,因此首先要做的是设置文本显示方式,然后调用BIOS的2号功能,设置光标位置,同时可以直接调用BIOS的9号功能,令CX=60,直接输出最上面的一条边,然后利用循环,令CX=1输出其中的一条竖边,再分别利用相同的原理输出剩余的两条边,同时为了美化输出的图形,可以使每条边的输出颜色都不同,如此可以完成第一步“以@字符显示一矩形边框”的要求。完成矩形边框的输出后,接下来需要完成“按‘F’后以‘