




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书学生姓名: 专业班级:指导教师: 工作单位: 题目:“霓虹灯”的模拟显示程序初始条件:在屏幕中央以符显示一矩型,并以*将矩型内部由下到上,从 中央到两边填满;然后再按相反的次序消失。按 Q退出程序。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件 的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图 T
2、OC o 1-5 h z 引言 1设计任务及要求分析. 1 HYPERLINK l bookmark0 o Current Document 设计内容: . 1 HYPERLINK l bookmark2 o Current Document 设计要求与分析: 2方案比较及认证说明 . 2 HYPERLINK l bookmark4 o Current Document 清屏函数方案 2方案说明 2方案比较及论证 4字符的显示方案 4方案说明 4方案比较及论证 4 HYPERLINK l bookmark6 o Current Document 方案选择 5系统原理阐述 5 HYPERLINK
3、 l bookmark8 o Current Document 设计思路 . 5 HYPERLINK l bookmark10 o Current Document 程序中的BIOS和DO财能调用 5BIOS 功能调用 5DOS 功能调用 6 HYPERLINK l bookmark12 o Current Document 程序模块 6硬件设计课题说明 8软件设计课题说明 10 HYPERLINK l bookmark18 o Current Document 程序功能描述 10 HYPERLINK l bookmark20 o Current Document 流程图 10调试记录及结果分
4、析13 HYPERLINK l bookmark30 o Current Document 调试过程 13 HYPERLINK l bookmark32 o Current Document 调试结果 14 HYPERLINK l bookmark34 o Current Document 调试中出现的问题及解决方法 16总结 16参考资料 16附录 源程序清单17“霓虹灯”的模拟显示程序引言霓虹灯的千变万化是装点人们生活的不二之选, 我们可以通过汇编语言对霓虹灯的闪烁进行控制,实现霓虹灯闪烁的任意控制。通过本学期对 微机原理与接口技术的学期, 我掌握了汇编语言的基本应用。汇编语言是一种功能很
5、强的程序设计语言, 也是利用计算机所有硬件特性并能直接控制硬件的语言, 汇编语言对于硬件的控制具有独特的优势。 本次课程设计通过汇编语言, 实现霓虹灯的控制与操作,实现其显示与闪烁, 或者是其他的动态变化, 从而可以很方便的达到理想效果。INT 10H是BIOS中断调用的第10H功能的简写在基于,对屏幕及显示器所提供的服务程序, 而后倚天公司针对倚天中文提供了许多服务程序, 这些服务程序也加挂在INT 10H 内。汇编语言的 INT 10号中断提供了设置显示模式、设置颜色模式、设置光标位置、按指定属性显示字符等功能,可以显示汉字或图像,同时也提供了初始化屏幕或滚屏等功能号, 通过擦除子程序以及
6、清屏子程序的配合运用, 可以达到让汉字或图像闪烁或运动的功能。 而文字的显示我们又可以通过取模软件轻松获得, 这使得整个编译过程轻松了很多, 同时可以让文字或图标的显示更加规范和多样化 , 达到霓虹灯多样变化的目的。本次微机原理与接口技术课程设计是要设计一个 “霓虹灯” 的模拟显示程序。本次课程设计用的是8086 最小系统,在 MF2KI 汇编集成环境下完成。 该课程的总体任务是一个接一个的执行的, 属于单任务顺序结构, 所以该任务主要用汇编语言进行顺序和循环的逻辑结构编写。设计任务及要求分析设计内容:在屏幕中央以 字符显示一矩型,并以 *将矩型内部由下到上,从中央到两边填满;然后再按相反的次
7、序消失。按Q 退出程序。设计要求与分析:1)设计任务及要求分析2)方案比较及认证说明3)系统原理阐述4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释6)调试记录及结果分析7)总结8)参考资料9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图首先根据课设题目的要求找出需要调用的各个DO印口 BIOS调用,然后对程序中最重要的DOSW用和BIOS调用进行的方案比较。之后根据课设题目要求设 计整个顺序结构的程序框架, 然后运用模块化的设计思想, 将题设要求分成几个 小的模块,一段一段的设计程序。 然后分段对程序进行编
8、写和调试, 当各个模块 调试好后,再整体调试。 最后观察整体程序结构的现象, 进行总结并对某些部分 进行完善。在本课设里,我在完成任务之外,在程序的开始加了一个欢迎界面, 这样在程序结果的演示中给人一种美感。方案比较及认证说明清屏函数方案方案说明方案一:运用 BIOS 功能的 7号调用,程序设计如下CLEAR PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIMOV AH,07;屏幕初始化或下卷MOV AL,25; 下卷行数MOV BH,0F0H;卷入行属性MOV CH,0;左上角行号MOV CL,0; 左上角列号MOV DH,24;右下角行
9、号MOV DL,79;右下角列号INT 10HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETCLEAR ENDP方案二:运用 BIOS 功能的 6号调用,程序设计如下CLEAR PROC NEARMOV AH,06HMOV AL,0MOV CH,0MOV CL,0MOV DH,24MOV DL,79MOV BH,07HINT 10HRETCLEAR ENDP方案比较及论证在第一个程序中,使用的寄存器较多,操作较为复杂。但是清屏时可以将DOS 窗口背景改为白色,这便于截图与报告的撰写。第二个程序操作起来相对简单,但是只能让屏幕背景为黑色。字符的显示方案方案说明方案
10、一:运用 DOS 功能的 2 号调用,程序的设计如下MA ROW,COLUME ;MA 是个宏定义光标位置MOV AH,02HMOV DL, INT 21H方案二:运用 BIOS 功能的 9号调用,程序设计如下CALL CURSOR ;调用光标设置子程序MOV AL,23HMOV BL,0BHPUSH CX; CX 进栈MOV CX,1MOV AH,09HINT 10HPOP CX ; CX 出栈方案比较及论证方案一无法设置字符的属性, 同时还会在下个坐标位置显示光标, 影响光看者的视觉享受。 但是显示方式很简洁很直观很容易记忆理解, 若要配合背景为白色,选择该方案为好。方案二功能更加完备,
11、更能实现霓虹灯的颜色变化显示效果,但是设计起来占用寄存器较多,略微复杂点,其设置的背景只能为黑色。方案选择从上面的分析比较, 清屏函数方案一和显示字符方案一搭配起来的可行性和实际达到的效果更好。 所以选择清屏函数方案一和显示字符方案一来实现霓虹灯 的功能。系统原理阐述设计思路( 1)执行程序时显示一个欢迎界面,提示按大写S 键进入显示界面(2)执行程序这部分程序运用的主要原理是先在屏幕上显示个字符( * )号,再执行循环,语句显示一行(歹U) (*)字符。利用像这样的原理实现矩形 框的完成和内部的填充。至于反向消失部分, 用空格代替想要显示的字符, 反向 执行循环,就可以实现字符的消失了。(3
12、)霓虹灯显示完毕,提示输入 Q退出界面。程序中的BIOS和DO阳能调用BIOS 功能调用1)设置光标位置(2 号功能)入口参数:AH=2 (功能号),BH二页号,DHi1号,DL=3J号。出口参数:无。根据DX 确定了光标位置。2)初始窗口或向上滚动( 6 号功能)入口参数:AH=6 , AL=上滚行数,CX二上滚窗口左上角的行、列号。 DX二 上滚窗口右下角的行、列号。BH= 空白行的属性。出口参数:无。当滚动后,底部为空白输入行3)初始窗口或向下滚动( 7 号功能)入口参数:AH=7, AL=下滚行数,CX=下滚窗口左上角的行、列号。 DX= 下滚窗口右下角的行、列号。 BH= 空白行的属
13、性。出口参数:无。当滚动后,顶部为空白输入行。4)在当前光标位置写字符和属性( 9 号功能)入口参数:AH=9, BH=页号,AL=字符的ASCII码,BL=字符属性,CX=写入字符数。出口参数:无。4.2.2 DOS功能调用( 1)键盘输入一个字符并回显(1 号功能)输入参数无,返回结果 AL=字符( 2)显示字符串,光标跟谁字符串移动(9 号功能)DS:DX=待显字符串的首地址字符串以$结尾。( 3)显示一个字符,光标跟随字符移动(2 号功能)DL二待显字符的ASCII码,无返回结果。4.3 程序模块1)宏定义光标位置MA MACRO OP1,OP2PUSH AXPUSH BXMOV AH
14、,02HMOV BH,0MOV DH,OP1MOV DL,OP2;宏定义光标位置;现场保护;页号;行号;列号INT 10HPOP BXPOP AXENDM这个子程序的重点是设计光标所在页、行、列及其现场保护。使用了功能调用设置光标的位置。( 2)清屏子程序CLEAR PROC NEAR;清屏PUSH AXBIOSPUSH BXPUSH CXPUSH DXPUSH SI;屏幕初始化或下卷 ; 下卷行数 ; 卷入行属性 ;左上角行号 ; 左上角列号;右下角行号 ; 右下角列号PUSH DIMOV AH,07MOV AL,25MOV BH,0F0HMOV CH,0MOV CL,0MOV DH,24M
15、OV DL,79INT 10HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETCLEAR ENDP初始化窗口,AL=0表示全屏滚动,CH=滚动窗口左上角行号,CL=滚动窗 口左上角列号,DH=滚动窗口右下角行号,口1=滚动窗口右下角列号,BH二滚入 行的属性。( 3)光标的设置CURSOR PROC NEAR ;光标的设置MOV AH,02HMOV BH,0MOV DH,ROW ; 设置行MOV DL,COLUME ;设置列INT 10HRETCURSOR ENDP光标位置的设置,这个子程序与宏定义光标位置类似只是运用有些不同。4)延时子程序DELAY1 PROC
16、NEARPUSHCXPUSHDXMOVDX,100D3:MOVCX,65530D4:LOOPD4DECDXJNZD3POPDXPOPCXRETDELAY1 ENDP这个子程序写法的关键是现场保护(即进栈出栈),内外两个循环的设计。延时程序的主要目的是可以让我们清楚的看到字符在屏幕上的显示过程。硬件设计课题说明本设计采用8086最小系统,8086CPU6唧介绍如下:AD15AD0(address data bus ):地址/数据总线,双向,三态。A19/S6A16/S3 (address/status ):地址/状态信号,输出,三态。BHE(低)/S7 (bus high enable/stat
17、us ):允许总线高 8位数据传送/ 状态信号,输出,三态。RD/(read):读信号,输出,三态,低电平有效。READYready):准备就绪信号,输入,高电平有效。 INTR( interrupt request ):可屏蔽中断请求信号,输入,高电平有效。TEST/(test ):等待测试控制信号,输入,低电平有效。NMI (non-maskable interrupt ):非屏蔽中断请求信号,输入,高电平 有效。RESET reset ):复位信号,输入,高电平有效。(10)CLK(clock ):时钟信号,输入。(11) VCC电源输入引脚。(12)GND接地引脚。(13)MN/MX/
18、(minimum/maximum :最小/最大模式输入控制信号。当引脚接高电平时,CPU工作于最小模式。此时,引脚信号 2431的含义 及其功能如下。IO/M/ (memory I/O select ):存储器、I/O端口选择控制信号。WR/(write ):写信号,输出,低电平有效。INTA/ (interrupt acknowledge):可屏蔽中断响应信号,输出,低电平 有效。ALE (address lock enable ):地址锁存允许信号,输出,高电平有效。DT/ (data transmit or receive ):数据发送/接收信号,输出,三态DEN/ (data enab
19、le ):数据允许控制信号,输出,三态,低电平有效。HOLD (bus hold request ):总线保持请求信号,输入,高电平有效。引才口飞北HT用匚 TTAL*力卜宾RT盟jgR很旧曲SAM2J2hJ?l73胤 Fn口HLDA(hold acknowledge ):总线保持响应信号,输出,高电平有效。丁底叫Hd, mHM4 ;,丁.尸y 一Tll7|Wlj:-FRPAM1 :itt*$ premier S to ontei* *&nd then pres Q to exit ?*MADE BY Bao Gang*图7开始页面(2)输S后,程序执行过程中,在屏幕上显示矩形框、填充及消失如
20、下:e8向G :Ma5mb in BDV/Temp.exe图8布矩形阵F黑)GnDWT图9填充过程G:Ma smb in-.DrVT fm p. eke图10反向消失过程(4)提示输Q退出界面如下:fl to exit ?7.3 调试中出现的问题及解决方法问题 1:寄存器不够用怎么办?解决方法: 这是由于程序结构复杂,使用了太多寄存器,可以定义外部变量来解决。问题 2:寄存器值变化多端怎么办?解决方法:使用堆栈进行现场保护。使用时应注意push,pop 的成对使用,不要遗忘 pop 同时还要注意堆栈的先入后出的规律。总结通过这次的课程设计,让我对一学期所学的知识进行了回顾,同时通过查阅书籍和网
21、上的资料获得了很多新的知识。在学期初开始学微机原理与接口技术这一门课时,我就觉得比较吃力,这是是一门很抽象的学科, 学起来也比较乏味。不仅需要我们对知识理解, 更重要的是要将芯片已经编程指令集熟练记忆和应用。 在这次课程设计中, 让我巩固了以前学过的一些基本的指令; 更加学习掌握了汇编语言的一些基本的中断调用功能。在开始设计时, 我毫无头绪,所以我选择在网上搜集相关资料进行学习,通过对往届学长学姐所做的设计的学习,我确定了运用中断调用进行设计的方向,认真研究学习了汇编语言一些基本的中断调用。 读懂原有程序并在其基础上进行修改。在调试过程中,我不断对程序进行修改、改进,增强了自己分析问题、解决问
22、题的能力; 也让自己发现了自己存在的一些错误以及一些调试时应注意的问题, 同时也更深的理解了寄存器、 存储器等工作原理以及一些指令执行后对它们的改变,例如INT指令会改变AL的值,在编程时应注意这方面的问题。总之, 这次课程设计我锻炼了动手能力,熟悉了汇编的编程环境,并巩固了课程相关知识,收益很多。实践出真知,在课程设计中不忘在小处创新,希望在下一次课程设计中能有更大的突破!参考资料汤书森 . 微机原理接口技术实验于实践教程 . 北京:清华大学出版社,20082余朝琨.IBM-PC汇编语言程序设计.北京:机械工业出版社.2008宋江 . 微机原理与接口技术 . 北京:机械工业出版社. 2005
23、金泉涌 . 微型计算机应用经验汇编 . 北京:清华大学出版社, 20075沈美玲.IBM-PC汇编语言程序设计.北京:清华大学出版社,1993吴耿峰 . 十六位微型计算机原理接口及应用 . 北京:高等教育出版.2004戴梅萼 . 微型计算机技术与应用 . 北京:清华大学出版社. 1992罗省贤汇编语言程序设计教程北京:电子工业出版社, 2004吴向军汇编语言程序设计北京:高等教育出版社,2008附录 源程序清单宏定义光标位置页号 行 列MA MACRO OP1,OP2PUSH AXPUSH BXMOV AH,02HMOV BH,0MOV DH,OP1MOV DL,OP2INT 10HPOP B
24、XPOP AXENDMSTACK SEGMENT PARA STACK Stack ; 定义数据段STACK ENDSDATASEG SEGMENT PARDAata; 定义堆栈段ROW DB ?COLUME DB ?COUNT DB ?COUNT1 DB ?CT DB ?MENU DB1*1,0dh,0ahDB *,0dh,0ahDB * welcome you !*,0dh,0ahDB *,0dh,0ahDB * programme of displalying neon lamp *,0dh,0ahDB *,0dh,0ahDB * please press S to enter *,0d
25、h,0ahDB * and then press Q to exit ! *,0dh,0ahDB * MADE BY Bao Gang *,0dh,0ahDBI*$BUF DB press Q to exit ! $ DATASEG ENDSCODESEG SEGMENT PARA CodeASSUME SS:STACK,DS:DATASEG,CS:CODESEGMAIN PROC FARMOV AX,DATASEGMOV DS,AXCALL CLEAR;调用清屏子程序MA 8,0; 欢迎界面的出现位置WAT0: LEA DX,MENU;输入A进入霓虹灯显示MOV AH,9INT 21HMOV
26、 AH,1INT 21HCMP AL,SCALL CLEAR;如果输入的不是S就清屏MA 8,0JNZ WAT0PUSH AX;入栈PUSH BXPUSH CXPUSH DXMOV ROW,23; 完成矩形框的左竖行MOV COLUME,0LOP3: CALL CURSOR; 调用设置光标位置MOV AL,40H;把#的 ASCII 码传递给 ALMOV BL,0BH;设置字符属性PUSH CX;入栈MOV CX,1;字符显示 1 次MOV AH,09HINT 10HPOP CX; 出栈CALL DELAY1; 调用延时DEC ROW;行坐标减 1CMP ROW,0 ; 若行坐标大于0就跳转到
27、 lop3 否则执行下个程序JNZ LOP3MOV ROW,0MOV COLUME,0; 完成矩形框的上行LOP1: CALL CURSORMOV AL,40HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC COLUMECMP COLUME,79JNZ LOP1MOV ROW,0MOV COLUME,79; 完成矩形框的右竖行LOP2: CALL CURSORMOV AL,40H;完成 的输出MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC
28、ROWCMP ROW,23JNZ LOP2MOV ROW,23MOV COLUME,79;完成矩形框的下横行LOP4: CALL CURSORMOV AL,40HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC COLUMECMP COLUME,0JNZ LOP4; 到此矩形框已完成MOV COUNT1,22;矩形框内部填充LOP6: MOV COUNT,39MOV CH,39MOV CL,40LOP5: MA COUNT1,CH;填充左半段MOV DL,*MOV AH,02HINT 21HMA COUNT1,CL填充
29、右半段MOV AL,*MOV BL,0BH PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC CHINC CLDEC COUNTCMP COUNT,0JA LOP5DEC COUNT1CMP COUNT1,0JNZ LOP6MOV CT,1LOP8: MOV COUNT,39MOV CH,1MOV CL,78LOP7: MA CT,CHMOV AL, MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXMA CT,CL MOV DL, MOV AH,02HINT 21HCALL DELAY1IN
30、C CHDEC CLDEC COUNTCMP COUNT,0JNZ LOP7INC CTCMP CT,23JNZ LOP8MOV CL,1LOP10: MA CL,0设置行的初值为 1 反向消失内部内循环次数显示空格设置光标位置消失矩形框左竖行MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CXCALL DELAY1INC CLCMP CL,23 JNZ LOP10 MOV CL,0LOP9: MA 23,CL MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CXCALL DELAY1 INC CLCMP CL,79 JNZ LOP9 MOV CL,23LOP11: MA CL,79 MOV AL, MOV BL,0B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年项目管理真题模拟试题及答案
- 理财中的法律合规性分析试题及答案
- 证券投资生态变化的典型案例考题及答案
- 高效阅读材料准备2025年注册会计师考试试题及答案
- 证券从业资格的核心试题及答案
- 完整注册会计师考试框架试题及答案
- 针对园艺师考试的个性化备考计划试题及答案
- 2025年内部审计知识试题及答案
- 农业职业经理人考试难点及解答试题及答案
- 油炸食品制造业中的食品安全与产业链协同考核试卷
- 大班游戏活动案例《快乐沙池》
- 糖尿病饮食指导护理
- DB41T 1633-2018 排油烟设施清洗服务规范
- 连续梁线型控制技术交底
- 林业专业知识考试试题及答案
- 高三英语语法填空专项训练100(附答案)及解析
- T-CPQS C017-2024 鉴赏收藏用潮流玩偶衍生产品 树脂类艺术品
- 山东省烟台市2024-2025学年高二地理下学期期中试题
- 美的公司存货管理存在的问题及研究对策
- 2024年共青团入团积极分子考试题库(含答案)
- 初中英语非连续性文本的阅读策略分析
评论
0/150
提交评论