汇编语言 打字练习 课程设计报告内附源程序.docx
- 文档编号:3851302
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:27
- 大小:162.56KB
汇编语言 打字练习 课程设计报告内附源程序.docx
《汇编语言 打字练习 课程设计报告内附源程序.docx》由会员分享,可在线阅读,更多相关《汇编语言 打字练习 课程设计报告内附源程序.docx(27页珍藏版)》请在冰豆网上搜索。
汇编语言打字练习课程设计报告内附源程序
课程设计
2010~2011学年第二学期
设计题目打字练习程序
院(系)计算机科学与信息工程
专业计算机科学与技术
班级******b1学号**********
学生姓名王涛
设计时间2011年6月20日——2011年6月24日
指导教师蒯锐
提交日期2011年6月24日
上海应用技术学院课程设计任务书
课程名称
汇编语言课程设计
课程代码
B704207
设计题目
打字练习程序
题目序号
设计时间
2011年6月20日——2011年6月24日
系(院)
计算机科学与信息工程
专业
计算机科学与技术
班级
091041b1
一、课程设计任务(条件)、具体技术参数(指标)
本课程设计是《80X86汇编语言程序设计》课程的后继教学环节,通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作,使学生对汇编语言程序设计有更进一步的认识,提高阅读理解复杂程序的能力和程序设计能力。
根据所给的“typetest.asm”应用程序框架,在此基础上修改和添加功能。
基本任务:
1认真阅读“typetest.asm”源程序,理解程序每一条指令在程序中的作用。
绘制程序流程图(简略总图,各模块详细流程图),给程序中的关键语句(后跟分号)作注释。
设置输入界面,用户输入密码后才能进入主菜单;
2.修改主菜单,在主菜单上显示当天日期;
3.修改主菜单,增加可供用户选择难度级别的选项。
4.为用户打分,正确输入字母使用时间越少,得分越高。
5.修改程序,在屏幕右上角显示用户得分、已输入字母数、正确数。
6.将程序中的“置光标位置”程序段落用宏调用完成,添加“置光标位置”宏定义。
扩展任务:
7.设置限定时间,到达该时间,用户尚未得到要求的分数时,游戏停止。
8.到达限定时间,用户得分达到预设的值时,自动提高难度等级,屏幕变色。
9.修改程序,底行的笑脸字母消失后,不再在该列下落字母(提示:
设置数组记录笑脸字母的存在与否)。
笑脸字母全部消失后,游戏停止,显示告别画面,显示用户成绩。
其他任务:
自行设计新的功能。
二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)
(1)分析原“typetest.asm”程序结构:
画出主程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);
(2)对你已经实现的功能(修改的、新编写的)做详细的说明,并附上流程图及程序清单(修改/增加的指令请使用大写字母,以示区别);
(3)自己对该“打字练习程序”的进一步设想;
(4)对于有设想但最终未实现的功能的大致编程思路的阐述;
(5)论述在设计过程中遇到的并且对你具有启发性的问题。
(6)严禁抄袭,发现雷同,双方扣分。
三、课程设计工作进度计划:
周一:
教师布置任务,讲解本课设模块。
学生细读原始源程序,在重要行添加注解。
周二:
画出主程序粗略的流程图和各个模块的详细流程图,开始基本任务。
周三~周四:
设计程序及调试程序。
同时着手写报告。
周五:
完成设计,提交报告,接受教师考评。
四、主要参考资料
[1]杨文显,宓双,胡建人.新编汇编语言程序设计,清华大学出版社,2010
[2]朱玉龙,任文览等.汇编语言程序设计,清华大学出版社,2003
[3][美]KipR.Irvine.电子工业出版社,2004
指导教师(签名):
蒯锐教研室主任(签名):
杨晶鑫
2011年6月20日2011年6月20日
2010~2011学年第二学期·········································1
1.概述···························································5
1.1基本功能··················································5
1.2扩展功能··················································6
2.详细设计说明···················································7
2.1分析原“typetest.asm”程序结构····························8
2.1已经实现的功能(修改的、新编写的)说明····················9
3.对该“打字练习程序”的进一步设想······························10
3.1·························································11
3.2··························································12
3.3··························································12
4.课程设计总结··················································13
5.软件使用说明··················································13
6.附录(参考文献,原代码)·······································14
6.1参考文献····················································14
6.2源代码·····················································15
1概述
本课程设计是《80X86汇编语言程序设计》课程的后继教学环节,通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作,使学生对汇编语言程序设计有更进一步的认识,提高阅读理解复杂程序的能力和程序设计能力基本功能
1.1基本功能
(1)设置输入界面,用户输入密码后才能进入主菜单
(2)修改主菜单,在主菜单上显示当天日期。
(3)修改主菜单,增加可供用户选择难度级别的选项。
(4)为用户打分,正确输入字母使用时间越少,得分越高。
(5)修改程序,在屏幕右上角显示用户得分、已输入字母数、正确数。
(6)将程序中的“置光标位置”程序段落用宏调用完成,添加“置光标位置”宏定义。
1.2拓展功能
1.设置限定时间,到达该时间,用户尚未得到要求的分数时,游戏停止。
2.到达限定时间,用户得分达到预设的值时,自动提高难度等级,屏幕变色。
3.修改程序,底行的笑脸字母消失后,不再在该列下落字母(提示:
设置数组记录笑脸字母的存在与否)。
笑脸字母全部消失后,游戏停止,显示告别画面,显示用户成绩。
其他任务:
2详细设计说明
2.1分析原“typetest.asm”程序结构
2.1.1.首先在typetest.asm中定义了四个宏调用的程序
(1)方框宏定义
(2)清屏宏定义
(3)菜单显示宏定义
(4)设置光标位置宏定义
2.1.2data数据段的定义:
包括的所有的显示字幕的定义。
2.1.3各宏定义函数的调用以及对各个子函数的调用。
2.1.4程序的主要流程图
返回
不正确
密码正确
确定后进入
2.2已经实现的功能(修改的、新编写的)说明
2.2.1本程序已实现了基本的功能:
(7)设置输入界面,用户输入密码后才能进入主菜单;
(8)修改主菜单,在主菜单上显示当天日期;
(9)修改主菜单,增加可供用户选择难度级别的选项;
(10)为用户打分,正确输入字母使用时间越少,得分越高;
(11)修改程序,在屏幕右上角显示用户得分、已输入字母数、正确数;
(12)将程序中的“置光标位置”程序段落用宏调用完成,添加“置光标位置”宏定义;
2.2.2本程序的扩展功能:
(1)修改了主界面的背景颜色以及字体的颜色,对一些主要的提示信息进行了一些优化。
(2)增加了一键显示用户得分记录的功能,只要用户在主界面上输入“C”,就可以显示出来用户的得分记录
3对“打字练习程序”的进一步设想
3.1可以让每次出现的字母都变得有逻辑性,就像打汉字的时候的那种逻辑性,还可以增加英语之类的打字练习。
3.2可以改变每一个字母在掉落的时候的颜色。
让每一个字母的不同时刻的颜色都由电脑随机产生。
3.3在打字练习的过程中还可以有一些适当的声音来配合着练习的进行,这样的话效果和用户的体验都会有更进一步的提高的。
4课程设计总结
4.1通过这次课程设计让我跟具体的了解了汇编语言的用途以及他的特点,这样有利于在今后的实践中更好的去应用汇编语言解决问题,同时通过这次的课程设计也体现出了我的在汇编方面的一些基础知识的不足。
由于对汇编语言的一些基本知识的掌握不足,程序中还存在或多或少的缺陷和不足,有一些的基本功能在逻辑上还存在一些的小问题,但是不会影响基本的使用。
5软件使用说明
由于系统版本不同的缘故,在程序汇编链接的时候会停滞一部,但只要在敲一下回车在进入一次就好了。
很多时候在进入时输入密码后需要按回车才能跳转到主界面。
6附录(参考文献,原代码)
参考文献
[1]杨文显,宓双,胡建人.新编汇编语言程序设计,清华大学出版社,2010
[2]朱玉龙,任文览等.汇编语言程序设计,清华大学出版社,2003
[3][美]KipR.Irvine.电子工业出版社,2004
原代码
;Assemblyprogramfortestyourtypeskills
;Writedbyin06/24/2003
;ModifiedbyMishuangin06/06/2005
;------------------------------------------------
includeylib.h
Init_boardermacrorow,col,char,dhdl,count;
Localll
movcx,count
movdh,row
movdl,col
ll:
movah,02h
movbh,00h
int10h
pushcx
movah,0ah
moval,char
movbh,00h
movcx,01h
int10h
popcx
incdhdl
loopll
endm
;---------------------------------------------------
clear_screenmacrotop,left,bottom,right,col;清屏宏定义
movah,06h
moval,00h
movbh,col
movch,top
movcl,left
movdh,bottom
movdl,right
int10h
movah,02h
movbh,00h
movdh,00h
movdl,00h
int10h
endm
;----------------------------------------------------------
SETCUSORMACROPAGE,ROW,COLUMN;设置光标位置
MOVAH,02H
MOVBH,PAGE
MOVDL,COLUMN
MOVDH,ROW
INT10H
ENDM
;----------------------------------------------------
menumacrorow,col,text;菜单显示宏定义
movah,02h
movbh,024h
movdh,row
movdl,col
int10h
movah,09h
leadx,text
int21h
endm
;======================================================
Datasegment
kaishidb0ah,0dh,"welcometoplaythegame!
$"
yeardw?
monthdb?
daydb?
datedb0ah,0dh,"Date:
$"
mes0db0ah,0dh,"
(1)PressEnterkeytocontinue.......$"
mes1db0ah,0dh,"
(2)Whenaletterisdropping,pleasehitit!
$"
mes2db0ah,0dh,"(3)Pressspacekeytopause!
$"
mes3db0ah,0dh,"(4)PressESCkeytoreturnmaininterface!
$"
mes4db0ah,0dh,"(5)Pressletter'E'toexit!
$"
mes5DB'pleaseenteryourpassword:
$'
mes6db0ah,0dh,"1:
mes7db0ah,0dh,"2:
mes8db0ah,0dh,"3:
mess8db0ah,0dh,"4:
mes9db'pleasechoosethespeedyouwant:
$'
mes10db"Thegameisover!
$"
mes15db"Doyouwanttocontinue?
Yes
(1)/No(0):
$"
mes11db"yourtime:
$"
mes12db"rightkeys:
$"
mes13db"Yourscore:
$"
mes14db"youhaveinput:
$"
mes20db"higuygoodjob!
$"
mes21db0ah,0dh,"(6)press'c'tocheckyourrecords!
$"
mes22db"theserecords:
$"
coldb00h,24h,0fdh,0dh;颜色
numb1dw?
;已输入字母的个数
numbdw?
;输入正确字母的个数
scoredw?
;每轮游戏的分数
TIMEDW?
sumdw?
;所有字母下落的行数和
sum1dw?
game_timedw?
;记录游戏的次数
scoresdw4dup(?
);记录游戏分数
passworddb"111111"
password1db6dup(?
)
GRADEDW?
Speeddw1000H,300h,5000h,8000h
yanchidw0f00h,3fffh,1fffh
Lettersdb"jwmilzoeucgpravskntxhdyqfb"
db"iytpkwnxlsvxrmofzhgaebudjq"
db"nwimzoexrphysfqtvdcgljukda"
Present_positiondb1
db0
Dataends
;=========================================================
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
moves,ax
new:
clear_screen0,0,24,79,0f4h
SETcusor0,10,30
LEADX,MES5
MOVAH,09H
INT21H
;----------------------------------------------------------------------------------------------
SETCUSOR0,11,61
leabx,password1
movcx,6
input:
movah,07h
int21h
mov[bx],al
incbx
movah,02h
movdl,'*'
int21h
;----------------------------------------------------------------------------------------
loopinput
contiun:
movah,07h
int21h
cmpal,0dh
jnecontiun
movcx,6
leasi,password
leadi,password1
check:
moval,[si]
cmpal,[di]
jnenew
incsi
incdi
loopcheck;密码的输入及判断是否正确
;--------------------------------------------------------------------------------------
start1:
clear_screen0d,0d,24d,79d,07h
movgrade,0
movnumb,0
movnumb1,0
movsum,0
movscore,0
movcx,1000h;隐藏光标
movah,01h
int10h
clear_screen0d,0d,24d,79d,1eh;清屏
Init_boarder0d,0d,'*',dl,80d
Init_boarder24d,0d,'*',dl,80d
Init_boarder0d,0d,'*',dh,25d
Init_boarder0d,79d,'*',dh,25d;初始化边框
menu3d,20d,kaishi;;显示菜单
menu7d,15d,date
pushdx;显示当天的时间
movah,2ah
int21h
movyear,cx
movmonth,dh
movday,dl
movdx,-1
movax,year
callwritedec
movah,0
moval,month
callwritedec
movdx,-1
moval,day
callwritedec
popdx
menu09d,15d,mes0
menu11d,15d,mes1
menu13d,15d,mes2
menu15d,15d,mes3
menu17d,15d,mes4
menu29d,15d,mes21
;-----------------------------------------------------------------------------------------
movah,02h;设置光标位置
movbh,00h
movdh,22d
movdl,33d
int10h
keyin:
movah,07h;从键盘输入命令字符,无回显
int21h
cmpal,0dh
jebegin
cmpal,'E'
jeexit
cmpal,'c';输入‘c'查询分数记录
jesearch
jmpkeyin
search:
pushdx
clear_screen0,0,24,79,1eh
menu5d,20d,mes22
movcx,4
leasi,scores
next33:
movah,02h
movdl,""
int21h
movdx,-1
movax,[si]
callwritedec
addsi,2
loopnext33
popdx
exit:
movax,4c00h
int21h
;--------------------------------------------------------------------------------------
begin:
clear_screen0,0,24,79,0f6h
menu6d,28d,mes6
menu9d,28d,mes7
menu13d,28d,mes8
menu15d,28d,mess8
SETcusor0,17,28
leadx,mes9
callreaddec
cmpax,2;选择游戏的等级
jedone
cmpax,1
jedone
cmpax,3
jedone
cmpax,4
;jnebegin
jmpdone
higher:
;难度增加时升级
pushbx
MOVBX,game_time
DECBX
SHLBX,1
movsi,score
movscores[bx],si
movnumb,0
movnumb1,0
movscore,0
movsum,0
movsum1,0
movbx,grade
clear_screen00d,00d,24d,79d,col[bx]
popbx
incgrade
cmpgrade,3
jaok1
jmp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 打字练习 课程设计报告内附源程序 打字 练习 课程设计 报告 源程序