微机原理课设霓虹灯的模拟显
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.设计意义与要求
1.1设计意义
通过课程设计,能够对所学知识有更进一步的理解,并能掌握学习理论时没有注意的细节。调试程序,排除故障有助于提高分析问题、解决问题的能力。课程设计中碰到的挫折,有助于养成良好的学习习惯、严谨的工作作风。
通过此课程设计的汇编语言练习,可以熟悉汇编语言的寻址方式和指令系统,BIOS和DOS系统功能调用,程序设计方法并熟悉汇编的编程环境。
1.2设计要求
设计内容:采用汇编语言设计一个在屏幕中央以$字符显示一矩形,并以#将矩型从上之下、从左至右填满;然后再按相反的次序消失的程序。按Q退出程序
设计要求:
(1)设计任务及要求分析
(2)方案比较及认证说明
(3)系统原理阐述
(4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释
(5)调试记录及结果分析
(6)总结
(7)参考资料
(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图
2方案论证
2.1方案比较
在设计过程中字符的显示有2中不同的方式。
方案一:运用DOS功能的2号调用,程序的设计如下
MA ROW,COLUME ;MA是个宏定义光标位置
MOV AH,02H
MOV DL,’#’
INT 21H
在本程序中,显示方式很简洁很直观很容易记忆理解。但是它无法设置字符的属性,同时还会在下个坐标位置显示光标,影响光看者的视觉享受。
方案二:运用BIOS功能的9号调用,程序设计如下
CALL CURSOR ;调用光标设置子程序
MOV AL,23H
MOV BL,0BH
PUSH CX
MOV CX,1
MOV AH,09H
INT 10H
POP CX
这个程序设计起来占用寄存器较多,略微复杂点,但是它的功能更加完备,更能实现霓虹灯的颜色变化显示效果,给人一种美感。
2.2方案选择
从上面的分析比较可知方案二的可行性和实际达到的效果更好。所以选则方案二实现霓虹灯的功能。
3系统原理阐述
3.1设计思路
(1) 执行程序时显示一个欢迎界面,提示按大写S键进入显示界面
(2) 执行程序这部分程序运用的主要原理是先在屏幕上显示个字符$(#)号,再执行循环,语句显示一行(列)$(#)字符。利用像这样的原理实现矩形框的完成和内部的填充。至于反向消失部分,用空格代替想要显示的字符,反向执行循环,就可以实现字符的消失了。
(3) 霓虹灯显示完毕,提示输入Q退出界面。
3.2程序中的BIOS和DOS功能调用
3.2.1 BIOS功能调用
(1) 设置光标位置(2号功能)
入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号。
出口参数:无。根据DX确定了光标位置。
(2) 初始窗口或向上滚动(6号功能)
入口参数:AH=6,AL=上滚行数,CX=上滚窗口左上角的行、列号。DX=上滚窗口右下角的行、列号。BH=空白行的属性。
出口参数:无。当滚动后,底部为空白输入行
(3) 在当前光标位置写字符和属性(9号功能)
入口参数:AH=9,BH=页号,AL=字符的ASCII码,BL=字符属性,CX=写入字符数。
出口参数:无。
3.2.2 DOS功能调用
(1) 键盘输入一个字符并回显(1号功能)
输入参数无,返回结果AL=字符
(2) 显示字符串,光标跟谁字符串移动(9号功能)
DS:DX=待显字符串的首地址字符串以‘$’结尾。
(3) 显示一个字符,光标跟随字符移动(2号功能)
DL=待显字符的ASCII码,无返回结果。
3.3.程序模块
(1) 宏定义光标位置
MA MACRO OP1,OP2 ;宏定义光标位置
PUSH AX ;现场保护
PUSH BX
MOV AH,02H
MOV BH,0 ;页号
MOV DH,OP1 ;行号
MOV DL,OP2 ;列号
INT 10H
POP BX
POP AX
ENDM
这个子程序的重点是设计光标所在页、行、列及其现场保护。使用了BIOS 功能调用设置光标的位置。
(2) 清屏子程序
CLEAR PROC NEAR ;清屏
MOV AH,06H
MOV AL,0
MOV CH,0
MOV CL,0
MOV DH,24
MOV DL,79
MOV BH,07H
INT 10H
RET
CLEAR ENDP
初始化窗口,AL=0表示全屏滚动,CH=滚动窗口左上角行号,CL=滚动窗口左上角列号,DH=滚动窗口右下角行号,DL=滚动窗口右下角列号,BH=滚入行的属性。
(3) 光标的设置
CURSOR PROC NEAR ;光标的设置
MOV AH,02H
MOV BH,0
MOV DH,ROW ; 设置行
MOV DL,COLUME ;设置列
INT 10H
RET
CURSOR ENDP
光标位置的设置,这个子程序与宏定义光标位置类似只是运用有些不同。(4) 延时子程序
DELAY1 PROC NEAR
PUSH CX
PUSH DX
MOV DX,100
D3: MOV CX,500
D4: LOOP D4
DEC DX
JNZ D3
POP DX
POP CX
RET
DELAY1 ENDP
这个子程序写法的关键是现场保护(即进栈出栈),内外两个循环的设计。延时程序的主要目的是可以让我们清楚的看到字符在屏幕上的显示过程。
4.软件思想与流程图
4.1程序功能描述
程序开始,进行清屏,显示欢迎界面。按键输入,如果输入S就执行霓虹灯模拟显示在屏幕中央以$字符显示一矩形,并以#将矩型内部从上往下、从左至右填满;然后再按相反的次序消失的程序,否则就继续等待输入。霓虹灯模拟显示程序执行完后,显示退出提示,等待Q的输入,如果输入为Q就退出程序,否则就继续等待输入。