汇编语言课程设计1.docx
《汇编语言课程设计1.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计1.docx(9页珍藏版)》请在冰豆网上搜索。
汇编语言课程设计1
目录
1.设计任务1
2.设计目的1
3.设计思想1
4.概要设计1
5.详细设计3
6.程序代码3
7.程序调试12
8.课设小结13
参考文献13
1.设计任务
在本次课程设计中,我组报的是编写打字游戏,该程序可以分辨输入的自与系统给出的字的相同与否,并作出相应的颜色处理。
2.设计目的
本次课程设计的目的主要是将课堂上所学的知识学以致用,并同过程序的制作过程学习课外的新知识,加强加深对知识的理解与掌握,并通过小组团结合作,发挥每个人的力量使任务更加生动有趣。
3.设计思想
程序首先定义一个hello的函数调用int21hmovah,09来显示字符串,ds:
dx定义字符串位置来使用一个80×25的界面使整个程序更加美观
游戏主程序调用BIOSint10的9号功能实现对目标文本的颜色和定位,。
游戏主程序可以用int16movah,00从键盘读取输入的字符在调用int21movah,01让键盘输入显示在屏幕中al=输入的字符,用cmp指令对输入的文本和目标文本进行比较,再利用选择语句将错误的输入字符显示为红色,将正确的输入字符显示为绿色。
在整个字符串结束后直接退到dos环境
4.概要设计
图1流程图
5.详细设计
程序首先定义一个hello的函数调用int21hmovah,09来显示字符串,ds:
dx定义字符串位置来使用一个80×25的界面使整个程序更加美观。
程序定义了choosepage函数来实现页面的转换
choosepageprocnear
moval,pg
movah,05h
int10h
ret
choosepageendp
它使可以产生新的页面,让程序的分布更加人性化。
游戏主程序调用BIOSint10的9号功能实现对目标文本的颜色和定位,。
游戏主程序可以用int16movah,00从键盘读取输入的字符在调用int21movah,01让键盘输入显示在屏幕中al=输入的字符,将键盘输入的字符与目标文本进行比较用cmp指令对输入的文本和目标文本进行比较,再利用选择语句将错误的输入字符显示为红色,将正确的输入字符显示为绿色。
在整个字符串结束后直接退到dos环境
6.程序代码
datasegment
stringdb'-----%%%****@@--welcometomygame!
!
----%%%%***@@@---','$'
authordb'----ShujunWuliangwangyingying---','$'
enter1db'1:
testword!
'
countequ$-enter1
ydb'abcdefdfdfslhkladlfjdljflddljfwefoooddddAAAA','$'
count1equ$-y
pgdb?
colordb?
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
callhello;jiemian
movah,4ch
int21h
;-----------------procofwindow---------------
helloprocnear
movah,00h;choosemode80*25
moval,03h
int10h
movpg,1
callchoosepage
movdh,7
movdl,6
calllocate
leadx,string
movah,09h
int21h
movdh,11;都在置光标前将行为11
movdl,25
calllocate
movsi,-1
;------showword--------
inin:
incsi
cmpsi,count
jzout1
movah,09h
movbh,1
moval,enter1[si]
movbl,03h;colorofletter
int10h
incdl
calllocate
jmpinin
out1:
movdh,14
movdl,9
calllocate
leadx,author
movah,09h
int21h
movah,00h
int16h
cmpal,27
jzexit
cmpal,0dh
jnzout1
callgame
exit:
movpg,0
callchoosepage
movah,4ch
int21h
ret
helloendp
;-------------locatecursor------
locateprocnear
movah,02h
movbh,1
int10h
ret
locateendp
;----------------chooseanewpage-------
choosepageprocnear
moval,pg
movah,05h
int10h
ret
choosepageendp
;-------------gameproc-----------
gameprocnear
movpg,2
callchoosepage
leadx,y
movah,09h
int21h
movdl,0dh
movah,02h
int21h
movdl,0ah
movah,02h
int21h
movsi,-1
ingame:
incsi
cmpsi,count1-1
jgeoutgame
movah,01h
int21h
cmpal,27
jzoutgame1
cmpal,y[si]
jnzwrong
cmpal,''
jzblankcolor
movcolor,03;ifrightchangecolor
blankcolor1:
movbx,si
movdl,bl
movdh,1
movbh,2
movah,02h
int10h
;-----换色调用int10的9号功能书上478页-----
movah,09h
movbl,color
movbh,2
movcx,1
int10h
incdl
movah,02h
int10h
jmpingame
blankcolor:
movcolor,33h
jmpblankcolor1
wrong:
cmpal,''
jzblankcolor2
movcolor,04;ifwrongchangecolor
wrong1:
movbx,si
movdl,bl
movdh,1
movbh,2
movah,02h
int10h
movah,09h
movbl,color
movbh,2
movcx,1
int10h
incdl
movah,02h
int10h
jmpingame
blankcolor2:
movcolor,44
jmpwrong1
outgame:
movah,00h
int16h
outgame1:
movpg,0
callchoosepage
movah,4ch
int21h
ret
gameendp
codeends
endstart
7.程序调试
在将程序初完成后进行并没有立刻进行调试而是在windows环境下用记事本打开程序对其进行说明注释,由于使用了中文,所以回到dos环境时出现了乱码但并没有对程序的运行造成影响。
第一次调试时,程序没有分页,使得打字界面和欢迎界面在一个屏幕上同时出现,让用户感觉非常不美观。
故在程序中加入了choosepage函数,这样把欢迎界面和主界面分在两个页面中显示。
程序对一般的字符输入可以准确地进行分辨但对空格键则不会作出任何处理。
在程序中加入了对空格的分辨。
用blankcolor对其进行颜色处理。
程序在目标文本没有打完时,不会退出。
在程序中加入了函数,使程序可以在目标文本没有打完时用ESC键直接退出程序,进入dos环境。
8.课设小结
本次课程设计让我们充分了解了汇编在实际软件开发中的作用和地位。
在这次课程设计过程中我们把课堂上的知识充分运用了还是不能完成实际软件开发。
这说明程序开发是不能够停留在书本上的,想要把程序作好,必须要不断通过各种途径掌握更多更好的知识,并且最重要的是要将获得的知识运用到实际编程中,要学以致用。
本次课程设计是自由分组、自由选题。
我们可以充分根据我们的兴趣和长处,选择题目,所以这次课程设计是非常顺利的。
这次让我们体会到了团队通力合作的快乐和强大力量。
我们三个按各自分配的任务,做好各个小块后,再把它们合并起来,这样程序才得以完成。
一个星期的时间并不是太长。
但团队的合作使任务如时完成。
在编程中我们遇到了很多问题和麻烦,其中有一些的确让我们束手无策。
我们就在网上和图书馆还有班上同学中寻找答复。
没有不可克服的困难。
我们都在最后将他们解决了。
9.参考文献
1.温冬蝉、沈美明,《IBMPC汇编语言程序设计》(第2版),北京:
清华大学出版社,、2002.3