微机原理霓虹灯显示程序课程设计(共35页).doc
《微机原理霓虹灯显示程序课程设计(共35页).doc》由会员分享,可在线阅读,更多相关《微机原理霓虹灯显示程序课程设计(共35页).doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上霓虹灯显示程序设计1设计内容及要求要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1用汇编语言编写一个霓虹灯的模拟显示程序;2在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出;3撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。2程序原理分析本次设计实现的是霓虹灯的模拟显示,在80*25大小的屏幕上显示由各种字符组成的不同图形,在屏幕上,0行0
2、列相对于屏幕左上角的位置,24行79列相对于右下角的位置。对应显示屏幕上的每个字符,在存储器中又连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。在屏幕上处理字母、数字以及一些字符图形称为文本方式。在文本方式下,属性字节对单色显示和彩色显示都是有效的。本程序采用的是彩色字符显示,在显示彩色文本时,属性字节能够选择前景和背景的颜色。每个字符可以选择16种颜色中的一种,背景色有8种颜色可以选择。图1-1是16色文本方式显示的属性字节。表1-1列出了16色字符方式颜色的组合。76543210BLRGBIRGB闪烁前景背景图1-1 16色方式下的属性字节表1-1 16种颜色的组合
3、颜色IRGB颜色IRGB颜色IRGB颜色IRGB黑0000灰1000红0100浅红1100蓝0001浅蓝1001品红0101浅品红1101绿0010浅绿1010棕0110黄1110青0011浅青1011灰白0111白1111本程序主要运用了BIOS显示中断类型10H的部分功能,主要有用到以下几个功能:置光标:AH=02 BH=页号 DH=行 DL=列读光标:AH=03显示字符串:AH=13H AL=01H ;光标跟随移动ES:BP=串地址 CX=串长度 DH,DL=起始行列 BH=页号 BL=属性即程序通过INT 10H2号功能的调用置光标位置,3号功能的调用读光标的位置,以及13号功能的调用
4、显示字符串。并通过顺序、循环结构程序的调用进行图形的霓虹灯效果显示。程序的数据段以字符串的形式来表示,可以很方便的直接运用INT 10H中的13号功能即显示字符串功能显示图形,这样一来程序得到了很大的简化,但同时,图形的显示是以字符串的形式,即以行的依次顺序逐渐出像在屏幕上,在字符串一次出现的同时,通过调用相应的子程序改变图形显示的颜色属性,以及不断变换显示图形的形状。同时由于微机处理速度较快,不容易一次看到图形变化,则需要在程序中添加延迟程序作为子程序不断被调用用以减缓显示速度,方便肉眼观察到图形变换效果。延迟程序中,由于寄存器CX存储有限,不能达到合适的延迟程度,故应采用循环结构的子程序来
5、进行延迟操。专心-专注-专业3 程序流程图3.1 主程序流程图定义数据段,然后将代码段程序初始化,然后调用13号功能显示字符串组成的董德军三个字 ,再调用条纹显示子程序,显示运动的条纹,判断是否输入Q,若输入Q,则程序结束,退出程序,否则,执行跳转命令,继续调用汉字显示程序和条纹显示程序。主程序结构流程图如图2-1开始Y数据段初始化调用汉字显示程序以不同颜色重复显示名字“董德军”N调用条纹显示子程序,显示运动的条纹是否输入Q/q?Y结束图3-1 主程序结构流程图3.2 子程序结构流程图3.2.1名字显示子程序流程图按照要求要显示出自己的名字,因此,运用多个字符组成,并按照笔画顺序显示出来,结构
6、流程图如图3-2所示。 开始Y N判断CX中内容是否为0? CX出栈,保存循环次数CX入栈 保存组成点的基本信息 寄存器入栈CX寄存器清零 在指定坐标处写第一个点 CX中内容自减1寄存器出栈 结束 图3-2 名字显示子程序流程图3.2.2擦除子程序流程图 在显示完名字并进行变色以后,将使用竖条纹对屏幕进行擦出,擦除以后若没有检测到字符Q的输入,则进行循环,继续显示名字,并在此进行擦出,擦出子程序流程图如图3-3所示。开始N NNYY 结束保存点的基本信息列坐标dl自减1将字符改为*将字符写11个判断指定位置处字符是否为?判断是否到达屏幕最左端?保存组成点的基本信息判断指定位置处字符是否为*?
7、图3-3 擦除子程序流程图 4 程序主要模块功能分析4.1名字显示功能模块如何使用ASCII码显示自己的中文名字是这次课程设计的关键之处,为了达到霓虹灯的效果,我采用各种字符组合,来组成名字的形状,为了达到更美观的效果,在这里,借助一个字符画转换软件,名字为ASCIIArtStudioASCII,该软件是用来创建ASCII字符画的软件,可以像使用画笔一样创建 ASCII 字符画。还支持将图片转换为字符画,以及保存成文本或图片文件等功能。首先我使用画图工具将自己的名字打出来,并转化为图片格式,如图4-1所示。图4-1 使用绘图工具得到宋体的中文名字然后运行ASCIIArtStudioASCII软
8、件,点击菜单栏文件,选择将图片转换为ASCII ART一项,读出图片,点击转换,将图片转化为字符画,所得字符画如图4-2所示。图4-2 名字的ASCII码组成然后按照每一个字符的坐标方位在80*25大小的屏幕上显示由各种字符组成的文字,在屏幕上,0行0列相对于屏幕左上角的位置,24行79列相对于右下角的位置。对应显示屏幕上的每个字符,在存储器中又连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。在屏幕上处理字母、数字以及一些字符图形称为文本方式。在文本方式下,属性字节对单色显示和彩色显示都是有效的。在彩色显示器里,如 CGA、EGA、VGA 等,常用一个字节 ( 8 个位
9、 ) 来表示文字颜色和背景颜色,通常以第 03 位表示文字本身颜色;第 46 位表示背景颜色,背景颜色只有上表左栏的 8 种而已;第 7 个位,表示是否闪烁,0 表示不闪烁,1 表示闪烁。每个字符由四种属性组成,第一项为字符种类,如61h代表字符“a”,第二项为字符的颜色,如Oah代表绿色,第三项为字符相对于前一个字符的行坐标,第四项为该字符对于上一个字符的列坐标,这样只要定义了第一个字符在屏幕中的位置,那么就能将整个汉字显示出来。以下为第一个汉字“董”所定义的数据段。dong db 130 db 61h,0ah,0,0 db 12 dup(a,0ah,0,1) db 30h,0ah,0,1
10、db &,0ah,0,1 db ,0ah,-1,-9 db n,0ah,0,1 db J,0ah,1,-1 db &,0ah,0,1 db ,0ah,1,-1 db f,0ah,0,1 db 26h,0ah,-2,4 db 26h,0ah,1,0 db !,0ah,1,0 db ,0ah,0,1 db g,0ah,0,1 db 22h,0ah,1,0 db 7eh,0ah,0,-1 db 7eh,0ah,0,-1 db M,0ah,0,-1 db 0,0ah,0,-1 db M,0ah,0,-1 db *,0ah,0,-1 db v,0ah,0,-1 db a,0ah,0,-1 db 61h,
11、0ah,0,-1 db 61h,0ah,1,-2 db 12 dup(a,0ah,0,1) db 30h,0ah,0,1 db e,0ah,0,1 db 5dh,0ah,2,-12 db 36h,0ah,0,1 db 5dh,0ah,1,-1 db M,0ah,0,1 db 5dh,0ah,1,-1 db L,0ah,0,1 db _,0ah,-3,0 db 7 dup(_,0ah,0,1) db j,0ah,0,1 db B,0ah,1,0 db #,0ah,1,0 db #,0ah,1,0 db 7eh,0ah,-1,-7 db 6 dup(,0ah,0,1) db 61h,0ah,1,-
12、6 db 6 dup(a,0ah,0,1) db 26h,0ah,-4,-3 db 7 dup(&,0ah,1,0) db P,0ah,-4,0 db 8,0ah,3,0 db !,0ah,0,-6 db ,0ah,0,1 db 4 dup(,0ah,0,1) db ,0ah,0,2 db 4 dup(,0ah,0,1) db ,0ah,-1,0 db 27h,0ah,3,-12 db 14 dup(27h,0ah,0,1) db ,0ah,-1,0 db _,0ah,0,-1显示名字的的过程如下面程序段所示,其中前三句是将汉字位型图的地址送给寄存器,dh和dl分别表示汉字的其实的第一个点在屏
13、幕上的行列的坐标,call指令用于子程序调用,分别调用move_shape1和 Amust_2子程序,进行读点和写点。 lea di,dong mov dh,7 mov dl,17 call move_shape1 call Amust_2在move_shape1子程序中,和Amust_2子程序中,char_cntl是指字符,pointer1表示颜色,line_on1为行坐标,col_on1为列坐标。 mov char_cnt1,cx mov pointer1,di mov line_on1,dh mov col_on1,dl名字的显示效果如图4-2所示。 图4-2名字显示结果4.2颜色变化功
14、能模块颜色变化功能实际上就是将名字用其他颜色重新写一遍,将原来的文字覆盖,因此可实现文字颜色变化,本程序用的是重新定义数据段的方法,将每个字符重新定义,还有一种方法是使用函数,将每个字符代表字符颜色的部分同时加减一个数,便可实现变色功能。文字变色的显示结果如图4-3所示。图4-3 文字变色显示结果4.3条纹清屏与文字闪烁功能模块程序通过从右向左将名字显示覆盖,即达到清除屏幕显示的名字的效果。若将调用的延迟程序调的快一些,还可以达到文字闪烁的效果,在这里提一下,实现文字闪烁的功能也可以通过改变定义数据段中文字的属性实现,程序模块如下:Aerase proc near mov cx,char_cn
15、t1 mov di,pointer1 mov dh,line_on1 mov dl,col_on1 Aerase_next: add dh,di+2 add dl,di+3 cmp dl,2 je Aleft mov ah,2 int 10h mov ah,8 int 10h cmp al,40h je Aexitx2 cmp al,02ah je Aexitx2 jmp Aexitx3 Aexitx2: dec Acount0 jne Aexitx3 mov Acount0,11 Aexitx3: cmp Acount1,1 je Aexit0 mov al,* mov bl,03h jmp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 霓虹灯 显示 程序 课程设计 35
限制150内