汇编语言推箱子课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
本次课程设计是通过编写汇编语言程序,实现字符图形的显示,我们这组是每人用汇编语言程序实现不同的字符显示,我的是显示字符——安全。
具体实现方法可以在DOS 环境下完成。
编写完程序后分析并理解每条程序的意思,并解释主要程序的意思,最后调试出所要求的字符。
在程序编写前,我首先对自己显示的图形进行了设计,确定了每个数字相对于前一个数字的位置,以便在编写程序的时候正确定义字符的属性,也为在显示的时候能够显示较好的效果,打下了基础。
本次实验实验的编写环境是MASM,编译、链接也是在该环境下实现的。
程序的运行我使用的是DOS环境。
通过参考网上的一些原程序,我发现要编写好该程序,首先应该对BIOS的中断10熟悉,因此程序编写前,我先认真学习了该BIOS中断的有关功能。
万事开头难,一旦了解了设计此程序的原理,并在此基础上掌握相关的技术,其他的工作也就跟着展开来。
本次课程设计,是使用汇编作为开发语言实现功能要求。
总所周知,汇编是一个低级语言,对硬件有很大的依赖性,在使用上也不及高级语言方便,但其在执行效率上比高级语言有很大的优势。
本次课程设计,一方面让我们再次熟悉汇编指令,再次对算法的设计有一定的要求。
另一方面让我们对较大汇编程序的编写有一个清晰的过程,学习把一个教大问题分解成若干个小问题,即子程序是一个良好的编程习惯。
掌握汇编指令,学习的理论知识应用于解决实际的问题。
关键词:推箱子,休闲娱乐,拓展思维
Abstract
This course is designed by write assembly language program to realize the character graphic display, each of our group is in assembly language program to realize the different characters, according to my is the character - security. Concrete implementation method can be done in the DOS environment. After writing the program analysis and understand the meaning of each program, and explain the meaning of the main program, the final debugging the required characters. Before I write, I first has carried on the design to their own display graphics, identified before every number relative to the position of a number, so that at the time of write programs correctly define the character attributes, also for the display of time can show good effect, laid the foundation. This experiment experimental writing environment is MASM, compile, link, also is in the ?
The curriculum design, assembly as a development language realization is the use of functional requirements. Known, the assembly is a low-level language, have great dependence on hardware, also as a high-level language in use is convenient, but its on the execution efficiency than a high-level language has a great advantage. The curriculum design, on the one hand, let us be familiar with assembly instruction again and again to the design of algorithm has certain requirements. On the other hand let us on large assembler. Write a clear, the process of learning a teaching big problem is decomposed into several small problems, namely the subroutine is a good programming habits. Master the assembly instruction, learning theoretical knowledge is applied to solve the actual problem.
Key words:Sokoban game, recreation, creative thinking
目录
摘要 (1)
1、绪论 (4)
1.1课题研究背景和意义 (4)
1.2推箱子游戏发展现状 (4)
1.3设计方案 (5)
2、程序设计说明及代码 (6)
2.1初始化模块 (6)
2.2功能控制模块(功能实现) (11)
2.3游戏数据模块 (15)
2.4游戏设计模块 (17)
2.4.1. 数据类的设计与实现 (17)
2.4.2设定数据结构 (18)
3、游戏数据流程和设计方案 (19)
3.1数据流程和功能介绍 (19)
3.2设计目的 (19)
3.3主流程界面设计 (19)
3.4游戏设计任务和功能 (20)
4.程序调试﹑记录 (22)
5.总结 (26)
参考文献 (27)
致谢 (28)
1、绪论
1.1课题研究背景和意义
推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻
辑思维能力。
游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。
这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。
随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发了出各种版本、各种类型的推箱子。
这其中也包括很多手机版本的实现,伴随着手机与计算机的普及,很快推箱子游戏便进入了千家万户。
如今,游戏机风行的程度,是第一台电子游戏机的研制者诺兰?布什纳尔先生始料不及的。
在全世界最大的城市,直至最小的村庄,从纽约最辉煌的游乐场,到高加索最小的乡镇儿童娱乐点,在千家万户,正在进行着千千万万这样的“战斗”,伴随着无数成功与失败,兴奋与懊丧。
游戏机带来了一个全球性的疯狂症,其他任何娱乐与之相比都望尘莫及。
然而,究竟是什么原因使游戏机如此风行呢? 在回顾了游戏机发展简史之后,我们不难悟出,技术进步在游戏机发展过程中起到了极大的促进作用。
但是,技术进步绝不是游戏机风行的唯一因素。
随着终端设备开发能力的加强,作为娱乐终端的游戏机也得到了很大程度的发展。
这也加速了游戏机在全球风行程度,所以对于游戏机的研究和设计具有很重要的意义,这也是本课题研究的来源。
1.2推箱子游戏发展现状
本文针对推箱子游戏机的设计首先介绍了选题的要求,之后详细叙述了软件和硬件的设计过程。
最后论文对设计进行了总结,对设计中可以进一步改善的地方提出了建议。
在时钟脉冲的作用下,各个按键都能按照事先设定好的规则进行游戏控制。
确定键能使界面从初始化显示切换到游戏界面显示,上下左右键控制箱子的移动方向,如果可以移动则移动方块同时跟踪人物的位置及刷新动态数组的内容。
在游戏的同时程序会随时记录玩家所走的游戏步数、游戏时间,直至本关通过,在进入下一关的同时更新地图并刷新游戏步数和时间。
选关键用于选择游戏关数,在游戏过程中这个键任何时候都有效,当按下选关键后,游戏地图返回第一关,再次按下时游戏进入二关,这样每按下一次键游戏关数加一,如果游戏到了第最后一关将自动返回第一关
1.3设计方案
1.3.1. 模块划分
本游戏分五个模块
(1)初始化模块,对游戏界面进行初始化操作,包括界面切换、控制声音播放和游戏的暂停与恢复,以及手机返回键的设置。
(2)功能实现模块,主要是对游戏中各个环节进行绘制,设计出系统地图,记录玩家所用步骤,对玩家触屏的设定,针对不同的手机分辨率绘制界面,音乐功能调用,游戏中所有文字的提示信息以及游戏中背景和文字颜色大小等设置的实现。
(3)游戏设计模块,实现玩家控制小乌龟的操作,使之能够操作箱子到各个位置,以完成游戏设定的任务。
(4)游戏数据模块,主要是对玩家编辑的自定义地图和玩家选择系统设置状态的保存,以及游戏数据合理性的判断。
(5)功能控制模块,控制游戏功能的实现,包括创建菜单、调用系统音乐、获取当前系统状态、获取游戏界面图标等参数、保存游戏。
2.6.2 系统功能结构图
图3.1系统功能结构图
2、程序设计说明及代码
2.1初始化模块
(1)设计游戏所需的一个简单的窗口应用程序,程序预处理部分包括加载头文件、定义全局变量和定义数据结构,并对它们进行初始化工作,游戏从第一关开始,按上下左右方向键控制小人移动来推动箱子,可以在游戏中的任何时候按Esc键退出。
如果游戏无成功希望,可以按空格键回到当前任务的开始状态;如果成功完成当前关,则进入下一关,如果当前关是最后一关,则显示通关信息,提示游戏结束。
【程序如下】:
.386
.model flat,stdcall
option casemap:none
include CBox.inc
include StoreHouse.inc
.const
MAP_TOP equ 32
MAP_LEFT equ 1
xBmBack dd 0
xBmWall dd 30
xBmRoad dd 60
xBmBox1 dd 90
xBmBox2 dd 120
xBmObject dd 150
xBmMan dd 180
szCaption db 'RedBox',0
szLoadError db 'Load Resource Error! ',0
szAlreadyMaxGate db 'Already Max Gate!',0
szOutOfRange db 'Out of Range!',0
szSuccessMsg db 'Your are success',13,10,'Are you want to next gate?',0
FmtStr db 'val = %d',0
FmtGate db ' - No.%d',0
.data?
bmToolbar dd ?
BackDc dd ?
hBitMap dd ?
szErrorMessage db 256 dup (?)
Map db 14D*12D dup (?) ; 14 x 12 Grid
ManXPos dd ?
ManYPos dd ?
CurrGate dd ?
CurrStep dd ?
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke GetCommandLine
mov CommandLine,eax
invoke InitCommonControls
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style,CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc,OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,DLGWINDOWEXTRA
push hInst
pop wc.hInstance
mov wc.hbrBackground,COLOR_BTNFACE+1
mov wc.lpszMenuName,OFFSET MenuName
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx,addr wc
invoke CreateDialogParam,hInstance,addr DlgName,NULL,addr WndProc,NULL
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
.while TRUE
invoke GetMessage,addr msg,NULL,0,0
.BREAK .if !eax
invoke TranslateMessage,addr msg
invoke DispatchMessage,addr msg
.endw
mov eax,msg.wParam
ret
WinMain endp
WndProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
LOCAL ps :PAINTSTRUCT
LOCAL Dc:HDC
mov eax,uMsg
.if eax == WM_KEYDOWN
invoke KeyDownProc,wParam
.elseif eax==WM_INITDIALOG
push hWin
pop hWnd
invoke GetDlgItem,hWin,IDC_TBRMAIN
invoke DoToolBar,hInstance,eax
invoke LoadRes
.if eax == FALSE
invoke MessageBox,hWin,Addr szErrorMessage,\
Addr szLoadError,MB_ICONERROR
.endif
invoke InitStBar
invoke SelectGate,1
.elseif eax==WM_COMMAND
mov eax,wParam
and eax,0FFFFh
.if eax==IDM_FILE_EXIT
invoke SendMessage,hWin,WM_CLOSE,0,0
.elseif eax==IDM_HELP_ABOUT
invoke ShellAbout,hWin,addr AppName,addr AboutMsg,NULL .elseif eax == IDC_TBB_NEW
invoke SelectGate,CurrGate
.elseif eax == IDC_TBB_PREV
mov eax, CurrGate
dec eax
invoke SelectGate,eax
.elseif eax == IDC_TBB_NEXT
invoke NextGate
.elseif eax == IDC_TBB_ABOUT
invoke ShellAbout,hWnd,Addr AppName,Addr AboutMsg,NULL
.endif
.elseif eax==WM_PAINT
invoke BeginPaint,hWin,Addr ps
mov Dc,eax
invoke WMPaint,Dc
invoke EndPaint,hWin,Addr ps
.elseif eax==WM_CLOSE
invoke DestroyWindow,hWin
.elseif uMsg==WM_DESTROY
invoke FreeRes
invoke PostQuitMessage,NULL
.else
invoke DefWindowProc,hWin,uMsg,wParam,lParam
ret
.endif
xor eax,eax
ret
2.2功能控制模块(功能实现)
(2)小人移动的方向有4个,move()函数(处理小人移动的函数)对这4个方向
移动的处理都一致,只是调用函数时的参数有所不同。
首先判断小人移动的方向,然后根据小人所处世的当前状态、下一步状态或者下下一步状态进行适当的处理。
KeyDownProc endp
ManMove proc vKey :DWORD
LOCAL NewX:DWORD
LOCAL NewY:DWORD
LOCAL NewX2 :DWORD
LOCAL NewY2 :DWORD
LOCAL M1 :byte
LOCAL M2 :byte
LOCAL nPos1 :DWORD
LOCAL nPos2 :DWORD
push esi
mov eax,ManXPos
mov NewX,eax
mov NewX2,eax
mov eax,ManYPos
mov NewY,eax
mov NewY2,eax
mov eax ,vKey
.if eax == VK_UP
dec NewY
dec NewY2
dec NewY2
.elseif eax == VK_DOWN inc NewY
inc NewY2
inc NewY2
.elseif eax == VK_LEFT dec NewX
dec NewX2
dec NewX2
.elseif eax == VK_RIGHT inc NewX
inc NewX2
inc NewX2
.else
ret
.endif
mov esi ,offset Map
; Pos = y*14 + x
; Get M1
mov eax,NewY
mov ebx,14D
mul bx
add eax,NewX
mov ebx,eax
mov nPos1,eax
mov al ,[esi][ebx]
mov M1,al
; Get M2
mov eax,NewY2
mov ebx,14D
mul bx
add eax,NewX2
mov ebx,eax
mov nPos2,eax
mov al ,[esi][ebx]
mov M2,al
mov al,M1
.if (al == MAP_ROAD || al == MAP_OBJECT ) push NewX
pop ManXPos
push NewY
pop ManYPos
.elseif al == MAP_BOX1 ; push box
mov al ,M2
.if al == MAP_ROAD ; push ok
mov ebx,nPos2
mov al,MAP_BOX1
mov [esi][ebx],al
mov ebx,nPos1
mov al,MAP_ROAD
mov [esi][ebx],al
push NewX
pop ManXPos
push NewY
pop ManYPos
.elseif al == MAP_OBJECT mov ebx,nPos2
mov al,MAP_BOX2
mov [esi][ebx],al
mov ebx,nPos1
mov al,MAP_ROAD
mov [esi][ebx],al
push NewX
pop ManXPos
push NewY
pop ManYPos
.endif
.elseif al == MAP_BOX2
mov al,M2
.if al == MAP_ROAD
mov ebx,nPos2
mov al,MAP_BOX1
mov [esi][ebx],al
mov ebx,nPos1
mov al,MAP_OBJECT
mov [esi][ebx],al
push NewX
pop ManXPos
push NewY
pop ManYPos
.elseif al == MAP_OBJECT
mov ebx,nPos2
mov al,MAP_BOX2
mov [esi][ebx],al
mov ebx,nPos1
mov al,MAP_OBJECT
mov [esi][ebx],al
push NewX
pop ManXPos
push NewY
pop ManYPos
.endif
.else
.endif
invoke Repaint
pop esi
ret
2.3游戏数据模块
(3)函数实现的功能分别是人空地移动箱子到空地、从目的地移动箱子到空地、从空地移动箱子到目的地和中从目的地移动箱子到目的地。
X、y指明小人当前所处的位置,字符a表示移动的方向,有“u”、“d”、“l”和“r”4个值,分别表示向上、下、左、右移动。
这几个函数的实现原理大致相似。
对于前面两个函数,首先判断移动的方向,人小人所在的位置沿着移动的方向移动一步画小人,移动两步画箱子,并设置状态为“b”;
对于后面两个参数,首先判断移动的方向,从小人所在的位置沿着移动方向移动一步画小人,移动两上在目的地画箱子,并设置状态为“i”,表明箱子在目的地上。
ManMove endp
XYtoPos proc x:DWORD,y:DWORD
; pos = y *14 + x Zero-Based
mov eax, y
mov ebx, 14D
mul bx
add eax ,x
ret
XYtoPos endp
Repaint proc
LOCAL R:RECT
invoke GetClientRect,hWnd,Addr R
invoke InvalidateRect,hWnd,Addr R,0
ret
Repaint endp
Check proc
; Check Success and return true or false
LOCAL Result :DWORD
push esi
push TRUE
pop Result
lea esi,Map
mov ecx, 14D*12D
mov ebx ,0
@@1:
mov al ,[esi][ebx]
inc ebx
cmp al,MAP_OBJECT
jz @@2
dec ecx
jnz @@1
jmp @@ExitCheck
@@2:
push FALSE
pop Result
@@ExitCheck:
mov eax,Result
pop esi
ret
2.4游戏设计模块
2.4.1. 数据类的设计与实现
该类主要用于对地图数据的保存与提取,在保存时,判断玩家编辑的地图
是否合理,如果不合理则提示相应信息,只有合理的地图才能保存。
在提取地
图信息的时候也进行一次检查,如果编辑地图不合理则载入默认设置。
关键代
码及说明如下:
通过public static boolean exportDataToFile(int[][] editDataArray)方法将地图数据写入到文件中;通过public static boolean checkUserFile()检查用户编辑数据是否合理;通过public static int[][] importDataFromFile()从文件中读取数据载入地图。
2.4.2设定数据结构
例如行列数必须在15*15之间,玩家绘制地图时,当前所选游标实现添加、删除、替代等功能,判断玩家是否完成任务。
Check endp
InitStBar proc
LOCAL StbarHandle :DWORD
invoke GetDlgItem,hWnd,IDC_SBR1
mov StbarHandle,eax
invoke SendMessage,StbarHandle,SB_SIMPLE,1,0
;invoke SendMessage,StbarHandle,SB_SETPARTS,1,150
ret
InitStBar endp
ShowMessage proc Val:DWORD
push eax
invoke wsprintf,Addr szErrorMessage,Addr FmtStr,Val
invoke MessageBox,hWnd,Addr szErrorMessage,Addr szCaption,MB_ICONINFORMATION
pop eax
ret
ShowMessage endp
end start
3、游戏数据流程和设计方案
3.1数据流程和功能介绍
本设计基本实现了可以在PC平台上运行的推箱子游戏,本游戏分五个模块:1、初始化模块;2、功能实现模块;3、游戏设计模块;4、游戏数据模块;5、功能控制模块。
本游戏是一款益智类游戏,所以操作十分简单。
游戏中玩家可以用键盘的上、下、左、右键控制小人的移动位置,也可以直接触摸手机屏幕完成相应操作。
游戏规则也十分简单,玩家在一个有限空间内,将木箱放到指定的位置。
箱子只能推不能拉,而且一次只能推动一个箱子,胜利条件是把所有箱子都推到目的地。
3.2设计目的
(1)此次的设计是开发一款可在PC平台上运行的推箱子游戏程序,可流畅运行游戏,编辑地图等
(2)进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。
3.3主流程界面设计
在策划推箱子游戏时,首要考虑到要设计一个优美的游戏界面,操作起来更加人性化,即玩家可以用键盘的上、下、左、右键控制小乌龟的移动位置,也可以直接触摸手机屏幕完成相应操作。
在画面方面也要更加清新,方便各个年龄段的玩家使用。
我对这个游戏的定义是一个轻量级的益智游戏,不存在复杂的情节,做的主要工作为设计游戏各关仓库的形状、大小、可通过区域、各关中箱子的初始位置与目的地。
当然在正式开始编写程序时,需要上网搜集了游戏中要用到的图片、声音等,收集一些有用的素材。
图1.1 界面设计图
图1.2数据流程图
3.4游戏设计任务和功能
3.4.1. 基本要求
(1)每关卡箱子数目不定;
(2)主角和箱子只能呆在通道及目标位置上移动,不能穿墙;
推箱子游戏
初始化模块
画图模块
移动箱子模
移动小人模
功能控制模
(3)主角不能穿过箱子;
(4)箱子数量和目标位置数量相等(但每个箱子并不和唯一的目标位置一一对应);
(5)主角可以移动和推动木箱(响应键盘方向键);
(6)主角只能往前推动箱子,不能向后或者向侧面拉箱子;
(7)主角不能同时推动两个箱子;
(8)箱子移动方向正前方紧挨墙壁,不可推动;
(9)允许撤销以及重做游戏步骤;
(10)将所有箱子推到设定位置则通过本关,自动进入下一关卡;
(11)记录每一关中玩家的移动步数;
3.4.2. 地图编辑器
(1)可通过地图编辑器生成地图;
(2)地图由小正方块拼接组成;
(3)地图中每一格可以是墙、通道、木箱、目标位置;
(4)游戏主角所在位置同时必须是通道或者目标位置;
(5)一张地图中主角数目有且仅有一个;
(6)一张地图中箱子数目必须与目标位置数目相等;
(7)允许对正在编辑的地图清除或者替换某一格中的内容;
(8)地图中一格不允许墙、通道、木箱、目标位置中两个及以上共存,最后添加的类型为该格代表的类型;
(9)通过地图编辑器生成的地图可以被游戏程序调用;
3.4.3. 扩展功能
(1)保存自定义地图,重启程序后依然可以编辑和调用运行该地图;
(2)屏幕分辨率自适应;
(3)资源文件支持简体中文和英文;
(4)菜单功能,玩家通过看目录按对应的键可以进入对应的功能菜单,其中1进入游戏,2选择游戏关卡,3游戏帮助指南,4退出游戏。
(5)游戏功能:玩家可以通过操纵键盘中的上下左右键进入游戏进行各种操作来完成游戏。
(6)循环功能:当玩家正在游戏的时候如果某一步走错了,导致游戏无法
完成,可以随时重新开始游戏来完成关卡,游戏过程中可以随时按
Ctrl+V退出游戏。
(7)顺序功能:当玩家完成了某一关之后,随着进入下一关门可以按顺序进入下一关,继续开始更有挑战的关卡,如果该关是最后一关,则显示
通关完成。
4.程序调试﹑记录
程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。
这是保证游戏正常运行的必不可少的步骤。
编完计算机程序,得调试所写程序是否正确,是否能满足所要求的功能
启动游戏后便可直接进入游戏主界面,主界面上玩家可以自由选择对游戏的操作。
该游戏的运行步骤与调试结果如下:
1. 启动游戏后游戏主界面,效果如图所示。
图2.1游戏启动图
2.当你完成某一关卡时,弹出一对话框,点击“确定”进行下一关卡,
点击“取消”继续该关卡。
图2.2通关图
3. 点击“←,→”即可进入玩家自己已经编辑好的游戏中,界面设计和系统设置的关卡相同,过关之后,自动进入系统设置的第一关卡。
效果如图所示。
图2.3选择关卡图
4. 点击“文件”,即可进入玩家自行编译游戏仓库中。
玩家可以在该标题栏中选择关卡难度或退出该游戏。
图2.4自行编译关卡图
5. 点击“编译”,即可进入玩家自行编译游戏仓库中。
玩家可以在游戏的格中按照自己的意愿设计关卡(需要符合游戏自身规定)。
该界面共有9个选项键,分别是墙、路、目的地、箱子、小人、锁定、删除、保存、返回主菜单,玩家可以通过对应的数字按键或直接触控屏幕实现对应功能。
效果如图所示。
图2.5 选择功能图
6. 点击游戏其他位置时,则弹出如下图所示的对话框,点击“确定”恢复正常。
图2.6错误恢复图
7. 点击“工具栏”,则可以调试游戏。
该界面介绍了关于本游戏的一些修改方法。
效果如图所示。
图2.7调试游戏图
8. 点击“退出”,则会退出游戏。
图2.8退出游戏图
5.总结
一周的汇编语言课程设计结束了,我的收获很大。
通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。
通过这次课程设计,我巩固了所学知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用DEBUG指令。
在整个程序的编写中,调试占了很大部分的时间。
要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。
通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。
本次汇编语言课程设计是利用我们平时所学的汇编知识编写一个成绩评定的小程序,刚拿到题目的时候还有点担忧。
由于平时汇编语言的知识掌握的并不牢固,并且也没有过像这样的为期一周的汇编语言实践课程。
但当静下心来仔细把问题读懂和头脑中有了大致思路的时候,这种担忧就完全消失了。
其实这次课程设计并不要求你把书上各种指令及其工能掌握的很好并且能熟练的运用汇编语言编程,而恰恰是利用这次课程设计的机会来提高这方面的能力。
这就是一个心态问题,看你有没有摆正心态,看你有没有面对挫折的勇气,如果一开始就没摆正心态,思维就会堵塞,后面就更无法做下去了。
这次课程设计让我更加懂得以后在面临困难与挫折的时候要有平和的心态,要有冷静的头脑。
通过本次汇编语言课程设计,也让我更加明白实践的重要性,如果整天的学习课本上的理论知识而不拿来用那肯定是很烦的,况且汇编语言这门课本身学起来就很烦,尤其是要去理解各种指令的功能,还要学习相应的硬件知识。
再者,学习理论知识的目的还是要拿来运用,通过实践来巩固所学的理论知识。
并且通过这次课程设计实践,让我一改往日的厌学情绪,尤其是当程序运行正确的时候,那种来自内心的成就感,让我更加有信心学好汇编语言了。
参考文献
[1]钱晓捷.汇编语言程序设计.北京:电子工业出版社,2012.6
[2]沈美明、温冬婵等.IBM-PC汇编语言程序设计.北京.清华大学出版社,2001.8
[3] 詹仕华等.汇编语言程序设计.北京:中国电力出版社,2008.2
[4]詹仕华等.汇编语言程序设计习题解答及课程实验、设计辅导.北京:中国电力出版社,2008.2
[5]王爽.汇编语言. 北京:清华大学出版社2003.5
致谢
本设计是在刘树群导师教授的悉心指导下完成的,导师渊博的知识,严谨的治学态度,一丝不苟的工作作风,平易近人的性格都是我学习的楷模。
在论文的研究及整理期间,导师给了我很大的支持和鼓励,才使得论文得以顺利的完成,在此谨向导师表示忠心的感谢和崇高的敬意。
同时感谢各位队友的支持,他们给我们提供了必要的素材,提供了很大的方便,感谢同班同学的帮助,在作论文期间,他们不仅在学习上对我有很大的帮助,还在生活上提供方便。
这一周来,我和他们相处的是非常愉快的。
同时还要感谢外班等同学,他们也给了我很大的支持和帮助。
最后,感谢各位评委能在百忙之中对我的论文进行审察,由于本人知识有限,不足之处在所难免,还请各位评委指正。