您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 微机原理霓虹灯显示程序课程设计
武汉理工大学《微机原理与接口技术》课程设计说明书1霓虹灯显示程序设计1设计内容及要求要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个霓虹灯的模拟显示程序;2.在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出;3.撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。2程序原理分析本次设计实现的是霓虹灯的模拟显示,在80*25大小的屏幕上显示由各种字符组成的不同图形,在屏幕上,0行0列相对于屏幕左上角的位置,24行79列相对于右下角的位置。对应显示屏幕上的每个字符,在存储器中又连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。在屏幕上处理字母、数字以及一些字符图形称为文本方式。在文本方式下,属性字节对单色显示和彩色显示都是有效的。本程序采用的是彩色字符显示,在显示彩色文本时,属性字节能够选择前景和背景的颜色。每个字符可以选择16种颜色中的一种,背景色有8种颜色可以选择。图1-1是16色文本方式显示的属性字节。表1-1列出了16色字符方式颜色的组合。76543210BLRGBIRGB图1-116色方式下的属性字节表1-116种颜色的组合颜色IRGB颜色IRGB颜色IRGB颜色IRGB闪烁背景前景武汉理工大学《微机原理与接口技术》课程设计说明书2黑0000灰1000红0100浅红1100蓝0001浅蓝1001品红0101浅品红1101绿0010浅绿1010棕0110黄1110青0011浅青1011灰白0111白1111本程序主要运用了BIOS显示中断类型10H的部分功能,主要有用到以下几个功能:置光标:AH=02BH=页号DH=行DL=列读光标:AH=03显示字符串:AH=13HAL=01H;光标跟随移动ES:BP=串地址CX=串长度DH,DL=起始行列BH=页号BL=属性即程序通过INT10H2号功能的调用置光标位置,3号功能的调用读光标的位置,以及13号功能的调用显示字符串。并通过顺序、循环结构程序的调用进行图形的霓虹灯效果显示。程序的数据段以字符串的形式来表示,可以很方便的直接运用INT10H中的13号功能即显示字符串功能显示图形,这样一来程序得到了很大的简化,但同时,图形的显示是以字符串的形式,即以行的依次顺序逐渐出像在屏幕上,在字符串一次出现的同时,通过调用相应的子程序改变图形显示的颜色属性,以及不断变换显示图形的形状。同时由于微机处理速度较快,不容易一次看到图形变化,则需要在程序中添加延迟程序作为子程序不断被调用用以减缓显示速度,方便肉眼观察到图形变换效果。延迟程序中,由于寄存器CX存储有限,不能达到合适的延迟程度,故应采用循环结构的子程序来进行延迟操。武汉理工大学《微机原理与接口技术》课程设计说明书33程序流程图3.1主程序流程图定义数据段,然后将代码段程序初始化,然后调用13号功能显示字符串组成的‘董德军’三个字,再调用条纹显示子程序,显示运动的条纹,判断是否输入Q,若输入Q,则程序结束,退出程序,否则,执行跳转命令,继续调用汉字显示程序和条纹显示程序。主程序结构流程图如图2-1图3-1主程序结构流程图3.2子程序结构流程图3.2.1名字显示子程序流程图按照要求要显示出自己的名字,因此,运用多个字符组成,并按照笔画顺序显示出来,结构流程图如图3-2所示。Y开始数据段初始化调用汉字显示程序以不同颜色重复显示名字“董德军”调用条纹显示子程序,显示运动的条纹YN是否输入Q/q?结束武汉理工大学《微机原理与接口技术》课程设计说明书4图3-2名字显示子程序流程图3.2.2擦除子程序流程图在显示完名字并进行变色以后,将使用竖条纹对屏幕进行擦出,擦除以后若没有检测到字符Q的输入,则进行循环,继续显示名字,并在此进行擦出,擦出子程序流程图如图3-3所示。开始YNCX中内容自减1寄存器出栈判断CX中内容是否为0?CX出栈,保存循环次数在指定坐标处写第一个点CX入栈保存组成点的基本信息CX寄存器清零寄存器入栈结束武汉理工大学《微机原理与接口技术》课程设计说明书5图3-3擦除子程序流程图NNNYY结束保存点的基本信息列坐标dl自减1将字符改为*将字符写11个判断指定位置处字符是否为*?判断指定位置处字符是否为@?判断是否到达屏幕最左端?保存组成点的基本信息开始武汉理工大学《微机原理与接口技术》课程设计说明书64程序主要模块功能分析4.1名字显示功能模块如何使用ASCII码显示自己的中文名字是这次课程设计的关键之处,为了达到霓虹灯的效果,我采用各种字符组合,来组成名字的形状,为了达到更美观的效果,在这里,借助一个字符画转换软件,名字为ASCIIArtStudioASCII,该软件是用来创建ASCII字符画的软件,可以像使用画笔一样创建ASCII字符画。还支持将图片转换为字符画,以及保存成文本或图片文件等功能。首先我使用画图工具将自己的名字打出来,并转化为图片格式,如图4-1所示。图4-1使用绘图工具得到宋体的中文名字然后运行ASCIIArtStudioASCII软件,点击菜单栏文件,选择将图片转换为ASCIIART一项,读出图片,点击转换,将图片转化为字符画,所得字符画如图4-2所示。武汉理工大学《微机原理与接口技术》课程设计说明书7图4-2名字的ASCII码组成然后按照每一个字符的坐标方位在80*25大小的屏幕上显示由各种字符组成的文字,在屏幕上,0行0列相对于屏幕左上角的位置,24行79列相对于右下角的位置。对应显示屏幕上的每个字符,在存储器中又连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。在屏幕上处理字母、数字以及一些字符图形称为文本方式。在文本方式下,属性字节对单色显示和彩色显示都是有效的。在彩色显示器里,如CGA、EGA、VGA等,常用一个字节(8个位)来表示文字颜色和背景颜色,通常以第0~3位表示文字本身颜色;第4~6位表示背景颜色,背景颜色只有上表左栏的8种而已;第7个位,表示是否闪烁,0表示不闪烁,1表示闪烁。每个字符由四种属性组成,第一项为字符种类,如61h代表字符“a”,第二项为字符的颜色,如Oah代表绿色,第三项为字符相对于前一个字符的行坐标,第四项为该字符对于上一个字符的列坐标,这样只要定义了第一个字符在屏幕中的位置,那么就能将整个汉字显示出来。以下为第一个汉字“董”所定义的数据段。dongdb130db61h,0ah,0,0db12dup('a',0ah,0,1)db30h,0ah,0,1db'&',0ah,0,1db']',0ah,-1,-9db'n',0ah,0,1db'J',0ah,1,-1武汉理工大学《微机原理与接口技术》课程设计说明书8db'&',0ah,0,1db']',0ah,1,-1db'f',0ah,0,1db26h,0ah,-2,4db26h,0ah,1,0db'!',0ah,1,0db',',0ah,0,1db'g',0ah,0,1db22h,0ah,1,0db7eh,0ah,0,-1db7eh,0ah,0,-1db'M',0ah,0,-1db'0',0ah,0,-1db'M',0ah,0,-1db'*',0ah,0,-1db'v',0ah,0,-1db'a',0ah,0,-1db61h,0ah,0,-1db61h,0ah,1,-2db12dup('a',0ah,0,1)db30h,0ah,0,1db'e',0ah,0,1db5dh,0ah,2,-12db36h,0ah,0,1db5dh,0ah,1,-1db'M',0ah,0,1db5dh,0ah,1,-1db'L',0ah,0,1db'_',0ah,-3,0db7dup('_',0ah,0,1)db'j',0ah,0,1db'B',0ah,1,0db'#',0ah,1,0db'#',0ah,1,0db7eh,0ah,-1,-7db6dup('~',0ah,0,1)db61h,0ah,1,-6db6dup('a',0ah,0,1)db26h,0ah,-4,-3db7dup('&',0ah,1,0)db'P',0ah,-4,0db'8',0ah,3,0db'!',0ah,0,-6db'~',0ah,0,1武汉理工大学《微机原理与接口技术》课程设计说明书9db4dup('~',0ah,0,1)db'~',0ah,0,2db4dup('~',0ah,0,1)db',',0ah,-1,0db27h,0ah,3,-12db14dup(27h,0ah,0,1)db',',0ah,-1,0db'_',0ah,0,-1显示名字的的过程如下面程序段所示,其中前三句是将汉字位型图的地址送给寄存器,dh和dl分别表示汉字的其实的第一个点在屏幕上的行列的坐标,call指令用于子程序调用,分别调用move_shape1和Amust_2子程序,进行读点和写点。leadi,dongmovdh,7movdl,17callmove_shape1callAmust_2在move_shape1子程序中,和Amust_2子程序中,char_cntl是指字符,pointer1表示颜色,line_on1为行坐标,col_on1为列坐标。movchar_cnt1,cxmovpointer1,dimovline_on1,dhmovcol_on1,dl名字的显示效果如图4-2所示。图4-2名字显示结果4.2颜色变化功能模块武汉理工大学《微机原理与接口技术》课程设计说明书10颜色变化功能实际上就是将名字用其他颜色重新写一遍,将原来的文字覆盖,因此可实现文字颜色变化,本程序用的是重新定义数据段的方法,将每个字符重新定义,还有一种方法是使用函数,将每个字符代表字符颜色的部分同时加减一个数,便可实现变色功能。文字变色的显示结果如图4-3所示。图4-3文字变色显示结果4.3条纹清屏与文字闪烁功能模块程序通过从右向左将名字显示覆盖,即达到清除屏幕显示的名字的效果。若将调用的延迟程序调的快一些,还可以达到文字闪烁的效果,在这里提一下,实现文字闪烁的功能也可以通过改变定义数据段中文字的属性实现,程序模块如下:Aeraseprocnearmovcx,char_cnt1movdi,pointer1movdh,line_on1movdl,col_on1Aerase_next:adddh,[di+2]adddl,[di+3]cmpdl,2jeAleftmovah,2int10hmovah,8int10hcmpal,40h武汉理工大学《微机原理与接口技术》课程设计说明书11jeAexitx2cmpal,02ahjeAexitx2jmpAexitx3Aexitx2:decAcount0jneAexitx3movAcount0,11Aexitx3:cmpAcount1,1jeAexit0moval,'*'movbl,03hjmpAexit7Aexit0:moval,'*'movbl,0Aexit7:pushcxmovcx,1movah,9int10hpopcxcmpAcount0,11jneAerase_nextadddi,4loopAerase_nextdeccol_on1movcx,char_cnt1movdi,pointer1movdh,line_on1movdl,col_on1Aleft:retAeraseendpcol_onl代表的是列坐标,每次循环经过deccol_onl就可以实现的列坐标自减1的功能,从而使得条纹字符从右向左而来,经过除所有字符都变为“*”。显示效果如图4-4所示。武汉理工大学《微机原理与接口技术》课程设计说明书12图4-4条纹清屏的显示效果4.4按Q/q键退出功能模块该设计要求在程序运行过程中,按下Q或q键能够推出程序,因此在程序中加入了退出功能模块,首先判断有没有字符输入,没有就跳转
本文标题:微机原理霓虹灯显示程序课程设计
链接地址:https://www.777doc.com/doc-3153990 .html