霓虹灯模拟显示课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
霓虹灯模拟显示课程设计
1.设计任务及要求分析
本次课程设计要求用汇编语言设计“霓虹灯”模拟显示,需要实现的功能如下:1、按下b/B键,分六笔快速画出矩形及其两条对角线;2、按下y/Y 键,流水灯从左到右依次点亮,然后一次熄灭;3、按下q/Q键,退出程序。分析本设计不需要硬件设备,在微机原理实验集成环境MF2KP中编写程序,调用DOS命令和BIOS命令,并用合适的字符代替霓虹灯来实现。
1方案论证
2.1方案一
我们可以采用编写延时子程序的方法来实现延时,这种方法的主要原理是运用计算机相应每一条的时间积累。程序如下:
push bx
push cx
mov cx ,xx ;输入正数
A1:
mov bx,xx ;输入正数
A2:
dec bx
Jnz A1
Loop A2
pop cx
pop bx
此方案的原理是运用循环指令来进行,主要通过设置cx和bx的值来进行复循环,从而达到时间的积累即延时。
2.2方案二
方案二:运用DOS功能调用。采用21H来中断调用,功能号为AH=2CH,完成的功能是设置时间,DH的值变换一次是0.01秒,这样通过设置DH的值来设
置时间的延时。
2.3方案比较
两种方案在理论上都是可行的,但是课程设计任务在时间要求上不是很严格
只要区分快慢的大概效果既可,故选择方案一。
3设计原理
3.1设计思想
本次课程设计主要中显示图案是通过显示单个字符逐步实现的,通过移动光标可以改变字符输出的位置,位置的改变又是通过宏定义定义了一个程序段用于改变光标,设计了两个变量分别为光标在屏幕上的行和列坐标,把已经设计好了的图案的行列坐标分别定义在数据段的行列数据组里,用指针自加的方式进行连续调用显示。在显示中插入延时程序控制显示的效果。本次课程设计设计了二个延时程序分别满足二种不同的延时需要。延时程序是通过LOOP循环来实现的,可以改变CX的值来改变延时的长短。本次课设还涉及到清屏功能,故设计了一个清屏子程序,通过BIOS功能的调用实现清屏,和屏幕属性的设置。
整个程序分为三部分:第一段是继续与否的选择,检查输入是否为设计的字符b/B,是则进入下一程序断,否则继续检测;第二段是快速显示设计图案,通过光标移动逐步显示完预设图案,并询问是否进入下一程序段,检查输入是否为字符y\Y,是则进入下一程序段,否则跳回第二段程序重复执行一遍;第三段程序以较慢速度依次出现“*”,以实现模拟流水灯的效果,然后一次消失,在这个过程中检查是否有“q/Q”输入,有则跳转到中止程序段退出程序,否则继续。
3.2程序中用到的DOS功能调用
(1)01H号功能调用(中断指令int 21h)
功能:从键盘输入1个字符
输入参数:无
输出参数:AL=ASCII码
(2)02H号功能调用(中断指令int 21h)
功能:在屏幕上显示1个字符(ASCII码)
输入参数:DL=ASCII码
输出参数:无。
(3)09H号功能调用(中断指令int 21h)
功能:多字符输出到屏幕显示
输入参数:DS:DX=输出字符缓冲区首地址
输出参数:无
该功能对输出字符的个数没有要求,但输出字符串要以‘$’结束。
(4)4CH号功能调用(中断指令int 21h)
功能:返回操作系统4CH
调用:MOV AH,4CH
3.3程序中用到的BIOS功能调用
1)功能01H调用(中断指令int 16h)
功能描述:检测键盘
输出参数:ZF=1 无码可读
ZF=0 输入于AX中
2)功能02H调用(中断指令int 10h)
功能描述:用文本坐标下设置光标位置
入口参数:AH=02H
BH=页号
DH=行坐标
DL=列坐标
出口参数:无
3)功能06H调用(中断指令int 10h)
功能描述:初始化屏幕或滚屏
入口参数:AH=06H向上滚屏,AH=07H向下滚屏
AL=滚动行数(0,清窗口)
BH=空白区域的缺省属性
(CH、CL)=窗口的左上角坐标(X、Y)
(DH、DL)=窗口的右下角坐标(X、Y)
出口参数:无
4.程序设计流程图
程序流程图如下图所示,分为主程序流程图和子程序流程图。主程序流程图如图4—1所示;置光标宏定义流程图如图4—2所示;延时子程序流程图如图4—3所示;字符显示流程图如图4—4所示。
开
系统初
是否有g输入缓慢显示提示字
是否有y输入
入栈保
系统初赋AX、BX、
闪烁图案
出栈恢是否有esc入
结
图4—1主流程图图4—2置光标宏定义
图4—3延时子程序流程图图4—4显示字符程序段流程图
本次课程设计用到了二个不同大小的延时效果,故在延时程序中改变CX的赋值来改变延时长短。清屏子程序流程图与置光标宏定义类似只需改变相应寄存器赋值和调用中断号即可。显示图案时分部分显示连续的字符就能达到显示整个图案的效果。
5.主要程序分析
5.1设置光标的宏定义
程序如下:
MA macro op1,op2
push ax;保存数据
push bx
mov ah,02h
mov bh,0
mov dh,op1 ;光标纵坐标
mov dl,op2 ;光标横坐标
int10h