《汇编语言课程设计》上海应用技术学院 打字练习程序的设计Word格式文档下载.docx
- 文档编号:21104994
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:29
- 大小:120.38KB
《汇编语言课程设计》上海应用技术学院 打字练习程序的设计Word格式文档下载.docx
《《汇编语言课程设计》上海应用技术学院 打字练习程序的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《汇编语言课程设计》上海应用技术学院 打字练习程序的设计Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
设置数组记录笑脸字母的存在与否)。
笑脸字母全部消失后,游戏停止,显示告别画面,显示用户成绩。
其他任务
自行设计新的功能。
二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)
1.分析原“typetest.asm”程序结构(见附件),画出主程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);
2.对已经实现的功能(修改的、新编写的)做详细的说明,并附上流程图及程序清单(修改/增加的指令请使用大写字母,以示区别);
3.对该“打字练习程序”的进一步设想;
4.对于有设想但最终未实现的功能的大致编程思路的阐述;
5.论述在设计过程中遇到的并且对你具有启发性的问题
三、课程设计工作进度计划:
周一:
布置任务,介绍程序功能和基本模块。
学生仔细阅读原始源程序,在重要行添加注解。
周二:
画出主程序粗略的流程图和各个模块的详细流程图,对课程设计的基本任务进行设计,并开始编程。
周三~周四:
设计程序及调试程序。
同时着手撰写课程设计报告。
周五:
完成设计,提交开发完成的程序和课程设计报告,接受教师考评。
四、主要参考资料
[1]杨文显,宓双,胡建人.新编汇编语言程序设计.清华大学出版社,2010
[2]朱玉龙,任文览等.汇编语言程序设计.清华大学出版社,2003
[3][美]KipR.Irvine.汇编语言程序设计.电子工业出版社,2004
指导教师(签名):
杨晶鑫教研室主任(签名):
杨晶鑫
2014年6月25日2014年6月25日
上海应用技术学院课程设计任务书ii
1概述
本课程设计是《汇编语言程序设计》课程的后续教学环节,其宗旨是使学生通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作,对汇编语言程序设计有进一步的认识,提高编程技巧和阅读理解复杂程序的能力。
1.1基本功能
(1)设置输入界面,用户输入密码后才能进入主菜单
(2)修改主菜单,在主菜单上显示当天日期。
(3)修改主菜单,增加可供用户选择难度级别的选项。
(4)为用户打分,正确输入字母使用时间越少,得分越高。
(5)修改程序,在屏幕右上角显示用户得分、已输入字母数、正确数。
(6)将程序中的“置光标位置”程序段落用宏调用完成,添加“置光标位置”宏定义。
1.2拓展功能
(1)设置限定时间,到达该时间,用户尚未得到要求的分数时,游戏停止。
(2)到达限定时间,用户得分达到预设的值时,自动提高难度等级,屏幕变色。
(3)修改程序,底行的笑脸字母消失后,不再在该列下落字母(提示:
笑脸字母全部消失后,游戏停止,显示告别画面,显示用户成绩。
1.3其他功能
设置限定出错次数,到达该出错次数,游戏就会停止。
2详细设计说明
首先先定义一个清屏幕的宏。
调用这个宏,就清除DOS界面上的所有内容,专门显示我们所需要的菜单。
接着定义我们的数据段代码。
在数据段中,有我们菜单中所需要显示的提示信息,还有要显示在界面上方的字母乱序,以及给显示字母乱序所留出的数据空间。
接下来就是定义堆栈段代码,为各段留下空间。
再下来就是最重要的代码段,因为所有的功能都是在代码段中实现的。
代码段中先实现显示主菜单、按Enter键开始程序和按E退出这几项简单的功能。
接着实现显示字母乱序的功能,主要思想是将字母乱序放到之前定义的寄存器中。
然后实现接受键盘所输入的内容的功能。
如果输入的是Esc,则返回主菜单;
如果输入的是Space,程序就暂停;
如果是正确的字母,改字母就消失。
消失的思想就是在当前字母位置输入空格,然后光标放到下一个下落的字母的位置。
2.1原“typetest.asm”程序结构
首先在typetest.asm中定义了四个宏调用的程序
(1)方框宏定义
(2)清屏宏定义
(3)菜单显示宏定义
(4)设置光标位置宏定义
2.2流程图
打字练习程序的主要流程如图所示:
N
Y
图2.1程序图1
图2.2程序图2
图2.3程序图3
2.3已经实现的功能程序结构及运行截图
2.3.1设置界面密码验证后进入
iddb2,0,1,3,1,4
infdb?
stringdb0ah,0dh,"
Pleaseenterthepassword(******):
$"
string1db0ah,0dh,"
Thepasswordiswrong,pleaseenterthepasswordagain:
leadx,string
movah,09h
int21h
two:
movcx,6
leasi,id
again:
movah,01h
andal,0fh
cmpal,[si]
jnzone
incsi
incbx
loopagain
jmpexit1
one:
leadx,string1
jmptwo
图2.4密码验证
2.3.2主菜单显示当前日期
movcx,6
movbx,0
movah,0
moval,9
s:
pushcx
pushax
out70h,al
inal,71h
movah,al
movcl,4
shrah,cl
andal,00001111b
addah,30h
addal,30h
movbyteptrds:
[bx],ah
[bx+1],al
popax
cmpal,4
jnas1
jmpshorts2
s1:
decal
s2:
cmpal,7
jneok
subal,2
ok:
addbx,3
popcx
loops
movdx,0
movah,9
图2.5日期显示
2.3.3修改菜单,增加用户难度选择级别
mes11db"
Hit:
mes12db"
Right:
mes13db"
Score:
movah,01h
cmpal,'
1'
jenext1
2'
jenext2
3'
jenext3
jmpkeyin1
next1:
movbx,9999h
movspeed,bx
jmpnext
next2:
movbx,5000h
next3:
movbx,2000h
next:
图2.6难度选择
2.3.4屏幕显示用户得分与成绩情况
score_displayproc
Init_place00d,65d
int10h
leadx,mes12
movax,score
callwritedec
Init_place00d,43d
leadx,mes13
ret
score_displayendp
hit_displayproc
movah,0ah
moval,"
"
;
将空格赋值为AL
movbh,00h
movcx,01h
int10h
mov[save],dl
mov[save+1],dh
Init_place00d,55d
leadx,mes11
addhit,1
movax,hit
movdl,[save]
movdh,[save+1]
hit_displayendp
图2.7分数显示
2.3.5在程序中的“置光标位置”程序段落用宏调用完成,添加“置光标位置”宏定义。
Init_placemacrorow,col;
置光标位置宏定义
movah,02h
movbh,00h
movdh,row
movdl,col
int10h
endm
3对该“打字练习程序”的进一步设想
3.1提高逻辑性
可以让每次出现的字母都变得有逻辑性,就像打汉字的时候的那种逻辑性,还可以增加英语之类的打字练习。
可以插入小程序,让电脑随机生成单词,可以锻炼大家四六级单词的拼写能力。
这样比随意的生成字母要玩起来有趣的多,不然没有人愿意体验这款程序的趣味性。
3.2摆脱枯燥的黑白DOS界面
可以改变每一个字母在掉落的时候的颜色。
让每一个字母的不同时刻的颜色都由电脑随机产生。
不要每次都是一个白色字母下来,而且字体大小也可以随机,这样就显得游戏很生动,不同色彩和不同字体搭配就感觉十分高大上了。
3.3加入音效
在打字练习的过程中还可以有一些适当的声音来配合着练习的进行,这样的话效果和用户的体验都会有更进一步的提高的。
当你连续正确十个字以上就加入鼓掌的声音,要是打错了就可以来一个“炸弹”的音效,这样的氛围调动可以大大提升玩家的积极性,给人激励可以给他信心不断地玩下去。
3.4加入错误次数限制
设置限定出错次数,到达该出错次数,游戏停止
wrongdb30
mes9db"
GameOver!
decwrong
cmpwrong,0
jnepass
jmpover
over:
clear_screen01d,01d,23d,78d;
清屏
menu03d,33d,mes9
movax,4c00h;
退出程序
图3.1错误退出显示
4课程设计总结
4.1心得体会
汇编语言的应用已渗透到生活中的方方面面,利用机器语言,以前难以实现的东西轻而易举地成为现实。
然而,作为工科学生,要了解汇编的内部结构、系统构成、指令系统、输入输出接口、存储器和接口的扩展等等,这些对我们来说非常重要。
刚拿到这个题目觉得特别难,感觉无从下手。
汇编语言不同于高级语言,对于高级语言,我们心中可以有一个非常清晰的思路,在实现功能的时候非常得心应手。
但汇编语言不同,它是面向机器的语言。
用它编写程序时的思路应该按照机器执行程序的思路来编写,所以这个挑战对我来说非常大。
在编写程序之前,首先要摒弃高级语言思路的干扰。
汇编语言程序设计的方法和多模块程序设计。
作为最基本的编程语言之一,汇编语言的重要性勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。
尤其在和硬件关系非常密切的程序或要提高运算速度的程序,即使是
C
语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。
在做准备工作的时候,我从网上找到了相关的代码,照着别人的步骤感受汇编语言编写程序的思路。
很多地方都不是太明白,但是通过查询课本以及上网找相关资料,还是把一些内容理解了。
这次汇编语言课程设计历时5天,在整整5天的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序流程图先画出来,但是我开始总觉得这样做没必要,很浪费时间。
但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序框图是很有必要的。
因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
此次的课程设计,提高了我阅读和分析程序的能力。
因为刚一拿到目标代码时,有太多的不明白,必须一行一行地分析其目的和功能。
而时间又比较紧迫,所以我在比较短的时间里分析出了代码的道理。
在这个过程中我的分析与模仿能力得到了提高。
由于对汇编语言的一些基本知识的掌握不足,程序中还存在或多或少的缺陷和不足,有一些的基本功能在逻辑上还存在一些的小问题,但是不会影响基本的使用。
4.2系统改进
对于我所设计的打字系统,其满足了题目的所有要求,所有功能都可以实现。
但我觉得这个打字练习还有许多地方可以改进,首先是界面,界面还可以设置的更友好,现在的界面看上去不是那么的友好,只满足了基本功能,让用户知道如何使用这个系统。
改进可以让用户感觉眼前一亮这种效果最好,当然这需要花费更多的时间和精力。
再一个可以改进的地方便是系统的功能了,该打子系统的功能比较少,对于打字练习来说,其目的在于提高使用者的打字速度,所以程序最好加一个计时功能模块,这样用户就可以知道使用后自己的打字速度有没有得到提升。
还有就是当用户打字出错的时候,最好在给用户配备一个警告功能以及统计错误功能,这样可以提醒用户,让用户知道打字出错了。
当然还有其他许多地方值得我进一步去探讨,去完善这个程序。
5软件使用说明
5.1系统密码
201314
5.2运行问题说明
由于系统版本不同的缘故,在程序汇编链接的时候会停滞一部,但只要在敲一下回车在进入一次就好了。
很多时候在进入时输入密码后需要按回车才能跳转到主界面。
5.3运行环境
运行环境:
Win9x/NT/2000/XP/
参考文献
[1]杨文显,宓双,胡建人.新编汇编语言程序设计,清华大学出版社,2010
[2]沈美明,温冬婵,IBM-PC汇编语言程序设计(第2版),北京,清华大学出版社
2008年4月;
[3]
温冬蝉、沈美明,张赤红,<
<
IBM
PC汇编语言程序设计试验设计>
>
北京:
清华大学出版社.1992.9月第一次出版;
[4]温冬婵著,《IBM-PC
汇编语言程序设计例题分析》,清华大学出版社,1991年6月第1版;
[5]王庆生,汇编语言程序设计,合肥,合肥工业大学出版社,2006年8月;
[6]翟社平,汇编语言程序设计教程,西安,西安电子科技大学出版社,2003年2月;
[7]金汉均
金洋,汇编语言程序设计,武汉,武汉大学出版社
,2007年9月;
[8]梁发寅,宗大华,汇编语言程序设计,北京,人民邮电出版社,2004年3月;
附录
;
Assemblyprogramfortestyourtypeskills
Writedbyin06/24/2003
ModifiedbyMishuangin06/06/2005
------------------------------------------------
Init_boardermacrorow,col,char,dhdl,count;
设置边框
Localll
movcx,count
ll:
movah,02h
int10h
pushcx
movah,0ah
moval,char
movcx,01h
popcx
incdhdl
loopll
---------------------------------------------------
clear_screenmacrotop,left,bottom,right;
清屏宏定义
movah,06h
moval,00h
movbh,07h
movch,top
movcl,left
movdh,bottom
movdl,right
movdh,00h
movdl,00h
----------------------------------------------------
menumacrorow,col,text;
菜单显示宏定义
movbh,00h
movdh,row
movdl,col
int10h
movah,09h
leadx,text
int21h
======================================================
includeylib.h
Datasegment
db"
00/00/0000:
00:
00"
'
$'
ZKdb"
WELCOMETOPLAY$"
datedb"
date:
mes0db"
PressEnterkeytocontinue.......$"
mes1db"
Whenaletterisdropping,pleasehitit!
mes2db"
Pressspacekeytopause!
mes3db"
PressESCkeytoreturnmaininterface!
mes4db"
Pressletter'
E'
toexit!
mes5db"
Pleasechoosethedifficulty:
mes6db"
No.1easy$"
mes7db"
No.2normal$"
mes8db"
No.3hard$"
mes10db"
YourScoreis:
Speeddw?
Lettersdb"
jwmilzoeucgpravskntxhdyqfb"
db"
iytpkwnxlsvxrmofzhgaebudjq"
nwimzoexrphysfqtvdcgljukda"
Present_positiondb1
db0
iddbi,l,o,v,e,u
scoredw0
hitdw0
rightdw0
savedb?
Dataends
=========================================================
codesegment
mainprocfar
assumecs:
code,ds:
data
start:
movax,data
movds,ax
moves,ax
movcx,5000h
movah,01h
int10h;
设置光标类型
clear_screen00d,00d,24d,79d;
清屏
exit1:
Init_boarder00d,00d,0ah,dl,80d
Init_boarder24d,00d,0ah,dl,80d
Init_boarder
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言课程设计 汇编语言课程设计上海应用技术学院 打字练习程序的设计 汇编语言 课程设计 上海 应用 技术学院 打字 练习 程序 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)