汇编语言课程设计粒子运动动画报告(编辑修改稿)内容摘要:

垂直方向上的越界检查(也做回绕处理) movsx edx, [ebx]. .if edx SDWORD PTR 0 mov edx, yClient dec edx mov [ebx]., dx .elseif edx = yClient mov edx, 0 mov [ebx]., dx .endif。 绘制当前状态(向 @hDc 设备绘制一点) movzx eax, [ebx]. movzx edx, [ebx]. .if view != 3 invoke SetPixel,hdcT,eax,edx,[ebx]. .endif add ebx, sizeof ATOMST dec _k .endw pop ecx inc ecx .endw 此程序是利用如 .if eax SDWORD PTR 0 类的条件语句规定程序的执行范围,使种子图像始终在窗口内来回不同轨迹的游走。 (1)绘制路线子程序 此程序用于绘制粒子运动的不同轨迹,在不同的时间使其粒子想不通的方向产生运动轨迹。 绘制整条直线及用算法实现范围的计算,分别定义长和宽为_x,_xx, _y,_yy,利用坐标思维 _xx_x,_yy_y来实现场合矿的计算。 利用坐标点绘制直线来实现横向和竖向的运动轨迹。 效果如下图所示: 横向路线轨迹分解: 图 33 颜色变换一 图 3— 1轨迹分解图 代码如下:。 绘制直线 drawLine proc uses ebx esi edi, _x:SWORD, _y:SWORD, _xx:SWORD, _yy:SWORD, _color:DWORD LOCAL incx:SDWORD, incy:SDWORD mov eax, movzx ecx, _y sub eax, ecx dec eax imul eax, movzx edx, _x shl edx, 2 add eax, edx mov edi, mTemp add edi, eax。 计算两个方向的画线距离 movzx eax, _xx movzx edx, _x sub eax, edx。 dx = xx x movzx edx, _y movzx ecx, _yy sub edx, ecx。 dy = yy y。 计算两个方向的步长 mov ebx, 4 .if (eax SDWORD PTR 0) neg ebx neg eax .elseif !eax mov ebx, eax .endif mov incx, ebx mov ecx, .if (edx SDWORD PTR 0) neg ecx neg edx .elseif !edx mov ecx, edx .endif mov incy, ecx mov ebx, _color。 绘制整条直线 .while ecx mov [edi], ebx add esi, eax add edi, incy .if esi = SDWORD PTR 0 add edi, incx sub esi, edx .endif dec ecx .endw .endif。 mov [edi], ebx ret drawLine endp (2) 随机数发生器子程序 此程序用于产生随机数,对应种子时间内的路径。 (4) 弱化内存设备数据区像素的颜色子程序 此程序用于 弱化内存设备数据区像素的颜色 ,使其背景显示纯色。 (5)其他功能子程序 选取背景颜色程序子程序,获取对话框中指定编辑框的整数设置子程序,对话框中指定编辑框的初始值保存位图文件选择框子程序,获取有效的全路径文件名子程序,将内存设备位图写到文件系统参数设置对话框过程子程序等子程序共同下更好的实现程序要求。 整个代 码部分的设计,本小组分工合作完成,程序难点在于行列变换的情况较复杂,所以需跳转很多次,定义了许多变量来存放定义的值,起着标志的作用,通过比较值是否与预设的值相等,来实现跳转。 完成此部分后,我对子程序设计方法有了更进一步的了解,对于跳转语句的使用更加熟练,程序设计的能力也有所提升,思维更加严谨。 4 程序的调试与运行结果说明 程序的分析、代码的编写完成后,开始对代码进行编译和调试,程序调如图如下: 图 4— 1 调试图 1) 程序执行后建立窗口,在窗口中实现粒子 种子的初始化并调用。 如下图使粒子种子集中于中央并显示。 图 4— 2 运行图( 1) 2)窗口建立调用粒子种子,程序嗲用字程序实现粒子种子在窗口内的随机行走。 图 4— 3运行图( 2) 2)如图程序实现了对粒子种子的范围划定。 图 4— 4 运行图( 3) 通过对程序的编译、调试和运行,我对代码的调试方法更加熟悉,并了解到自己程序的不足之处,知道怎样去修改代码以及简化代 5 课程设计总结 的 特点 、不足 在动画程序中,通过对变量的定义以及对各子程序的调用,实现了对粒子的显示并移动,使其呈现动画效果。 让人在视觉上产生美感,程序尚有不足,比如效果不是很多,动画单一等。 在编程的过程中,遇到了很多没有预料到的困难,有很多知识点之前了解的很模糊,于是在编程变成完成之后,有很多细节上面的错误,不仅繁杂,而且有时候错误很隐蔽,给查找错误带来很大的困难。 这次实验让我明白了流程图的重要性,刚开始写程序的时候,直接就动手了,结果程序写的很乱,执行起来的效果也不好。 后来动手画了流程图,把大概的框架写 好,然后依据框架一点一点编写程序,发现写程序变得简单了很多,通过流程图,每一步要做什么事情,完成什么任务变得很清晰。 思路清晰以后,不仅程序编写更加容易,查找错误也更加轻松。 通过这次课设,我认识到我以前对流程图的观点是错误的,也更加熟悉了流程图的使用。 通过这次课程设计,我懂得了理论和实际相结合的重要性,在理论方面,看上去很容易实现的东西,实际操作起来,并没有那么容易。 经过这次编程,我提高了自己的动手能力和独立思考的能力,解决了很多难题。 参考文献 [1]李敬兆等编 .《汇编语言程序设计》 .合 肥:中国科学技术大学出版社, [2]李敬兆等编 .《汇编语言程序设计实验教程及习题解答》 .合肥:中国科学技术大学出版社, [3]王爽等编 .《汇编语言》 .北京:清华大学出版社, [4]曹加恒等编 .《新一代汇编语言课程设计》 .北京:高等教育出版社, [5]杨路明等编 .《汇编语言程序设计》 .长沙:中南大学出版社, [6]詹仕华等编 .《汇编语言程序设计》 .北京:中国电力出版社, [7]詹仕华等编 .《汇编语言程序设计习题解答及课程设计、设计 辅导》 .北京:中国电力出版社, [8]宋彩莉等编 .《汇编语言程序设计学习指导》 .西安:西安交通大学出版社, 致谢 汇编语言课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题能力的重要环节,是对学生实际动手能力的具体训练和考察过程。 随着科学技术发展的日新日异,计算机的在生活各方面中的广泛应用到达了空前的阶段。 差不多一周的时间过去了,回顾这段日子,至今我仍感慨良多。 从选课题到定稿,从理论到实践,在这过程中有苦也有甜。 通过这次课 设不仅巩固了我们平时所学的知识,查缺补漏;同时也让我们学到了许多在课本上没有的知识;使我懂得了理论与实际相结合的重要性,光有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才算是真正掌握了一门知识,并使自己得到提升。 在此次设计的过程中我们遇到了许多难题,比如说设计一个程序应该从哪着手,如何调试程序,发现问题如何解决等,但经过小组的讨论与学习,我们共同解决了这些问题,并在这过程中建立了深厚的友谊,更使我们认识到团队合作的重要性,与团结的力量,这给我们今后的生活有很大的启发。 在刘 树群老师的辛勤的指导与小组成员的共同努力下,此次汇编语言课程设计终于顺利完成。 其间遇到的许多问题都游逆而解。 同时,从刘树群老师的身上我学到了许多知识,在此我向刘老师表示我深切的感谢之情。 与此同时,对我们小组内的各成员以及给过我帮助的所有同学与老师也表示我忠心的祝福与感谢。 附录:程序清单 .486 .model flat,stdcall option casemap:none。 include D:\MASMplus\INCLUDE\ include D:\MASMplus\INCLUDE\ includelib D:\MASMplus\LIB\ include D:\MASMplus\INCLUDE\ includelib D:\MASMplus\LIB\ include D:\MASMplus\INCLUDE\ includelib D:\MASMplus\LIB\ include D:\MASMplus\include\ includelib D:\MASMplus\lib\ include D:\MASMplus\include\ includelib D:\MASMplus\lib\ IDD_ABOUTBOX equ 200 IDD_RNDPARAM equ 201 IDD_SYSPARAM equ 202 IDC_EDIT01 equ 1000 IDC_EDIT02 equ 1001 IDC_EDIT03 equ 1002 IDC_EDIT04 equ 1003 IDC_RADIO1 equ 1004 IDC_RADIO2 equ 1005 IDC_RADIO3 equ 1006 IDC_RADIO4 equ 1007 IDC_RADIO5 equ 1008 IDC_RADIO6 equ 1009 IDC_RADIO7 equ 1010 IDC_RADIO8 equ 1011 IDC_RADIO9 equ 1012 IDC_RADIO10 equ 1013 IDC_AWALK equ 4000 IDM_RESTART equ 2020 IDM_DELAY equ 2020 IDM_SAVEIMG equ 2020 IDM_EXIT equ 2020 IDM_SYSPARAM equ 2020 IDM_RNDPARAM equ 2020 IDM_BKCOLOR equ 2020 IDM_ABOUT equ 2020 MainMenu equ 3000。 种子点结构:种子坐标 (x,y),颜色 color ATOMST STRUCT x SWORD ? y SWORD ? color DWORD ? ATOMST ENDS .data xClient DWORD 600。 客户区宽度 yClient DWORD 400。 客户区高度 view DWORD 1。 生成模式: 0 无轨迹模式, 1 拖轨模式, 2 轨迹模式 smode DWORD 1。 种子模式: 0 分散, 1 集中 seed DWORD 1001。 种子数 astep DWORD 16。 单步次数 speed DWORD 18。 速度控制值(毫秒) ftime DWORD 0。 时钟标志: 0 没用, 100 时钟编号 rngs DWORD 242343,5436,5675,67,678979098,890,32545436,657563453,23435345,143545,45976768,6754,743453455,67546,754,754324783 ri。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。