




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学 号: 12微机原理及接口技术课程设计题 目霓虹灯的模拟显示学 院 自动化专 业电气工程及其自动化班 级电气1206班姓 名刘佳指导教师李道远2014年12月20日课程设计任务书学生姓名: 刘佳 专业班级: 电气1206班 指导教师: 李道远 工作单位: 自动化学院 题 目: “霓虹灯”的模拟显示 初始条件:在屏幕中央以字符显示一矩型,按F键以*将矩型内部由上到下,从左到右填满;按R键以相反的次序消失。按Q退出程序。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 硬件设计课题需要
2、说明:硬件原理,电路图,采用器件的功能说明(5) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6) 调试记录及结果分析(7) 总结(8) 参考资料(9) 附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录1.设计意义与要求11.1设计意义11.2设计要求12方案论证22.1方案比较22.2方案选择23系统原理阐述33.1设计思路33.2程序中的BIOS和DOS功能调用33.2.1 BIOS功能调用33.2.2 DOS功能调用33.3程序模块44.软件思想与流程图54.1程序功能描述54.2 流程图65.调试记录及结果分析75.1调试过程75.2结果记录75.3调试中出现
3、的问题及解决方法106.心得体会117.参考文献128.附录 源程序 131.设计意义与要求1.1设计意义通过课程设计,能够让我们对所学的理论知识有更进一步的理解,而在调试排除故障时也有助于提高分析问题、解决问题的能力。通过此课程设计的汇编语言练习,可以熟悉汇编语言的寻址方式和指令系统,BIOS和DOS系统功能调用,程序设计方法并熟悉汇编的编程环境。1.2设计要求 设计内容:采用汇编语言设计一个在屏幕中央以字符显示一矩形,按F键以*将矩型从上之下、从左至右填满;按R键以相反的次序消失。按Q退出程序。 设计要求:(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 软件
4、设计课题需要说明:软件思想,流程图,源程序及程序注释(5) 调试记录及结果分析(6) 总结(7) 参考资料(8) 附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图2方案论证2.1方案比较在设计过程中字符的显示有2中不同的方式。方案一:运用DOS功能的2号调用,程序的设计如下MA ROW,COLUME ;MA是个宏定义光标位置MOV AH,02HMOV DL,#INT 21H在本程序中,显示方式很简洁很直观很容易记忆理解。但是它无法设置字符的属性,同时还会在下个坐标位置显示光标,影响光看者的视觉享受。 方案二:运用BIOS功能的9号调用,程序设计如下 CALL CURSOR ;调用光标设
5、置子程序 MOV AL,23H MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX 这个程序设计起来占用寄存器较多,略微复杂点,但是它的功能更加完备,更能实现霓虹灯的颜色变化显示效果,给人一种美感。2.2方案选择 从上面的分析比较可知方案二的可行性和实际达到的效果更好。所以选则方案二实现霓虹灯的功能。3系统原理阐述3.1设计思路 (1) 显示欢迎画面,然后执行程序显示一个矩形 (2) 在矩形内框左上角上显示一个字符*号,再执行循环,语句显示一行(列)*字符。利用像这样的原理实现矩形框的完成和内部的填充。至于反向消失部分,用空格代替想要显示
6、的字符,反向执行循环,就可以实现字符的消失了。(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码,
7、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 P
8、OP BX POP AX END这个子程序的重点是设计光标所在页、行、列及其现场保护。使用了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
9、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.
10、1程序功能描述 程序开始,进行清屏,显示矩形方框。若按F则以*将矩型内部从上往下、从左至右填满;若按R则按相反的次序消失,否则就继续等待输入。霓虹灯模拟显示程序执行完后,显示退出提示,等待Q的输入,如果输入为Q就退出程序,否则就继续等待输入。开始4.2 流程图 清屏输出提示示界面输入字符输入是否为S N Y 用布矩形框,按F用*按从上往下、从左往右填充矩形内部 按R则反向消失提示输入Q退出界面输入字符输入是否是Q N 结束 Y5.调试记录及结果分析5.1 调试过程调试过程主要由编辑、汇编、链接和执行等几个步骤组成。(1) 源程序的编辑:编辑好汇编语言源程序后,保存为.com文件。(2) 源程序
11、的编译:调用汇编程序对源程序进行翻译,生成.com的目标文件。在汇编过程中,源程序有错误生不成目标文件,经过多次修改最终生成目标文件。(3) 调试可执行程序:刚开始可执行程序运行之后没有得到预想的结果,又重新检查源程序的算法错误,重新编辑、汇编、链接和执行,得到了预想的结果。5.2结果记录经过很多次调试,分析修改完善,终于得到正确调试结果。(1) 执行程序时,提示进入界面如下;(2) 输入F后,程序执行过程中,显示矩形框及填充如下:(3) 程序执行过程中,继续正向填充及矩形框如下(4) 程序执行过程中,按R反向消失填充及矩形框如下(5) 提示输Q退出界面如下: 图1:显示欢迎页面 图2:按F键
12、正向填充 图3:继续正向填充 图4:按R键反向消失 图5:按Q提示退出5.3调试中出现的问题及解决方法问题1:寄存器不够用怎么办? 解决方法:这是由于程序结构复杂,使用了太多寄存器,可以定义外部变量来解决。问题2:寄存器值变化多端怎么办?解决方法:使用堆栈进行现场保护。使用时应注意PUSH,POP的成对使用,不要遗忘POP同时还要注意堆栈的先入后出的规律。6.心得体会 通过这次的课程设计,让我对汇编有了更进一步的认识,加强了我用汇编语言编程的能力。微机原理是一门很比较难学的课程。但随着学习的推进,以及上机编程,逐渐感到轻松。在这次课程设计中,让我更加熟悉了汇编语言的一些基本的指令;掌握了汇编语
13、言的一些基本的中断调用功能,可以用汇编语言调用各种中断调用功能。同时也更深的理解了寄存器、存储器等工作原理以及一些指令执行后对它们的改变,例如INT指令会改变AL的值,在编程时应注意这方面的问题。这次的汇编课程设计,我的题目是霓虹灯的模拟显示,我用的是老是上传的8086来仿真的。虽然在设计过程中遇到了不少问题,比如运行界面出现乱码、字符不是出现在预期位置等等问题,但在不断的修改和尝试中慢慢地解决这些问题。而在其中也向同学请教过很多问题。从而解决了自己一些不懂的问题。总之,这次课程设计我锻炼了动手能力,熟悉了汇编的编程环境,并巩固了课程相关知识,收益很多。实践出真知,在课程设计中不忘在小处创新,
14、希望在下一次课程设计中能有更大的突破!7.参考文献1汤书森.微机原理接口技术实验于实践教程.北京:清华大学出版社,20082余朝琨.IBM-PC汇编语言程序设计.北京:机械工业出版社. 20083宋江.微机原理与接口技术.北京:机械工业出版社. 20054金泉涌.微型计算机应用经验汇编.北京:清华大学出版社,20075沈美玲.IBM-PC汇编语言程序设计.北京:清华大学出版社,19936吴耿峰.十六位微型计算机原理接口及应用.北京:高等教育出版.20047戴梅萼.微型计算机技术与应用.北京:清华大学出版社. 19928 罗省贤汇编语言程序设计教程北京:电子工业出版社,20049吴向军汇编语言程
15、序设计北京:高等教育出版社,20088.附录 源程序清单源程序如下: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 ENDMSTACK SEGMENT PARA STACK Stack ;定义堆栈段 STACK ENDSDATASEG SEGMENT PARA Data ;定义数据段 ROW DB ? COLUME DB ? COUNT DB ? COUNT1 DB ? CT DB ? MENU DB ,0d
16、h,0ah DB welcome you ,0dh,0ah DB ,0dh,0ah DB please press S to enter ,0dh,0ah DB and then press Q to exit ! ,0dh,0ah DB $ BUF DB press Q to exit ! $ DATASEG ENDSCODESEG SEGMENT PARA Code ASSUME SS:STACK,DS:DATASEG,CS:CODESEGMAIN PROC FAR MOV AX,DATASEG MOV DS,AXCALL CLEAR ;调用清屏子程序 MA 8,0 ;欢迎界面的出现位置
17、WAT0: LEA DX,MENU ;输入S进入霓虹灯显示 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,S CALL CLEAR ;如果输入的不是S就清屏 MA 8,0 JNZ WAT0 PUSH AX ;入栈 PUSH BX PUSH CX PUSH DX MOV ROW,24 ;完成矩形框的左竖行 MOV COLUME,0 LOP3: CALL CURSOR ;调用设置光标位置 MOV AL,24H ;把的ASCII 码传递给AL MOV BL,0BH ;设置字符属性 PUSH CX ;入栈 MOV CX,1 ;字符显示1次 MOV AH,09H IN
18、T 10H POP CX ;出栈 CALL DELAY1 ;调用延时 DEC ROW ;行坐标减1 CMP ROW,0 ;若行坐标大于0就跳转到lop3否则执行下个程序 JNZ LOP3 MOV ROW,0 MOV COLUME,0 ;完成矩形框的上行 LOP1: CALL CURSOR MOV AL,24H MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 INC COLUME CMP COLUME,79 JNZ LOP1 MOV ROW,0 MOV COLUME,79 ;完成矩形框的右竖行 LOP2: CAL
19、L CURSOR MOV AL,24H ;完成的输出 MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 INC ROW CMP ROW,24 JNZ LOP2 MOV ROW,24 MOV COLUME,79 ;完成矩形框的下横行 LOP4: CALL CURSOR MOV AL,24H MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 DEC COLUME CMP COLUME,0 JNZ LOP4 ;到此矩形框已完 MOV CO
20、LUME,0 LOP6: MOV AH,1 INT 21H CMP AL,F ;如果输入F则正向填充 JN LOOP6 ;如果输入的不是F就等待 MA 8,0 MOV ROW,1 INC COLUME LOP5: CALL CURSOR MOV AL,23H MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 INC ROW CMP ROW,24 JNZ LOP5 CMP COLUME,78 JNZ LOP6 MOV COLUME,79 ;反向消失LOP7: MOV AH,1 INT 21H CMP AL,F ;如
21、果输入R则反向消失 JN LOOP6 ;如果输入的不是R就等待 MA 8,0 MOV ROW,23 DEC COLUME LOP8: CALL CURSOR MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 DEC ROW CMP ROW,0 JNZ LOP8 CMP COLUME,1 JNZ LOP7 MOV CL,1 ;消失矩形框左竖行 LOP10: MA CL,0 MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CA
22、LL DELAY1 INC CL CMP CL,24 JNZ LOP10 MOV CL,0 ;消失矩形框下行 LOP9: MA 24,CL MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 INC CL CMP CL,79 JNZ LOP9 MOV CL,24 ;消失矩形框右竖行LOP11: MA CL,79 MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 DEC CL CMP CL,0 JNZ L
23、OP11 MOV CL,79 ;消失矩形框上行LOP12: MA 0,CL MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 DEC CL CMP CL,0 JNZ LOP12 MA 0,0 ;消失(0,0)这一点 MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX MOV ROW,24 ;完成矩形框的左竖行 MOV COLUME,0 LOP13: CALL CURSOR ;调用设置光标位置 MOV AL,24H ;把的ASC
24、II 码传递给AL MOV BL,0BH ;设置字符属性 PUSH CX ;入栈 MOV CX,1 ;字符显示1次 MOV AH,09H INT 10H POP CX ;出栈 CALL DELAY1 ;调用延时 DEC ROW ;行坐标减1 CMP ROW,0 ;若行坐标大于0就跳转到lop3否则执行下个程序 JNZ LOP13 MOV ROW,0 MOV COLUME,0 ;完成矩形框的上行 LOP14: CALL CURSOR MOV AL,24H MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 INC C
25、OLUME CMP COLUME,79 JNZ LOP14 MOV ROW,0 MOV COLUME,79 ;完成矩形框的右竖行 LOP15: CALL CURSOR MOV AL,24H ;完成$的输出 MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 INC ROW CMP ROW,24 JNZ LOP15 MOV ROW,24 MOV COLUME,79 ;完成矩形框的下横行 LOP16: CALL CURSOR MOV AL,24H MOV BL,0BH PUSH CX MOV CX,1 MOV AH,0
26、9H INT 10H POP CX CALL DELAY1 DEC COLUME CMP COLUME,0 JNZ LOP16 ;到此矩形框已完成 MOV COUNT1,23 ;矩形框内部填充 LOP17: MOV COUNT,39 MOV CH,39 MOV CL,40 LOP18: MA COUNT1,CH ;填充左半段 MOV DL,23H PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX MOV AH,02H INT 21H MA COUNT1,CL ;填充右半段 MOV AL,* MOV BL,0BH PUSH CX MOV CX,1 MOV AH
27、,09H INT 10H POP CX CALL DELAY1 DEC CH INC CL DEC COUNT CMP COUNT,0 JA LOP18 DEC COUNT1 CMP COUNT1,0 JNZ LOP17 MOV CT,1 ;设置行的初值为1 反向消失内部 LOP19: MOV COUNT,39 ;内循环次数 MOV CH,1 MOV CL,78 LOP20: MA CT,CH MOV AL, ;显示空格 MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX MA CT,CL ;设置光标位置 MOV DL, MOV AH,0
28、2H INT 21H CALL DELAY1 INC CH DEC CL DEC COUNT CMP COUNT,0 JNZ LOP20 INC CT CMP CT,24 JNZ LOP19 MOV CL,1 ;消失矩形框左竖行 LOP21: MA CL,0 MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 INC CL CMP CL,24 JNZ LOP21 MOV CL,0 ;消失矩形框下行 LOP22: MA 24,CL MOV AL, MOV BL,0BH PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX CALL DELAY1 INC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省苏州市金阊区2026届四年级数学第一学期期末达标检测试题含解析
- 万年县2025年数学六上期末监测试题含解析
- 2025年小学安全设施完善合同
- 2026届陕西省耀州区某校四上数学期末质量跟踪监视模拟试题含解析
- 2025年夫妻共同财产分割合同标准模板
- 新疆伊犁州2025年数学四年级第一学期期末统考模拟试题含解析
- 矿山监理知识题库及答案
- 2025年阆中市三年级数学第一学期期末监测模拟试题含解析
- 2025年股权交易资金管理合同模板
- 2025年旅游住宿合同范例
- 创伤严重程度(AIS)(ISS)评分表(完整版)
- 仓储业务基础知识培训课件
- 苏教版二年级数学下册第六单元《三位数的加法笔算》教案
- 7年级数学试卷(有答案)
- 干热河谷优秀课件
- 误吸预防与处理
- 台风过后复工前安全检查表
- GB/T 20840.8-2007互感器第8部分:电子式电流互感器
- GB/T 2007.1-1987散装矿产品取样、制样通则手工取样方法
- 《歌唱祖国》-课件
- 天津临港海洋重工建造基地码头工程(PPT)
评论
0/150
提交评论