微机课设霓虹灯显示程序.doc_第1页
微机课设霓虹灯显示程序.doc_第2页
微机课设霓虹灯显示程序.doc_第3页
微机课设霓虹灯显示程序.doc_第4页
微机课设霓虹灯显示程序.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

学 号: 0121411371305课 程 设 计题 目霓虹灯显示程序设计学 院自动化学院专 业自动化卓越工程师班 级自动化ZY1402姓 名潘江宝指导教师李道远2016年12月2日课程设计任务书学生姓名: 潘江宝 _ 专业班级: 自动化ZY1402 指导教师: 李道远 工作单位: 自动化学院 题 目: 显示姓名字样的程序 初始条件:编写显示“自己姓名”字样的程序,每隔1秒钟变一次颜色(变三次)。按Q退出程序。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6) 调试记录及结果分析(7) 总结(8) 参考资料(9) 附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:11月20日11月23日:收集资料,方案选择11月23日11月30日:整体流程,程序细节,调试程序12月1日12月7日: 课程设计报告撰写12月8日:交报告,程序演示,答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要IABSTRACTII1设计任务及要求分析11.1设计任务目的分析11.2具体要求分析12方案比较及认证说明22.1方案设计22.2方案选择23 系统原理阐述34 设计思路及汇编程序44.1 主程序设计44.2 子程序yanse1设计54.3 子程序disp的设计54.4 子程序delay的设计64.5 退出程序及中断指令调用64.6 源程序代码75调试记录及结果分析17总结20参考文献21微机原理与接口技术课程设计说明书摘要随着现代科学技术的发展,计算机的应用越来越广泛,软件技术应用于生活的各个领域。而软件的开发离不开编程,因此,微机原理与接口技术的应用也更加深入了。微机原理课程设计,目的在于检测我们这一学期微机原理课程学习的成果,加深我们对汇编语言中各种指令的理解与应用,提高我们动脑思考、动手操作的能力。最后通过emu8086仿真软件编译运行来实现设计要求。本次微机课设,要求设计一个显示自己姓名字样的程序,通过编写汇编程序,学习子程序的编写与调用,以及BIOS和DOS中断指令的调用,掌握基本的编程方法,实现用字符点阵显示汉字并能实现颜色变换,完成设计要求,锻炼自己的能力。关键字:汇编 子程序 中断ABSTRACTWith the development of modern science and technology, the application of the computer is more and more widely. Software technique is applied to all areas of life. And software development cannot leave the programming, Therefore, the application of microcomputer principle and interface technology are also more deeply. Microcomputer principle curriculum design, the purpose is to test the findings of our microcomputer principle course this semester, to deepen our understanding of all kinds of instructions in assembly language and application, and improve our brain thinking and hands-on ability. At last, by using emu8086 simulation software compile operation to achieve the design requirements.This computer classes set to design a display name on your programs, by writing assembler, learning to write and call subroutine, and call the BIOS and DOS interrupt instruction. Mastering the basic programming methods, realizing the character dot matrix display Chinese characters and be able to achieve color transformation, to complete the design requirements, exercise their abilities.Keywords: assembly subroutine interruptI微机原理与接口技术课程设计说明书1设计任务及要求分析1.1设计任务目的分析通过课程设计任务书明确本次设计要求是通过汇编编程,在屏幕上能够显示“自己姓名”的字样,并能够实现在一定时间间隔后变换一次颜色,共需要变色三次,最后按Q或q键退出程序,根据实际调试过程完成课程设计报告。1.2具体要求分析对课程设计任务书的要求进行具体分析,大致可以分成四个模块实现功能要求:显示模块、变色模块、延时模块以及退出程序模块。显示模块可以实现在屏幕上输出“自己姓名”的字样,即显示“潘江宝”三个字;变色模块可以实现将显示的名字从一种颜色转换到另一种颜色;延时模块可以保证一种颜色显示完成后,在进行下一次变色之前有一定的时间间隔;退出模块是在完成主要功能后显示提示信息,并根据用户按键退出程序的模块。通过上述分析,将程序分成若干模块可以使程序更加具有条理性,同时分模块编程及调试方便我们对程序的修改。根据实际要求,编写好各模块程序后,通过主程序的调用和相应的中断指令完整的实现设计要求,即在屏幕上显示“孟德辉”三个字,并能够变换颜色三次,完成实验报告。172方案比较及认证说明2.1方案设计通过对设计要求的认真分析,主要提出以下两种可行方案。方案一:在数据段进行定义。用字符构造出“潘江宝”字样存入数据段缓存区中,在主程序运行时直接调用输出到屏幕上,再通过设置文本与背景颜色进行颜色之间的转换,达到设计要求。其优点是可以快速输出,快速变色;但其缺点是若要输出的文字过多,在数据段定义比较麻烦,而且需要占用较多的缓存。方案二:利用字模软件产生“潘江宝”三个字的字模,将字模数据定义到数据段中,在程序运行中调用响应的字模数据循环输出,可以实现在屏幕上显示由字符组成的汉字。方案二的优点是设计方法简单,占用缓存较小,可以输出较多的汉字;其缺点是输出速度慢,颜色转换过程也比较繁琐。2.2方案选择通过分析比较,虽然方案一在本次课程设计中设计更简单,但方法不具有普遍性,不够使用;尽管方案二较方案一运行速度慢,但可操作性好,所以在本次课程设计中采用方案二进行相关的设计,以下将对方案二进行详细的说明。3 系统原理阐述本次课程设计题目较简单,设计思路及方法比较简单,但过程比较繁琐,主要是运用本学期微机原理课程学习的知识,用基本的汇编语句进行屏幕输出显示以及变色等功能。程序主要以显示模块为主,再辅助以颜色设置、光标设置等中断指令,实现字符的输出构成汉字文字。完成一次显示后,通过改变寄存器BL的值改变输出颜色,将光标移动到起始位置再次进行一次输出,但是颜色不同。如此循环三次,完成主要的设计要求,然后根据提示信息输入退出程序。在程序设计中,显示、延时等模块主要有子程序完成,主程序就比较简单,这样设计可以使程序的条理性更加清晰,方便调试。 微机原理与接口技术课程设计说明书4 设计思路及汇编程序4.1 主程序设计根据程序设计要求及方案分析,首先对屏幕进行初始化设置,然后对数据段的相关数据进行调用。程序的主要流程是将数据段中pan字在屏幕的输出起始地址送给SI,将字模数据的偏移地址送给寄存器BL,然后调用子程序yanse1将第一种颜色的pan字输出到屏幕上;用同样的方式输出jiang字和bao字。第一次显示完成后,经过一段延时,用上述同样的方法依次调用子程序yanse2进行第二次输出,调用子程序yanse3进行第三次输出,调用子程序yanse4进行第四次输出。三次变色完成后,屏幕上将出现提示信息:按Q或q退出程序。程序运行完成,基本实现设计要求。在子程序调用改变颜色的过程中,四个子程序基本相同,只是输出颜色有所不同。主程序流程图见图1. 图1 主程序流程图4.2 子程序yanse1设计由主程序的设计可以看出,子程序yanse2、yanse3、yanse4与子程序yanse1基本相同,只是颜色赋值不同,这里只对子程序yanse1进行详细说明,其余的跟这个相同。根据字模点阵的设计,本次课程设计一个汉字采用的是1616的点阵,该子程序的设计主要是对行循环的设计,程序中调用的子程序disp是对列循环的设计。图2 子程序yanse1的流程图子程序yanse1的设计过程主要是设置循环次数16,将字模第一行的数据送给bx,然后调用子程序disp,指针到下一行的数据位置,判断是否循环完成16次,若完成返回主程序,否则继续循环,直到一个汉字点阵的16行输出完成。 子程序yanse1的流程图见图2.4.3 子程序disp的设计对于1616的汉字字模点阵,每一行都有16个点,要对每个点的输出状态进行判断就要循环十六次。每一行的字模数据在计算机内是以16位二进制数保存的,每进行一次循环,对此二进制数左移一位,判断CF标志位是1还是0,若是1则输出*,是0则输出空格,这样就可以保证每一个点的输出状态。依次循环16次,完成一行的输出,然后取下一行的数据进行循环输出,从而实现一个完整汉字的输出。图3 子程序disp的流程图子程序diap的流程图见图3.4.4 子程序delay的设计该延时程序采用的是bx,cx双重循环耗时,同时给bx,cx赋值可以提高延时时间,但由于程序运行较慢,在实际调试过程中,bx,cx赋值都很小,节约运行时间。子程序delay的流程图见图4.图4 子程序delay的流程图4.5 退出程序及中断指令调用程序退出指令比较简单,主要是调用DOS中断的21h中断指令,实现程序退出。退出指令的流程图见图5.在本次课程设计中,主要用到的中断指令是BIOS的10h中断与DOS的21h中断:1)int 10h的2号功能图5 退出指令的流程图入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号。 出口参数:无。根据DX确定了光标位置。2)int 21h的9号功能格式:LEADX,待显示字符串首偏移地址MOVAH,9INT21H功能:将当前数据区中以结尾的字符串送显示器显示。 3)int 21h的4ch号功能格式:MOVAH,4CH INT21H功能:终止当前程序并返回调用程序4.6 源程序代码data segment qs1 dw 10h+0*0aah ;字符输出位置 qs2 dw 40h+0*0a0h qs3 dw 70h+0*0a0h pan db 0x00,0x78,0x27,0xC0,0x12,0x48,0x11,0x50,0x87,0xFC,0x41,0x50,0x42,0x48,0x14,0x06,0x13,0xF8,0x22,0x48,0xE2,0x48,0x23,0xF8,0x22,0x48,0x22,0x48,0x23,0xF8,0x02,0x08;/*潘,0*/ jiang db 0x00,0x00,0x20,0x00,0x17,0xFC,0x10,0x40,0x80,0x40,0x40,0x40,0x48,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0xE0,0x40,0x20,0x40,0x20,0x40,0x2F,0xFE,0x20,0x00,0x00,0x00;/*江,1*/ bao db 0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x00,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x20,0x01,0x10,0xFF,0xFE,0x00,0x00;/*宝,2*/ exit1 db input Q or q to exit $data endsSTACK SEGMENT PARA STACK STACK DB 100 DUP(0)STACK ENDScode segment assume cs:code,ss:stack,ds:data ;确定各个逻辑段的类型main proc farstart: push ds ;初始化设置 xor ax,ax push ax mov ax,data mov ds,ax xianshi: ;显示字和变换颜色 push ds ;入栈保护数据 MOV AX,0B800H ;写显存显示 MOV ES,AX MOV SI,QS1 MOV BX,OFFSET pan ;把pan的偏移地址给bx call yanse1 ;调用子程序 MOV SI,QS2 MOV BX,OFFSET jiang ;把jiang的偏移地址给bx call yanse1 MOV SI,QS3 MOV BX,OFFSET bao ;把bao的偏移地址给bx call yanse1 pop ds call delay push ds MOV AX,0B800H ;写显存显示 MOV ES,AX MOV SI,QS1 MOV BX,OFFSET pan call yanse2 ;换一个颜色 MOV SI,QS2 MOV BX,OFFSET jiang call yanse2 MOV SI,QS3 MOV BX,OFFSET bao call yanse2 pop ds call delay push ds MOV AX,0B800H ;写显存显示 MOV ES,AX MOV SI,QS1 MOV BX,OFFSET pan call yanse3 ;换一个颜色 MOV SI,QS2 MOV BX,OFFSET jiang call yanse3 MOV SI,QS3 MOV BX,OFFSET bao call yanse3 pop ds call delay push ds MOV AX,0B800H ;写显存显示 MOV ES,AX MOV SI,QS1 MOV BX,OFFSET pan call yanse4 ;换一个颜色 MOV SI,QS2 MOV BX,OFFSET jiang call yanse4 MOV SI,QS3 MOV BX,OFFSET bao call yanse4 pop ds call delay mov ah,2 mov dx,1501h int 10h lea dx,exit1 mov ah,9 int 21h x: mov ax,0c07h int 21h cmp al,Q jz exit cmp al,q jz exit loop xdelay proc near ;延时子程序 push cx push bx mov bx,0001h ;bx,cx双重循环耗时 wait0: mov cx,000fh wait1: loop wait1 dec bx jnz wait0 pop bx pop cx retdelay endp yanse1 PROC NEAR MOV CX,16 ;每次读入2字节,需读16次 (共32字节) N1: MOV AX,BX XCHG AH,AL CALL DISP INC BX INC BX ADD SI,0A0H-32 ;下一行 LOOP N1 retyanse1 ENDPDISP PROC NEAR ;每次显示2个字节共16位,循环16次 PUSH CX MOV CX,16 N2: ROL AX,1 JC DISP1 MOV DL, JMP DISP_K DISP1: MOV DL, * DISP_K: MOV ES:SI,DL MOV DL,01 ;颜色属性 INC SI MOV ES:SI,DL INC SI LOOP N2 POP CX RETdisp endpyanse2 PROC NEAR ;只换了颜色 MOV CX,16 ;每次读入2字节,需读16次 (共32字节) N3: MOV AX,BX XCHG AH,AL CALL DISP12 INC BX INC BX ADD SI,0A0H-32 ;下一行 行 LOOP N3 retyanse2 ENDPDISP12 PROC NEAR ;每次显示2个字节共16位,循环16次 PUSH CX MOV CX,16 N4: ROL AX,1 JC DISP2 MOV DL, JMP DISP_O DISP2: MOV DL,* ;属性 DISP_O: MOV ES:SI,DL MOV DL,04 ;属性 INC SI MOV ES:SI,DL INC SI LOOP N4 POP CX RETdisp12 endp yanse3 PROC NEAR ;只换了颜色 MOV CX,16 ;每次读入2字节,需读16次 (共32字节) N5: MOV AX,BX XCHG AH,AL CALL DISP13 INC BX INC BX ADD SI,0A0H-32 ;下一行 行 LOOP N5 retyanse3 ENDPDISP13 PROC NEAR ;每次显示2个字节共16位,循环16次 PUSH CX MOV CX,16 N6: ROL AX,1 JC DISP3 MOV DL, JMP DISP_3 DISP3: MOV DL,* ;属性 DISP_3: MOV ES:SI,DL MOV DL,07 ;属性 INC SI MOV ES:SI,DL INC SI LOOP N6 POP CX RETdisp13 endpyanse4 PROC NEAR ;只换了颜色 MOV CX,16 ;每次读入2字节,需读16次 (共32字节) N7: MOV AX,BX XCHG AH,AL CALL DISP14 INC BX INC BX ADD SI,0A0H-32 ;下一行 行 LOOP N7 retyanse4 ENDPDISP14 PROC NEAR ;每次显示2个字节共16位,循环16次 PUSH CX MOV CX,16 N8: ROL AX,1 JC DISP4 MOV DL, JMP DISP_4 DISP4: MOV DL,* ;属性 DISP_4: MOV ES:SI,DL MOV DL,0ah ;属性 INC SI MOV ES:SI,DL INC SI LOOP N8 POP CX RETdisp14 endpexit proc near mov ah,4ch int 21h retexit endp code endsend start5调试记录及结果分析第一遍显示结果如图6.图6 第一次显示结果第二次输出变色为红色,如图7.图7 第二次显示结果 第二次变色为白色,如图8.图8 第三次输出结果 第三次变成绿色及提示信息如图9.图9 第四次输出结果根据提

温馨提示

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

评论

0/150

提交评论