霓虹灯模拟显示课程设计.doc_第1页
霓虹灯模拟显示课程设计.doc_第2页
霓虹灯模拟显示课程设计.doc_第3页
霓虹灯模拟显示课程设计.doc_第4页
霓虹灯模拟显示课程设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.设计任务及要求分析 本次课程设计要求用汇编语言设计“霓虹灯”模拟显示,需要实现的功能如下:1、按下b/B键,分六笔快速画出矩形及其两条对角线;2、按下y/Y键,流水灯从左到右依次点亮,然后一次熄灭;3、按下q/Q键,退出程序。分析本设计不需要硬件设备,在微机原理实验集成环境MF2KP中编写程序,调用DOS命令和BIOS命令,并用合适的字符代替霓虹灯来实现。1 方案论证2.1方案一 我们可以采用编写延时子程序的方法来实现延时,这种方法的主要原理是运用计算机相应每一条的时间积累。程序如下:push bxpush cxmov cx ,xx ;输入正数A1:mov bx,xx ;输入正数A2:dec bx Jnz A1Loop A2pop cxpop bx此方案的原理是运用循环指令来进行,主要通过设置cx和bx的值来进行复循环,从而达到时间的积累即延时。2.2方案二 方案二:运用DOS功能调用。采用21H来中断调用,功能号为AH=2CH,完成的功能是设置时间,DH的值变换一次是0.01秒,这样通过设置DH的值来设置时间的延时。2.3方案比较 两种方案在理论上都是可行的,但是课程设计任务在时间要求上不是很严格只要区分快慢的大概效果既可,故选择方案一。3设计原理3.1 设计思想 本次课程设计主要中显示图案是通过显示单个字符逐步实现的,通过移动光标可以改变字符输出的位置,位置的改变又是通过宏定义定义了一个程序段用于改变光标,设计了两个变量分别为光标在屏幕上的行和列坐标,把已经设计好了的图案的行列坐标分别定义在数据段的行列数据组里,用指针自加的方式进行连续调用显示。在显示中插入延时程序控制显示的效果。本次课程设计设计了二个延时程序分别满足二种不同的延时需要。延时程序是通过LOOP循环来实现的,可以改变CX的值来改变延时的长短。本次课设还涉及到清屏功能,故设计了一个清屏子程序,通过BIOS功能的调用实现清屏,和屏幕属性的设置。 整个程序分为三部分:第一段是继续与否的选择,检查输入是否为设计的字符b/B,是则进入下一程序断,否则继续检测;第二段是快速显示设计图案,通过光标移动逐步显示完预设图案,并询问是否进入下一程序段,检查输入是否为字符yY,是则进入下一程序段,否则跳回第二段程序重复执行一遍;第三段程序以较慢速度依次出现“*”,以实现模拟流水灯的效果,然后一次消失,在这个过程中检查是否有“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,4CH3.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.程序设计流程图 程序流程图如下图所示,分为主程序流程图和子程序流程图。主程序流程图如图41所示;置光标宏定义流程图如图42所示;延时子程序流程图如图43所示;字符显示流程图如图44所示。开始提示字符显示 系统初始化入栈保存数据 是否有g输入系统初始化缓慢显示图案 赋AX、BX、CX、DX 是否有y输入入调用中断置光标闪烁图案 出栈恢复数据 是否有esc入 结束图41主流程图 图42置光标宏定义 LOOP 循环SI、DI自加给CX赋值SI=行字符串首地址DI=列字符串首地址调用置光标程序段光标处输出*出栈恢复数据ZF=1?DX自减LOOP循环CX赋值DX赋值入栈保存数据图43延时子程序流程图 图44显示字符程序段流程图 本次课程设计用到了二个不同大小的延时效果,故在延时程序中改变CX的赋值来改变延时长短。清屏子程序流程图与置光标宏定义类似只需改变相应寄存器赋值和调用中断号即可。显示图案时分部分显示连续的字符就能达到显示整个图案的效果。5. 主要程序分析5.1设置光标的宏定义程序如下:MA macro op1,op2push ax ;保存数据push bxmov ah,02hmov bh,0mov dh,op1 ;光标纵坐标mov dl,op2 ;光标横坐标int 10hpop bxpop axEndm 该宏定义主要是调用功能02H(中断指令“INT 10H”)来确定光标的位置的。该定义的主要功能首先是指定位置来完成字符或*的显示与消失。5.2时间延迟程序程序如下: waiting_1 proc near push cx push dx mov dx,0ffh dll: mov cx,65500 dl2: loop dl2 dec dx jnz dll pop dx pop cx retwaiting_1 endpwaiting_2 proc near push cx push dx mov dx,0fffh d2l: mov cx,65500 d22: loop dl2 dec dx jnz dll pop dx pop cx retwaiting_2 endp本题目中需要两种不同的延迟,通过改变dx的值来大致控制时间的长短。6. 程序调试显示6.1矩形及其对角线的显示 程序运行之初,首先在屏幕上出现提示字符“please input b to begin”如图61所示,按下b/B键,屏幕上以较快速度分六笔画出矩形及其对角线,并由提示符“please input y to chose”如图62所示。 图61 初始提示字符 图62 矩形及其对角线的显示 6.2流水灯的运行 根据提示符,按下Y/y键,屏幕和字符的颜色会变化,用*号代替灯来流水灯的效果,如图63所示,然后依次熄灭,并出现提示符“please q to quit”如图64。最后根据提示符,按下Q/q键,退出程序。 如图63 流水灯出现 64图 流水灯消失7.心得体会 两周的课程设计就这样匆匆结束,感觉时间很快,但是本次课程设计让我学到了很多东西。首先,通过对这程序的制作,加深了我对课本知识的理解和掌握,使我对汇编语言的基本知识的使用更加熟练,同时也让我学到了新的知识,如DOS命令和BIOS命令的调用,让我大胆编写程序,实现自己想要的功能。其次,在这次课程设计,需要与同学充分交流,加强团结合作的技巧。通过查阅以下资料如课本以及网络也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。此外,通过这个课程设计,让我切实的体会到了微机原理的重要性,同时增强了我的学习兴趣,然我发现,实际生活的常用知识都来自于我们所学的课本基础知识。 本次课程设计是一个综合的程序,平时的很多程序都用到了。很多子程序的设计是固定的,因此可以直接从指导资料中调用,大多只需要修改几个参数就可以,这大大方便了我们的设计,为我们节省了很多的时间。 特别之处的是,通过本次霓虹灯模拟显示的课程设计,我掌握了关于DOS和BIOS中断功能调用,如颜色显示,屏幕属性,字符输入输出,字符串输入输出等。通过综合程序编写的联系,学会了编写相对复杂程序的基本方法步骤。由于和同学相互交流学习,加强了合作能力,当要用到一些完全陌生的知识时需要独立去查询资料,加强了自学能力。 以上心得体会势必对我以后的学习和工作大有帮助,衷心感谢学校给我们这个宝贵的学习机会和老师的耐心指导!参考资料1 齐志儒、高福祥.汇编语言程序设计.沈阳:东北大学出版,20012 刘均、周苏、金海荣.汇编语言程序设计实验教程.北京:科学出版社,20093 周佩玲、彭虎、傅忠谦.微机原理与接口技术.北京:电子工业出版社,20054 方立友.微机原理与汇编语言实用教程.北京:清华大学出版社,20075 凌志浩.微机原理与接口技术.上海:华东理工大学出版社,20066 朱世鸿.微机系统和接口应用技术.北京:清华大学出版社,2006 附录程序清单如下所示:MA macro op1,op2push ax ;保存数据push bxmov ah,02hmov bh,0mov dh,op1 ;光标纵坐标mov dl,op2 ;光标横坐标int 10hpop bxpop axendmdata segmentinfo_1 db please input b to began,0dh,0ah,$info_2 db please input y to choose another way,0dh,0ah,$info_3 db please q to quit,0dh,0ah,$hang_1 db 8,8,8,8,8,8,8,8,8,8 db 8,9,10,11,12,13,14,15,16,17 db 17,17,17,17,17,17,17,17,17,17 db 17,16,15,14,13,12,11,10,9,8,7hang_2 db 8,9,10,11,12,13,14,15,16,17 db 8,9,10,11,12,13,14,15,16,17hang_3 db 14,14,14,14,14,14,14lie_1 db 35,36,37,38,39,40,41,42,43,44 db 44,44,44,44,44,44,44,44,44,44, db 44,43,42,41,40,39,38,37,36,35 db 35,35,35,35,35,35,35,35,35,35lie_2 db 35,36,37,38,39,40,41,42,43,44 db 44,43,42,41,40,39,38,37,36,35lie_3 db 30,32,34,36,38,40,42 count db 8clour db 0f7hdata endscode segment assume ds:data,cs:code;*清屏子程序* clear_screen proc near push ax push bx push cx push dx mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h pop dx pop cx pop bx pop ax ret clear_screen endp;*延迟子程序* waiting_1 proc near push cx push dx mov dx,0ffh dll: mov cx,65500 dl2: loop dl2 dec dx jnz dll pop dx pop cx retwaiting_1 endpwaiting_2 proc near push cx push dx mov dx,0fffh d2l: mov cx,65500 d22: loop dl2 dec dx jnz dll pop dx pop cx retwaiting_2 endpstart: mov ax,data mov ds,ax xor ax,ax xor bx,bx xor cx,cx xor dx,dx mov ah,02h ;置光标位子 mov bh,0 ;BH=页数 mov dh,0 ;DHDL=行列数 mov dl,0 int 10hinfo: lea dx,info_1 ;提示字符输出 mov ah,9 int 21h mov ah,01h int 21h cmp al,b ;输入字符检查是否为g/G je xianshi_1 ;是则跳转到xianshi_1 cmp al,B ;否则跳回info重新检查 je xianshi_1 jmp info;*方式一显示程序*xianshi_1: mov ah,06h ;屏幕初始化 mov bh,29H ;卷入行属性 mov cx,0 ;左上角行列坐标(0,0) mov dx,1850h ;右下角行列坐标(80,80) int 10h lea si,hang_1 ;取hang_1,lie_1字符串的首地址 lea di,lie_1 mov cx,40 ;cx赋值确定循环次数 loop_1: MA si,di ;调用宏定义移动光标 mov dl, mov ah,02 ;在光标处显示输出* int 21h inc si ;指针自加 inc di MA 0,0 ;移动光标 call waiting_1 ;延时 loop loop_1 ;循环loop_1xianshi_2: ;显示图案第二部分 lea si,hang_2 lea di,lie_2 mov cx,20loop_2: MA si,di mov dl, mov ah,02 int 21h inc si inc di MA 0,0 call waiting_1 loop loop_2 lea dx,info_2 ;方式选择提示 mov ah,9 int 21h mov ah,01h int 21h cmp al,y ;检查输入字符是否为y/Y je liushui ;是,则跳转到liushui cmp al,Y ;否,则跳转到xianshi_1 je liushui call clear_screen ;调用清屏程序 jmp xianshi_1;*流水灯

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论