霓虹灯模拟显示课程设计
- 格式:doc
- 大小:171.50 KB
- 文档页数:27
PLC课程设计报告学院:电气信息工程学院班级:自动化姓名:学号:指导老师:二、霓虹灯广告屏示意图该广告屏共有4根灯管,16只流水灯,每4只灯为一组,如下图所示:12341234658714ⅡⅠ四三15131211109162. 控制要求::(1)该广告屏中间4根灯管亮灭的时序为:第1根亮→2亮→3亮→……→第4根亮,时间间隔为1s ,全亮后,显示3s ,再反过来从4→3→……→1按1s 间隔顺序熄灭,全灭后停亮2s ;再从第4根开始亮,顺序点亮4→……→1,时间间隔1s ,显示5s ,再从1→2→……→4按1s 间隔顺序熄灭,全灭后停亮2s ,然后重复运行,周而复始。
(2)16只流水灯,4个一组分成4组,从Ⅰ→Ⅱ→……四按1s 时间间隔依次向前移动,且点亮时每相隔1灯为亮,即从Ⅰ“①、③”亮→Ⅱ“⑤、⑦”亮,同时Ⅰ“①、③”灭→Ⅲ“ ⑼ 、⑾ ”亮,同时Ⅱ“⑤、⑦”灭……,如此移动一段时间(如30s )后,再反过来移动一段时间,四“ (16)、(14)亮→三“(12)、(10)”亮,同“(16)、(14)”灭,……如此循环往复。
(3)系统有单步/连续控制,有起动和停止按钮。
(4)起动时,灯管和流水灯同时起动,关闭时,可同时也可分别关闭。
3. 编程并模拟调试4. 画出I/O 端子接线图1、顺序功能图子程序22、PLC控制电路设计(1)选择PLC的机型:S7-226。
(2)输入输出分配表:主程序:4、调试过程出现的问题和解决措施或改进1、问题:编译无错但程序无法下载。
原因:在SCRT段外使用了SCRT指令。
解决办法:换成置位指令。
2.问题:无法在任意过程中停止。
原因:只有一个SCR程序段有停止指令。
解决方法:在每个SCR语句段加入停止指令。
5、使用说明1、按下I0.0启动,四根灯管和流水灯同时亮且进入跳转2、按下I1.0流水灯单步运行,按下I1.1四根灯管单步运行3、按下I0.2灯管熄灭关闭,按下I0.3流水灯熄灭关闭三、心得体会经过为期一个星期的PLC课程设计,使得我对PLC的掌握进一步的增强,加深了对PLC的理解,并对PLC产生了浓厚的兴趣,但是我也深深的知道自己的不足之处,比如说对应用指令的不熟悉,大大地加深了我的程序复杂程度。
霓虹灯显示程序设计………………………………………………………………………………………………..?设计内容简介 (1)霓虹灯显示程序设计 (2)设计任务及要求 (2)设计方案及程序流程图 (2)主程序流程图 (2)汉字显示闪烁子程序 (3)2.2.3 程序结果显示 (6)主要程序段与程序设计 (10)程序中用到的DOS功能调用 (10)程序中用到的BIOS内的中断功能 (10)主要程序段分析.........................................................................11 程序调试说明. (16)调试工具 (16)调试过程 (16)课程设计总结..............................................................................................17 参考文献. (1)8 附录源程序清单与注释 (19)霓虹灯是日常生活中最常见的灯饰,它装点了晚上,丰富了人们的生活。
通过汇编语言,实现霓虹灯的显示与闪烁,可以很方便的达到想要的效果。
汇编语言的INT 10号中断提供了设置显示模式、设置颜色模式、设置光标位置、按指定属性显示字符等功能号,可以显示汉字,同时也提供了初始化屏幕或滚屏等功能号,通过擦除子程序以及清屏子程序的配合运用,从而达到让汉字闪烁的功能。
正确编排汉字组成点的坐标、颜色以及ASCII码值,就可以得到想要显示的汉字,合理运用INT 10号中断的功能号,正确调用擦除子程序和清屏子程序就可以得到想要的闪烁效果。
:霓虹灯中断子程序闪烁显示I汇编语言是计算机提供给用户的最快最有效的语言,也是能过利用计算机所有硬件特性并能直接控制硬件的唯一语言,是操作系统等其它核心课程的必要先修课。
汇编语言的应用有很多,其中,图形文字的显示就是计算机的一项基本应用。
本次课程设计说明书在简单说明课题的硬件设施工作原理后,采用BIOS的 INT 10H 显示功能调用,设置为AH=0,AL=4的320×200彩色图像显示方式,利用AH=12写点功能,通过写ASCII 码,来组成文字,其中ASCII码的位置可由行数与列数的二维坐标确定,从定义的区域内开始,行向下自增1,列向右自减1,逐列写ASCII码。
plc霓虹灯课程设计一、课程目标知识目标:1. 学生能理解PLC(可编程逻辑控制器)的基本原理及其在霓虹灯控制中的应用。
2. 学生能掌握PLC编程软件的使用,并学会编写简单的霓虹灯控制程序。
3. 学生能了解霓虹灯电路的基本构成,以及如何通过PLC实现霓虹灯的开关、亮度调节和动态效果控制。
技能目标:1. 学生能运用PLC进行霓虹灯的创意设计,实现个性化霓虹灯效果。
2. 学生通过实际操作,提高动手能力,培养解决问题的实践技能。
3. 学生学会团队协作,提高沟通与表达能力,共同完成霓虹灯项目。
情感态度价值观目标:1. 学生通过学习PLC霓虹灯制作,培养对电子控制技术的兴趣,激发创新意识。
2. 学生在学习过程中,养成积极思考、勇于尝试、不断探索的良好习惯。
3. 学生能够关注科技发展,认识到PLC技术在现实生活中的应用价值,增强社会责任感。
课程性质:本课程属于电子技术及应用领域,结合PLC技术进行霓虹灯制作,注重实践性、创新性和团队合作。
学生特点:初中年级学生,具有一定的电子知识基础,好奇心强,喜欢动手实践,团队协作意识逐渐形成。
教学要求:教师需关注学生个体差异,因材施教,鼓励学生积极参与,注重理论与实践相结合,提高学生的综合运用能力。
通过课程学习,使学生在掌握PLC霓虹灯制作技能的同时,培养良好的情感态度价值观。
二、教学内容1. PLC基本原理:介绍PLC的组成、工作原理及在自动化控制中的应用。
- 教材章节:第二章 可编程逻辑控制器概述- 内容:PLC的硬件结构、软件编程、输入输出接口、通信接口等。
2. PLC编程软件的使用:学习PLC编程软件的基本操作,编写霓虹灯控制程序。
- 教材章节:第三章 PLC编程软件及应用- 内容:编程软件安装与配置、编程语言(梯形图、指令表等)、程序调试与下载。
3. 霓虹灯电路设计:学习霓虹灯电路的基本构成及原理,掌握通过PLC控制霓虹灯的方法。
- 教材章节:第四章 电气控制电路设计- 内容:霓虹灯电路元件、电路图绘制、PLC控制电路设计。
课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 计算机霓虹灯模拟显示软件设计初始条件:1.用于调试程序的IBM兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/ WIN98兼容方式;3.EDIT 等文本编辑器输入80x86汇编程序,MASM 5.0编译及链接程序。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.使用汇编语言设计一个运行于计算机的霓虹灯模拟显示软件,软件应实现模拟显示霓虹灯,要求至少有一种动态显示效果。
可以附加显示其它信息和添加多种动态显示效果。
2.说明书撰写格式应符合《课程设计说明书统一书写格式》。
时间安排:1.程序框图设计,3天2.编程,4天3.调试,3天4.编写设计报告,4天指导教师签名:年月日系主任(或责任教师)签名:年月日摘要霓虹灯是日常生活中常见的灯饰,它装点了夜空,丰富了人们的生活。
通过汇编语言的学习,可实现霓虹灯的控制与操作,实现其显示与闪烁,或者是其他的动态变化,从而可以很方便的达到理想效果。
本设计通过对字符进行坐标形式的定义再调用BIOS使之顺序显示,通过擦除子程序以及清屏子程序的配合运用,可以达到让汉字或图像闪烁或运动的功能。
最后通过按键‘Q/q’来实现程序的结束。
关键字:霓虹灯汇编语言子程序目录1设计任务原理及方案认证 (1)1.1设计任务 (1)1.2设计原理分析 (1)1.3方案比较及认证 (1)2程序流程图 (2)2.1主程序流程图 (2)2.2 子程序流程图 (3)2.2.1字符显示程序结构流程图 (3)2.2.2清屏程序结构流程图 (4)3主要程序段与程序设计分析 (6)3.1程序中用到的BIOS内的中断功能 (6)3.2程序中用到的DOS功能调用 (7)3.3主要程序段与程序设计分析 (8)3.3.1数据段程序 (8)3.3.2写点程序段 (8)3.3.3 输入Q、q退出程序 (10)3.3.4 竖形条纹的显示程序 (11)3.3.5条纹清屏与文字闪烁功能程序 (12)3.3.6延迟功能程序 (13)4程序调试 (14)4.1.调试工具 (14)4.2.调试过程与结果分析 (14)5 心得体会 (15)参考文献 (16)附录一源程序和程序注释 (17)本科生课程设计成绩评定表................................... 错误!未定义书签。
中文摘要本次设计主要完成了霓虹灯的显示界面大小、霓虹灯的颜色及代表霓虹灯的字符(@、*)的运动情况和霓虹灯的界面显示。
关键字:霓虹灯汇编语言程序设计主流程图和子流程图的设计I目录中文摘要 ................................................................. 错误!未定义书签。
第一章霓虹灯内容和功能.................................... 错误!未定义书签。
第二章霓虹灯设计 . (1)第一节霓虹灯设计思路、模块划分 ................................ 错误!未定义书签。
第二节霓虹灯主流程图 (2)第三节霓虹灯子流程图 ................................................... 错误!未定义书签。
第四节霓虹灯界面显示 (9)第五节霓虹灯程序源代码及注释 (10)第三章总结 (14)参考文献 (15)致谢 (16)II第一章霓虹灯内容和功能◆内容一、设置霓虹灯的显示界面大小(15行77列字符)屏幕大小(24行79列)二、设置控制霓虹灯字符的颜色三、“霓虹灯”的模拟显示步骤1、显示霓虹灯的上横杠@(从左到右);2、显示霓虹灯的下横杠@ (从右到左);3、显示霓虹灯的左横杠*@;4、显示霓虹灯的右横杠@*;5、字符(@*)分别从左右两边进入向中间移动,然后一起从中间向左右运动并且变换颜色;6、整个的模拟图形显示出来◆功能:霓虹灯模拟显示图形并且变换颜色第二章霓虹灯设计第一节霓虹灯设计思路、模块划分一、霓虹灯设计思路:写出主程序,根据主程序调用子程序完成霓虹灯显示。
二、霓虹灯课程设计的模块划分:主程序:设置寄存器的内容,调用子程序设置屏幕大小、屏幕显示的颜色和字符的运动情况。
子程序:1.clear_screen :清屏设置,屏幕大小在坐标点(0,0)和(24,79)之间。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个霓虹灯的模拟显示程序;2.在屏幕上动态显示”新年快乐”,按蓝—绿—黄---红---白闪烁变化,按“q”键退出;时间安排:1月3 日----- 1 月5 日查阅资料及方案设计1月5 日----- 1 月7 日编程1月7 日----- 1 月9 日调试程序1月9 日----- 1 月10 日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录1设计内容及要求 (1)2程序原理分析 (2)3主程序流程图 (3)4 程序主要模块功能分析 (4)4.1名字显示功能模块 (4)4.1.1 vga简介 (4)4.1.2 256色调色板 (4)4.1.3 视频显示模式设置 (4)4.3 文字显示 (6)4.4 清屏子程序 (8)4.5文字动画效果 (8)5程序调试 (10)6课程设计总结 (11)参考文献 (12)附录源程序代码 (13)1设计内容及要求要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个霓虹灯的模拟显示程序;2.在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出;3.撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
2程序原理分析采用系统提供的BIOS功能调用中的int 10h显示功能,定义AH=0,AL=13将屏幕输出设置为320X200,256色图形方式。
利用AH=12些点功能,通过写ASCII码,来组成文字,其中ASCII码的位置可由行数和列数的二维坐标确定,由定义的区域内开始,行向下自增1,列向右自增1,逐列写ASCII码,然后编写程序段实现内存地址与屏幕坐标之间的联系。
目录1.设计意义与要求 (1)1.1设计意义 (1)1.2设计要求 (1)2方案论证 (2)2.1方案比较 (2)2.2方案选择 (2)3系统原理阐述 (2)3.1设计思路 (2)3.2程序中的BIOS和DOS功能调用 (3)3.2.1 BIOS功能调用 (3)3.2.2 DOS功能调用 (3)3.3.程序模块 (4)4.软件思想与流程图 (5)4.1程序功能描述 (5)4.2 流程图 (6)5.调试记录及结果分析 (7)5.1 调试过程 (7)5.2结果记录 (7)5.3调试中出现的问题及解决方法 (9)6.心得体会 (10)7.参考文献 (11)8.附录源程序清单 (12)“霓虹灯”的模拟显示程序设计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,02HMOV DL,’#’INT 21H在本程序中,显示方式很简洁很直观很容易记忆理解。
霓虹灯系统课程设计报告一、引言霓虹灯作为一种常见的照明装饰灯具,被广泛应用于商业建筑、广告牌、城市夜景等场景中。
本课程设计旨在设计一个简单的霓虹灯系统,实现对灯光的控制和显示效果的实时调节。
本报告将详细介绍系统的设计思路、硬件构成、软件实现以及测试结果分析。
二、设计思路1. 系统需求分析:根据用户需求,确定系统的基本功能和性能要求,包括灯光颜色、亮度调节、闪烁频率等。
2. 硬件选型:选择适合的硬件平台和元器件,如单片机、LED灯带、电源等。
3. 硬件连接:根据系统需求,设计合理的硬件连接方式,确保信号传输的可靠性。
4. 软件设计:编写控制程序,实现对霓虹灯系统的控制和显示效果的实时调节。
5. 系统测试:对系统进行实时调试和测试,确保系统的功能和性能达到预期要求。
三、硬件构成本系统的硬件构成主要包括以下几个部分:1. 单片机:选用XX型号单片机作为控制核心,具有较高的计算性能和丰富的外设接口。
2. 电源模块:提供稳定的电源供电,保证灯光的正常工作。
3. LED灯带:使用高亮度的LED灯带作为光源,通过控制单片机的输出口,实现对灯光的控制。
4. 按钮开关:用于用户输入,实现对灯光的开关、亮度调节等操作。
5. 显示屏:用于显示系统的工作状态、灯光效果等信息。
四、软件实现1. 系统初始化:在系统启动时,进行各个硬件模块的初始化,包括单片机的引脚配置、定时器设置等。
2. 按钮扫描:通过扫描按钮开关的状态,实时检测用户的操作,包括开关灯、调节亮度等。
3. 灯光控制:根据用户的操作,通过控制单片机的输出口,实现对LED灯带的控制,包括灯光的开关、亮度调节、闪烁频率等。
4. 显示效果:根据系统的工作状态,通过显示屏实时显示系统的运行状态、灯光效果等信息。
5. 实时调节:通过按键操作,实现对灯光的实时调节,用户可以根据需要随时改变灯光的颜色、亮度和闪烁效果。
五、测试结果分析经过系统的调试和测试,系统实现了预期的功能和性能要求。
学号:课程设计题目模拟“霓虹灯”汇编语言程序设计学院专业班级姓名指导教师2012年1月13日目录摘要 (1)1 设计内容介绍 (2)2 方案论证 (3)3 程序原理分析 (4)3.1程序中的字体属性定义 (4)3.2程序中用到的BIOS内的中断功能 (4)3.3程序中用到的DOS功能调用 (5)4 主要模块与程序设计 (7)4.1程序流程图 (7)4.2文字显示模块 (11)4.3颜色变化模块 (13)4.4竖形条纹显示模块 (13)4.5竖形条纹移动与清屏模块 (14)4.6按ESC退出模块 (15)4.7延迟功能模块 (16)5 程序调试 (18)5.1调试工具 (18)5.2调试过程 (18)5.3结果分析 (18)结束语 (21)参考文献 (22)附录源程序代码 (23)摘要霓虹灯是日常生活中最为常见的灯饰,它装点了晚上,使城市的夜景变得如此的美丽,极大地丰富了人们的生活。
通过汇编语言编写程序,实现模拟霓虹灯的显示与闪烁,可以很方便的打到需要的效果。
汇编语言中的INT 10H号中断提供了设置显示模式,设置颜色模式,设置光标位置,按指定属性显示字符等功能号,可以显示汉字与字母,同时还提供了初始化屏幕和滚动屏幕等功能号,通过擦除子程序以及清屏子程序的配合,从而达到让霓虹灯闪烁的功能。
正确编排文字组成点的坐标,颜色以及ASCII码值,就可以达到需要显示的文字,合理运用INT 10H号中断的功能号,正确调用擦除子程序和清屏子程序就可以达到预期的效果。
关键词:霓虹灯中断子程序显示闪烁1 设计内容介绍汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。
汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。
汇编语言的使用范围很广,文字显示只是其中很简单的一项。
霓虹灯模拟显示课程设计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 bxJnz 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,是则进入下一程序断,否则继续检测;第二段是快速显示设计图案,通过光标移动逐步显示完预设图案,并询问是否进入下一程序段,检查输入是否为字符y\Y,是则进入下一程序段,否则跳回第二段程序重复执行一遍;第三段程序以较慢速度依次出现“*”,以实现模拟流水灯的效果,然后一次消失,在这个过程中检查是否有“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=02HBH=页号DH=行坐标DL=列坐标出口参数:无3)功能06H调用(中断指令int 10h)功能描述:初始化屏幕或滚屏入口参数:AH=06H向上滚屏,AH=07H向下滚屏AL=滚动行数(0,清窗口)BH=空白区域的缺省属性(CH、CL)=窗口的左上角坐标(X、Y)(DH、DL)=窗口的右下角坐标(X、Y)出口参数:无4.程序设计流程图程序流程图如下图所示,分为主程序流程图和子程序流程图。
主程序流程图如图4—1所示;置光标宏定义流程图如图4—2所示;延时子程序流程图如图4—3所示;字符显示流程图如图4—4所示。
开系统初是否有g输入缓慢显示提示字是否有y输入入栈保系统初赋AX、BX、闪烁图案出栈恢是否有esc入结图4—1主流程图图4—2置光标宏定义图4—3延时子程序流程图图4—4显示字符程序段流程图本次课程设计用到了二个不同大小的延时效果,故在延时程序中改变CX的赋值来改变延时长短。
清屏子程序流程图与置光标宏定义类似只需改变相应寄存器赋值和调用中断号即可。
显示图案时分部分显示连续的字符就能达到显示整个图案的效果。
5.主要程序分析5.1设置光标的宏定义程序如下:MA macro op1,op2push ax;保存数据push bxmov ah,02hmov bh,0mov dh,op1 ;光标纵坐标mov dl,op2 ;光标横坐标int10hpop bxpop axEndm该宏定义主要是调用功能02H(中断指令“INT 10H”)来确定光标的位置的。
该定义的主要功能首先是指定位置来完成字符‘@’或‘*’的显示与消失。
5.2时间延迟程序程序如下:waiting_1 proc nearpush cxpush dxmov dx,0ffhdll: mov cx,65500dl2: loop dl2dec dxjnz dllpop dxpop cxretwaiting_1 endpwaiting_2 proc nearpush cxpush dxmov dx,0fffhd2l: mov cx,65500d22: loop dl2dec dxjnz dllpop dxpop cxretwaiting_2 endp本题目中需要两种不同的延迟,通过改变dx的值来大致控制时间的长短。
6.程序调试显示6.1矩形及其对角线的显示程序运行之初,首先在屏幕上出现提示字符“please input b to begin”如图6—1所示,按下b/B键,屏幕上以较快速度分六笔画出矩形及其对角线,并由提示符“please input y to chose”如图6—2所示。
图6—1 初始提示字符图6—2 矩形及其对角线的显示6.2流水灯的运行根据提示符,按下Y/y键,屏幕和字符的颜色会变化,用*号代替灯来流水灯的效果,如图6—3所示,然后依次熄灭,并出现提示符“please q to quit”如图6—4。
最后根据提示符,按下Q/q键,退出程序。
如图6—3 流水灯出现6—4图流水灯消失7.心得体会两周的课程设计就这样匆匆结束,感觉时间很快,但是本次课程设计让我学到了很多东西。
首先,通过对这程序的制作,加深了我对课本知识的理解和掌握,使我对汇编语言的基本知识的使用更加熟练,同时也让我学到了新的知识,如DOS命令和BIOS命令的调用,让我大胆编写程序,实现自己想要的功能。
其次,在这次课程设计,需要与同学充分交流,加强团结合作的技巧。
通过查阅以下资料如课本以及网络也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。
此外,通过这个课程设计,让我切实的体会到了微机原理的重要性,同时增强了我的学习兴趣,然我发现,实际生活的常用知识都来自于我们所学的课本基础知识。
本次课程设计是一个综合的程序,平时的很多程序都用到了。
很多子程序的设计是固定的,因此可以直接从指导资料中调用,大多只需要修改几个参数就可以,这大大方便了我们的设计,为我们节省了很多的时间。
特别之处的是,通过本次‘霓虹灯’模拟显示的课程设计,我掌握了关于DOS和BIOS中断功能调用,如颜色显示,屏幕属性,字符输入\输出,字符串输入\输出等。
通过综合程序编写的联系,学会了编写相对复杂程序的基本方法步骤。
由于和同学相互交流学习,加强了合作能力,当要用到一些完全陌生的知识时需要独立去查询资料,加强了自学能力。
以上心得体会势必对我以后的学习和工作大有帮助,衷心感谢学校给我们这个宝贵的学习机会和老师的耐心指导!参考资料[1]齐志儒、高福祥.汇编语言程序设计.沈阳:东北大学出版,2001[2]刘均、周苏、金海荣.汇编语言程序设计实验教程.北京:科学出版社,2009[3]周佩玲、彭虎、傅忠谦.微机原理与接口技术.北京:电子工业出版社,2005[4]方立友.微机原理与汇编语言实用教程.北京:清华大学出版社,2007[5]凌志浩.微机原理与接口技术.上海:华东理工大学出版社,2006[6]朱世鸿.微机系统和接口应用技术.北京:清华大学出版社,2006附录程序清单如下所示:MA macro op1,op2push ax;保存数据push bxmov ah,02hmov bh,0mov dh,op1 ;光标纵坐标mov dl,op2 ;光标横坐标int10hpop 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,8db 8,9,10,11,12,13,14,15,16,17db 17,17,17,17,17,17,17,17,17,17db 17,16,15,14,13,12,11,10,9,8,7hang_2 db 8,9,10,11,12,13,14,15,16,17db 8,9,10,11,12,13,14,15,16,17 hang_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,35 lie_2 db 35,36,37,38,39,40,41,42,43,44 db 44,43,42,41,40,39,38,37,36,35 lie_3 db 30,32,34,36,38,40,42count db 8clour db 0f7hdata endscode segmentassume ds:data,cs:code;**********清屏子程序*********clear_screen proc nearpush axpush bxpush cxpush dxmov ah,6mov al,0mov ch,0mov cl,0mov dh,24mov dl,79mov bh,7int10hpop dxpop cxpop bxpop axretclear_screen endp;**********延迟子程序******** waiting_1 proc nearpush cxpush dxmov dx,0ffh dll: mov cx,65500 dl2: loop dl2dec dxjnz dllpop dxpop cxretwaiting_1 endpwaiting_2 proc nearpush cxpush dxmov dx,0fffh d2l: mov cx,65500 d22: loop dl2dec dxjnz dllpop dxpop cxretwaiting_2 endpstart:mov ax,datamov ds,axxor ax,axxor bx,bxxor cx,cxxor dx,dxmov ah,02h;置光标位子mov bh,0;BH=页数mov dh,0;DH\DL=行列数mov dl,0int10hinfo:lea dx,info_1 ;提示字符输出mov ah,9int21hmov ah,01hint21hcmp al,'b' ;输入字符检查是否为g/Gje xianshi_1 ;是则跳转到xianshi_1cmp al,'B' ;否则跳回info重新检查je xianshi_1jmp info;**********方式一显示程序********xianshi_1:mov ah,06h;屏幕初始化mov bh,29H;卷入行属性mov cx,0;左上角行列坐标(0,0)mov dx,1850h;右下角行列坐标(80,80)int10hlea si,hang_1 ;取hang_1,lie_1字符串的首地址lea di,lie_1mov cx,40;cx赋值确定循环次数loop_1:MA [si],[di] ;调用宏定义移动光标mov dl,'@'mov ah,02;在光标处显示输出‘*’int21hinc si ;指针自加inc diMA 0,0;移动光标call waiting_1 ;延时loop loop_1 ;循环loop_1xianshi_2: ;显示图案第二部分lea si,hang_2lea di,lie_2mov cx,20loop_2:MA [si],[di]mov dl,'@'mov ah,02int21hinc siinc diMA 0,0call waiting_1loop loop_2lea dx,info_2 ;方式选择提示mov ah,9int21hmov ah,01hint21hcmp al,'y' ;检查输入字符是否为y/Yje liushui ;是,则跳转到liushuicmp al,'Y' ;否,则跳转到xianshi_1je liushuicall clear_screen ;调用清屏程序jmp xianshi_1;**********流水灯子程序*******liushui:call clear_screen ;清屏xor ax,axxor bx,bxxor cx,cxxor dx,dxmov ah,06h;屏幕初始化mov bh,4ah;卷入行属性mov cx,0;左上角行列坐标(0,0)mov dx,1850h;右下角行列坐标(80,80)int10hMA 0,0;提示语显示lea dx,info_3mov ah,9int21hcall waiting_1xianshi_3: ;快速形成图案lea si,hang_3lea di,lie_3mov cx,7loop_3:MA [si],[di]mov dl,'*'mov ah,02int21hinc siinc diMA 0,0call waiting_2 ;延时减小loop loop_3xianshi_4: ;快速形成图案lea si,hang_3lea di,lie_3mov cx,7loop_4:MA [si],[di]mov dl,''mov ah,02int21hinc siinc diMA 0,0call waiting_2 ;延时减小loop loop_4;****检测是否按下Q键********mov ah,01hint21hcmp al,'Q'je QUITcmp al,'q'je QUITjmp liushui;*******中止程序******** QUIT:mov ah,4chint21hcode endsend start。