霓虹灯的模拟显示程序要点Word格式文档下载.docx
《霓虹灯的模拟显示程序要点Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《霓虹灯的模拟显示程序要点Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
目录
1.引言1
2.设计任务及要求分析1
2.1设计内容:
1
2.2设计要求与分析:
2
3.方案比较及认证说明2
3.1清屏函数方案2
3.1.1方案说明2
3.1.2方案比较及论证4
3.2字符的显示方案4
3.2.1方案说明4
3.2.2方案比较及论证4
3.3方案选择5
4.系统原理阐述5
4.1设计思路5
4.2程序中的BIOS和DOS功能调用5
4.2.1BIOS功能调用5
4.2.2DOS功能调用6
4.3程序模块6
5.硬件设计课题说明8
6.软件设计课题说明10
6.1程序功能描述10
6.2流程图10
7.调试记录及结果分析13
7.1调试过程13
7.2调试结果14
7.3调试中出现的问题及解决方法16
8.总结16
9.参考资料16
10.附录源程序清单17
“霓虹灯”的模拟显示程序
1.引言
霓虹灯的千变万化是装点人们生活的不二之选,我们可以通过汇编语言对霓虹灯的闪烁进行控制,实现霓虹灯闪烁的任意控制。
通过本学期对《微机原理与接口技术》的学期,我掌握了汇编语言的基本应用。
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言,汇编语言对于硬件的控制具有独特的优势。
本次课程设计通过汇编语言,实现霓虹灯的控制与操作,实现其显示与闪烁,或者是其他的动态变化,从而可以很方便的达到理想效果。
INT10H是BIOS中断调用的第10H功能的简写在基于,对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在INT10H内。
汇编语言的INT10号中断提供了设置显示模式、设置颜色模式、设置光标位置、按指定属性显示字符等功能,可以显示汉字或图像,同时也提供了初始化屏幕或滚屏等功能号,通过擦除子程序以及清屏子程序的配合运用,可以达到让汉字或图像闪烁或运动的功能。
而文字的显示我们又可以通过取模软件轻松获得,这使得整个编译过程轻松了很多,同时可以让文字或图标的显示更加规范和多样化,达到霓虹灯多样变化的目的。
本次微机原理与接口技术课程设计是要设计一个“霓虹灯”的模拟显示程序。
本次课程设计用的是8086最小系统,在MF2KI汇编集成环境下完成。
该课程的总体任务是一个接一个的执行的,属于单任务顺序结构,所以该任务主要用汇编语言进行顺序和循环的逻辑结构编写。
2.设计任务及要求分析
(1)设计任务及要求分析
(2)方案比较及认证说明
(3)系统原理阐述
(4)硬件设计课题需要说明:
(5)软件设计课题需要说明:
(6)调试记录及结果分析
(7)总结
(8)参考资料
(9)附录:
首先根据课设题目的要求找出需要调用的各个DOS和BIOS调用,然后对程序中最重要的DOS调用和BIOS调用进行的方案比较。
之后根据课设题目要求设计整个顺序结构的程序框架,然后运用模块化的设计思想,将题设要求分成几个小的模块,一段一段的设计程序。
然后分段对程序进行编写和调试,当各个模块调试好后,再整体调试。
最后观察整体程序结构的现象,进行总结并对某些部分进行完善。
在本课设里,我在完成任务之外,在程序的开始加了一个欢迎界面,这样在程序结果的演示中给人一种美感。
3.方案比较及认证说明
3.1清屏函数方案
3.1.1方案说明
方案一:
运用BIOS功能的7号调用,程序设计如下
CLEARPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
MOVAH,07;
屏幕初始化或下卷
MOVAL,25;
下卷行数
MOVBH,0F0H;
卷入行属性
MOVCH,0;
左上角行号
MOVCL,0;
左上角列号
MOVDH,24;
右下角行号
MOVDL,79;
右下角列号
INT10H
POPDI
POPSI
POPDX
POPCX
POPBX
POPAX
RET
CLEARENDP
方案二:
运用BIOS功能的6号调用,程序设计如下
CLEARPROCNEAR
MOVAH,06H
MOVAL,0
MOVCH,0
MOVCL,0
MOVDH,24
MOVDL,79
MOVBH,07H
INT10H
3.1.2方案比较及论证
在第一个程序中,使用的寄存器较多,操作较为复杂。
但是清屏时可以将DOS窗口背景改为白色,这便于截图与报告的撰写。
第二个程序操作起来相对简单,但是只能让屏幕背景为黑色。
3.2字符的显示方案
3.2.1方案说明
运用DOS功能的2号调用,程序的设计如下
MAROW,COLUME;
MA是个宏定义光标位置
MOVAH,02H
MOVDL,’@’
INT21H
运用BIOS功能的9号调用,程序设计如下
CALLCURSOR;
调用光标设置子程序
MOVAL,23H
MOVBL,0BH
PUSHCX;
CX进栈
MOVCX,1
MOVAH,09H
POPCX;
CX出栈
3.2.2方案比较及论证
方案一无法设置字符的属性,同时还会在下个坐标位置显示光标,影响光看者的视觉享受。
但是显示方式很简洁很直观很容易记忆理解,若要配合背景为白色,选择该方案为好。
方案二功能更加完备,更能实现霓虹灯的颜色变化显示效果,但是设计起来占用寄存器较多,略微复杂点,其设置的背景只能为黑色。
3.3方案选择
从上面的分析比较,清屏函数方案一和显示字符方案一搭配起来的可行性和实际达到的效果更好。
所以选择清屏函数方案一和显示字符方案一来实现霓虹灯的功能。
4.系统原理阐述
4.1设计思路
(1)执行程序时显示一个欢迎界面,提示按大写S键进入显示界面
(2)执行程序这部分程序运用的主要原理是先在屏幕上显示个字符@(*)号,再执行循环,语句显示一行(列)@(*)字符。
利用像这样的原理实现矩形框的完成和内部的填充。
至于反向消失部分,用空格代替想要显示的字符,反向执行循环,就可以实现字符的消失了。
(3)霓虹灯显示完毕,提示输入Q退出界面。
4.2程序中的BIOS和DOS功能调用
4.2.1BIOS功能调用
(1)设置光标位置(2号功能)
入口参数:
AH=2(功能号),BH=页号,DH=行号,DL=列号。
出口参数:
无。
根据DX确定了光标位置。
(2)初始窗口或向上滚动(6号功能)
AH=6,AL=上滚行数,CX=上滚窗口左上角的行、列号。
DX=上滚窗口右下角的行、列号。
BH=空白行的属性。
当滚动后,底部为空白输入行
(3)初始窗口或向下滚动(7号功能)
AH=7,AL=下滚行数,CX=下滚窗口左上角的行、列号。
DX=下滚窗口右下角的行、列号。
当滚动后,顶部为空白输入行。
(4)在当前光标位置写字符和属性(9号功能)
AH=9,BH=页号,AL=字符的ASCII码,BL=字符属性,CX=写入字符数。
4.2.2DOS功能调用
(1)键盘输入一个字符并回显(1号功能)
输入参数无,返回结果AL=字符
(2)显示字符串,光标跟谁字符串移动(9号功能)
DS:
DX=待显字符串的首地址字符串以‘$’结尾。
(3)显示一个字符,光标跟随字符移动(2号功能)
DL=待显字符的ASCII码,无返回结果。
4.3程序模块
(1)宏定义光标位置
MAMACROOP1,OP2;
宏定义光标位置
PUSHAX;
现场保护
PUSHBX
MOVAH,02H
MOVBH,0;
页号
MOVDH,OP1;
行号
MOVDL,OP2;
列号
POPBX
POPAX
ENDM
这个子程序的重点是设计光标所在页、行、列及其现场保护。
使用了BIOS功能调用设置光标的位置。
(2)清屏子程序
CLEARPROCNEAR;
清屏
PUSHAX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
MOVAH,07;
MOVAL,25;
MOVBH,0F0H;
MOVCH,0;
MOVCL,0;
MOVDH,24;
MOVDL,79;
POPDI
POPSI
POPDX
POPCX
RET
初始化窗口,AL=0表示全屏滚动,CH=滚动窗口左上角行号,CL=滚动窗口左上角列号,DH=滚动窗口右下角行号,DL=滚动窗口右下角列号,BH=滚入行的属性。
(3)光标的设置
CURSORPROCNEAR;
光标的设置
MOVBH,0
MOVDH,ROW;
设置行
MOVDL,COLUME;
设置列
RET
CURSORENDP
光标位置的设置,这个子程序与宏定义光标位置类似只是运用有些不同。
(4)延时子程序
DELAY1PROCNEAR
MOVDX,100
D3:
MOVCX,65530
D4:
LOOPD4
DECDX
JNZD3
DELAY1ENDP
这个子程序写法的关键是现场保护(即进栈出栈),内外两个循环的设计。
延时程序的主要目的是可以让我们清楚的看到字符在屏幕上的显示过程。
5.硬件设计课题说明
本设计采用8086最小系统,8086CPU引脚介绍如下:
⑴AD15~AD0(addressdatabus):
地址/数据总线,双向,三态。
⑵A19/S6~A16/S3(address/status):
地址/状态信号,输出,三态。
⑶BHE(低)/S7(bushighenable/status):
允许总线高8位数据传送/状态信号,输出,三态。
⑷RD/(read):
读信号,输出,三态,低电平有效。
⑸READY(ready):
准备就绪信号,输入,高电平有效。
⑹INTR(in