专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
嵌入式
汇编语言程序设计大赛赛后总结
2019-07-13 08:06
发布
生成海报
站内文章
/
嵌入式Linux
10694
0
1562
转自
我们组队长
,我是组内SA(系统分析师)
为期将近一月(11-05公布题目,12-02晚截止提交)的校汇编比赛总算告一段落了,接下来潜心学习嵌入式Linux准备来年找工作。因为本人比较喜欢汇编(目前只学过8086),在上微机原理课的同时,在自学王爽老师的《汇编语言》(第三版),不得不说,这是国人写的很优秀的一本计算机科学系图书,但略有遗憾,我并没有完全学完学懂学会(太贪容易,太浮浅粗疏,太不能深入,太不能耐苦)。在此特将本次比赛做以总结,另外如果能够帮助到想学习的您,那将是我的荣幸(It's my pleasure)。
一、双窗口要求
将显示器的屏幕划分成大小相等的左右两个显示窗口,并画出每个显示窗口的边框,窗口大小适中。 在左边显示窗口,能够运行简单的贪吃蛇游戏,即采用键盘按键控制贪吃蛇前进方向,如“W、S、A、D”键分别为上下左右方向控制按键,以贪吃蛇碰触窗口边框为游戏终止条件,以“R”键为游戏重新开始。若游戏进行当中无键按下,则贪吃蛇保持当前方向不变直至撞墙。 在右边显示窗口,能够画出等边三角形,要求:三角形位置在该显示区域的中部,参数边长由键盘输入确定。每次根据输入的参数,在该窗口将三角形重新绘制出来。 初始工作窗口为左边显示窗口,以后每按一次Tab键切换至旁边显示窗口。当某个显示窗口被选中时,则光标在该窗口底部闪烁,键盘输入对当前窗口有效。整个系统按ESC键退出,返回DOS操作系统界面。
二、前期折腾
题目要求是2018-11-05在我们学院官网公布出来的,当天随机展开了在百度、谷歌(实验室可直接用)、必应等各大搜索引擎上的查阅资料工作。当晚即实现了
画点+画线+画矩形+画三角形
。随后将三角形部分交给组内成员,自己来完成贪吃蛇的编写。说实话,我确实不是很放心交给别人(这与我的性格有关,不知道是好事还是坏事,不过这里我要向那些曾经不被我信任的人说句抱歉,我自我感觉是比较独裁的,多亏了他们的包容理解),事实证明,我的担忧有些多余。他们不负众望,成功的完成了该任务。下面我主讲我绘制贪吃蛇的辛酸史,三角形方面我看懂后也会聊聊。
我先是借鉴了CSDN上一篇简单绘制贪吃蛇的博客,因为我们的题目要求比较简单,贪吃蛇仅仅能在窗口区域内移动即可,并不需要吃豆子,变长等骚操作。所以具体思路就是:清屏——(设置光标坐标+显示字符)*N。重复此过程(循环)。
现在选取一个方向,让蛇头向那边移动,接着蛇身和蛇尾只要等于上一时刻它前面的那一块就够了,即实现两相邻物块之间的赋值即可。现在的问题是,每次的小尾巴都会残留,因为没有什么可以跟它作交换。怎么办呢?清屏。现在思路变为:画蛇——延时——清屏——画蛇。
现在能让它朝一个方向运行起来了,接下来考虑上下左右方向。蛇怎么知道自己改向哪前进呢?响应按键。先实现按一下它只向前走一步的操作,然后一直按住就可以朝着这个方向一直前进了。那么如何使其运行过程中响应一次按键改变方向继续前进呢?中断!这是个核心操作。参考《汇编语言》(第三版)外中断那一章,将BIOS系统调用为我们所用。在中断服务程序中通过修改各标志位来实现蛇的走向。
接着是怎么让它检测撞墙然后死掉。这里比较简单,只考虑蛇头就可以啦,使蛇头满足横纵坐标在一个范围里,如果出去就宣告死亡。
此时贪吃蛇写的差不多了,队友的三角形也基本OK。然而合并时出现问题。在我的贪吃蛇下,加入三角形时,怎么都无法显示,三角形单独却可以显示。
小组开会讨论后,发现是显示模式的设置出现了纰漏。DOS下显示器有两种显示方式——字符显示(光标)、图形显示(像素点)。并且同时只能取其一。
因此不得不考虑在图形模式重新下绘制贪吃蛇。。。。。
2018-11-16 21:55 开心:能在图形模式下画出绿 {MOD}小方块,并将小方块写成一个宏来随时方便调用。
然而将宏写的太长,不能多次调用。无奈只好尝试将宏改为子过程,然而不得不说宏传递参数比子过程方便太多。
更改为子程序,通过栈来传递各项参数,修改成功。接下来该考虑怎么让它动起来,初步设想是记录下每个小方块的左上角坐标和右下角坐标,然后模仿着字符模式下画法,进行替换操作。
然而,事有转机。我们的SA来了(哈哈,平常我一个小coder老是欺负SA,不过SA关键时刻还是蛮靠谱的),SA和我一起重新思考了显示模式的问题,我们测试,在字符模式下图形确实是显示不出来,却忽略了一个重要问题——图形模式下能不能显示字符?答案是能。图形模式下可以显示字符! 这意味着我前面的贪吃蛇又起死回生了,那我还画个鬼啊,直接在程序一开始将显示方式设置为图形显示 ,那字符(光标)和图形(像素点)就都可以显示了。至此,图形模式下的贪吃蛇成功夭折!
三、程序设计流程图
总体设计流程图
键盘中断流程图
宏功能描述
子程序流程
三角形部分
四、 写在最后
此外,我们还加入了声音或者叫音乐播放。具体请参考前两篇转载的博文:
8086汇编实现按键使电脑发声(导睿米法索拉稀)
汇编实现音乐的播放
运行效果已上传哔哩哔哩,欢迎您随时骚扰:
汇编语言实现双窗口——贪吃蛇+等边三角形
源代码+运行视频+流程图VISIO均已上传CSDN下载区:
https://download.csdn.net/download/qq_40818798/10823180
男神的话——碰到问题千万不要放弃
如果一点难度都没有就拿奖证明你的水平已经高于这个比赛了,那么你拿奖是理所应当,并没有值得高兴的
碰到问题,遇到困难,想办法解决了,获得最后成功才是最快乐的
过往不恋,当下不乱,未来不惧
天道酬勤,希望每一个真正努力过的人都能有所成就!
博神的话——耐得住寂寞,经得起诱惑,抗得住挫折,记得住教训!
——An ordinary XUPTer. 2018.12.03
最后2018.12.08号为决赛日,我们荣幸拿了一等奖,这次汇编比赛圆满结束
——SA
Ta的文章
更多
>>
汇编语言程序设计大赛赛后总结
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮