汇编语言打字练习课程设计报告_第1页
汇编语言打字练习课程设计报告_第2页
汇编语言打字练习课程设计报告_第3页
汇编语言打字练习课程设计报告_第4页
汇编语言打字练习课程设计报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、word.课 程 设计20222022 20222022 学年第二学期学年第二学期设计题设计题目目 打字打字练习练习程序程序 院院 系系 计计算机科学与信息工程算机科学与信息工程 专专 业业 计计算机科学与技算机科学与技术术 班班 级级 091041b1 学号学号 03 学生姓名学生姓名 王涛王涛 设计时间设计时间 2022 年年 6 月月 20 日日2022 年年 6 月月 24 日日 指指导导教教师师 蒯蒯锐锐 提交日期提交日期 2011 年年 6 月月 24 日日 word.上海上海应应用技用技术术学院学院课课程程设计设计任任务书务书课课程名称程名称汇编语汇编语言言课课程程设计设计课课程

2、代程代码码B704207设计题设计题目目打字打字练习练习程序程序题题目序号目序号设计时间设计时间2011 年年 6 月月 20 日日 2011 年年 6 月月 24 日日系系 院院 计计算机科学与信息算机科学与信息工程工程专业专业计计算机科学与技算机科学与技术术班班级级091041b1一、一、课课程程设计设计任任务务 条件条件 、具体技、具体技术术参数参数 指指标标 本课程设计是 80X86 汇编语言程序设计 课程的后继教学环节, 通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作, 使学生对汇编语言程序设计有更进一步的认识, 提高阅读理解复杂程序的能力和程序设计能力。根据所给

3、的“应用程序框架, 在此根底上修改和添加功能。根本任务:1 认真阅读“源程序, 理解程序每一条指令在程序中的作用。绘制程序流程图简略总图,各模块详细流程图,给程序中的关键语句后跟分号作注释。设置输入界面, 用户输入密码后才能进入主菜单 ;2. 修改主菜单, 在主菜单上显示当天日期 ;3. 修改主菜单, 增加可供用户选择难度级别的选项。4. 为用户打分,正确输入字母使用时间越少,得分越高。5. 修改程序, 在屏幕右上角显示用户得分、已输入字母数、正确数。6. 将程序中的“置光标位置程序段落用宏调用完成, 添加“置光标位置宏定义。扩展任务:7. 设置限定时间,到达该时间,用户尚未得到要求的分数时,

4、游戏停止。8. 到达限定时间,用户得分到达预设的值时, 自动提高难度等级, 屏幕变色。word.9. 修改程序,底行的笑脸字母消失后,不再在该列下落字母提示:设置数组记录笑脸字母的存在与否。笑脸字母全部消失后, 游戏停止, 显示辞别画面,显示用户成绩。其他任务:自行设计新的功能。二、对课程设计成果的要求包括课程设计说明书、图纸、图表、实物等软硬件要求(1(分析原“程序结构: 画出主程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能与对应流程图放在一起;(2(对你已经实现的功能修改的、新编写的做详细的说明, 并附上流程图及程序清单修改修改/增加的指令增加的指令请请使用大写字

5、母,以示区使用大写字母,以示区别别;(3(自己对该“打字练习程序的进一步设想;(4(对于有设想但最终未实现的功能的大致编程思路的阐述;(5(论述在设计过程中遇到的并且对你具有启发性的问题。(6(严严禁抄禁抄袭袭, ,发现发现雷同,双方扣分雷同,双方扣分。三、课程设计工作进度方案:周一:教师布置任务,讲解本课设模块。学生细读原始源程序,在重要行添加注解。周二:画出主程序粗略的流程图和各个模块的详细流程图,开始根本任务。周三周四:设计程序及调试程序。同时着手写报告。周五:完成设计,提交报告,接受教师考评。word.四、主要参考资料1 杨文显,宓双,胡建人.新编汇编语言程序设计,清华大学出版社,20

6、222 朱玉龙,任文览等.汇编语言程序设计,清华大学出版社,20033 美Kip R.Irvine. 电子工业出版社,2004指导教师签名:蒯锐 教研室主任签名:杨晶鑫 2011 年 6 月 20 日 2011 年 6 月 20 日word.目目录录2022 2022 学年第二学期11.概述5根本功能5扩展功能62.详细设计说明7分析原“程序结构8已经实现的功能修改的、新编写的说明93. 对该“打字练习程序的进一步设想10 1112124. 课程设计总结135. 软件使用说明136 附录参考文献,原代码14参考文献14 源代码15word.1概述概述本课程设计是 80X86 汇编语言程序设计

7、课程的后继教学环节, 通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作, 使学生对汇编语言程序设计有更进一步的认识, 提高阅读理解复杂程序的能力和程序设计能力根本功能根本功能(1(设置输入界面, 用户输入密码后才能进入主菜单(2(修改主菜单, 在主菜单上显示当天日期。(3(修改主菜单, 增加可供用户选择难度级别的选项。(4(为用户打分,正确输入字母使用时间越少,得分越高。(5(修改程序, 在屏幕右上角显示用户得分、已输入字母数、正确数。(6(将程序中的“置光标位置程序段落用宏调用完成, 添加“置光标位置宏定义。word.拓展功能1. 设置限定时间,到达该时间,用户尚未得到要求

8、的分数时,游戏停止。2. 到达限定时间,用户得分到达预设的值时, 自动提高难度等级, 屏幕变色。3. 修改程序,底行的笑脸字母消失后,不再在该列下落字母提示:设置数组记录笑脸字母的存在与否。笑脸字母全部消失后, 游戏停止, 显示辞别画面,显示用户成绩。其他任务:2详细设计说详细设计说明明2.1分析原“程序结构.首先在中定义了四个宏调用的程序1方框宏定义2清屏宏定义3菜单显示宏定义4设置光标位置宏定义 data 数据段的定义:包括的所有的显示字幕的定义。word. 各宏定义函数的调用以及对各个子函数的调用。 程序的主要流程图word.方框宏定义清屏宏定义菜单显示宏定义设置光标位置宏定义Data

9、数据段的定义:date db 0ah,0dh, Date:$mes0 db 0ah,0dh, (1)Press Enter key to continue.$mes1 db 0ah,0dh, (2)When a letter is dropping,please hit it!$mes2 db 0ah,0dh, (3)Press space key to pause!$mes3 db 0ah,0dh, (4)Press ESC key to return main interface!$mes4 db 0ah,0dh, (5)Press letter E to exit!$mes5 DB pl

10、ease enter your password :$mes6 db 0ah,0dh,1: $word.返回不正确密码正确确定后进入开始用户输入密码判断密码进入主菜单word.选择需要练习的速度选项2veryfast选择需要的速度选项开始练习打字游戏word.计算打字的正确数根据正确数计算出应得分数显示用户所得分数,然后退出练习界面word.2.2已已经实现经实现的功能的功能 修改的、新修改的、新编编写的写的 说说明明本程序已实现了根本的功能:(7(设置输入界面, 用户输入密码后才能进入主菜单;(8(修改主菜单, 在主菜单上显示当天日期;(9(修改主菜单, 增加可供用户选择难度级别的选项;(1

11、0(为用户打分,正确输入字母使用时间越少,得分越高;(11(修改程序, 在屏幕右上角显示用户得分、已输入字母数、正确数;(12(将程序中的“置光标位置程序段落用宏调用完成, 添加“置光标位置宏定义;本程序的扩展功能:(1(修改了主界面的背景颜色以及字体的颜色,对一些主要的提示信息进行了一些优化。word.2 增加了一键显示用户得分记录的功能,只要用户在主界面上输入“C,就可以显示出来用户的得分记录3对对“打字打字练习练习程序程序的的进进一步一步设设想想3.1可以让每次出现的字母都变得有逻辑性,就像打汉字的时候的那种逻辑性,还可以增加英语之类的打字练习。3.2可以改变每一个字母在掉落的时候的颜色

12、。让每一个字母的不同时刻的颜色都由电脑随机产生。3.3在打字练习的过程中还可以有一些适当的声音来配合着练习的进行,这样的话效果和用户的体验都会有更进一步的提高的。word.4课课程程设计总结设计总结4.1通过这次课程设计让我跟具体的了解了汇编语言的用途以及他的特点,这样有利于在今后的实践中更好的去应用汇编语言解决问题,同时通过这次的课程设计也表达出了我的在汇编方面的一些根底知识的缺乏。由于对汇编语言的一些根本知识的掌握缺乏,程序中还存在或多或少的缺陷和缺乏,有一些的根本功能在逻辑上还存在一些的小问题,但是不会影响根本的使用。5软软件使用件使用说说明明由于系统版本不同的缘故,在程序汇编链接的时候

13、会停滞一部,但只要在敲一下回车在进入一次就好了。很多时候在进入时输入密码后需要按回车才能跳转到主界面。6附附录录 参考文献,原代参考文献,原代码码 参考文献参考文献1 杨文显,宓双,胡建人.新编汇编语言程序设计,清华大学出版社,20222 朱玉龙,任文览等.汇编语言程序设计,清华大学出版社,20033 美Kip R.Irvine. 电子工业出版社,2004原代原代码码; Assembly program for test your type skills word.; Writed by in 06/24/2003; Modified by Mi shuang in 06/06/2005; -

14、include Init_boarder macro row,col,char,dhdl,count;Localllmov cx, count mov dh, rowmov dl, colll: movah, 02hmov bh, 00hint 10hpush cxmov ah, 0ahmov al, char mov bh, 00hmov cx, 01hint 10hpop cxinc dhdlloop ll endm; -clear_screen macro top, left, bottom, right,col;清屏宏定义mov ah, 06h mov al, 00hmov bh, c

15、olmov ch, topmov cl, leftword.mov dh, bottommov dl, rightint 10hmov ah, 02hmov bh, 00hmov dh, 00hmov dl, 00hint 10hendm;-SETCUSOR MACRO PAGE,ROW,COLUMN ;设置光标位置MOV AH,02HMOV BH,PAGEMOV DL,COLUMNMOV DH,ROWINT 10HENDM; -menumacrorow, col, text; 菜单显示宏定义 mov ah, 02hmov bh, 024hmov dh, rowmov dl, colint 1

16、0hmov ah, 09hlea dx, textint 21hendm; =Data segmentword.kaishi db 0ah,0dh, welcome to play the game !$ year dw month db day db date db 0ah,0dh, Date:$mes0 db 0ah,0dh, (1)Press Enter key to continue.$mes1 db 0ah,0dh, (2)When a letter is dropping,please hit it!$mes2 db 0ah,0dh, (3)Press space key to p

17、ause!$mes3 db 0ah,0dh, (4)Press ESC key to return main interface!$mes4 db 0ah,0dh, (5)Press letter E to exit!$mes5 DB please enter your password :$mes6 db 0ah,0dh,1: $mes7 db 0ah,0dh,2: $mes8 db 0ah,0dh,3: $mess8db 0ah,0dh,4: $mes9 db please choose the speed you want:$mes10 db The game is over!$mes1

18、5 db Do you want to continue Yes(1)/No(0):$mes11 db your time:$mes12 db right keys:$mes13 db Your score:$mes14 db you have input:$mes20 db hi guy good job!$mes21 db 0ah,0dh,(6)press cto check your records!$mes22 db these records:$col db 00h,24h,0fdh,0dh ;颜色numb1 dw ;已输入字母的个数numb dw ;输入正确字母的个数score d

19、w ;每轮游戏的分数TIME DW word.sum dw ;所有字母下落的行数和sum1 dw game_time dw ;记录游戏的次数scores dw 4 dup() ;记录游戏分数password db 111111password1 db 6 dup()GRADE DW Speed dw 1000H,300h,5000h,8000hyanchi dw 0f00h,3fffh,1fffhLetters db jwmilzoeucgpravskntxhdyqfb db iytpkwnxlsvxrmofzhgaebudjq db nwimzoexrphysfqtvdcgljukdaPre

20、sent_position db 1 db 0Data ends; =codesegmentassumecs: code, ds: datastart:mov ax, datamov ds,axmov es,axnew:clear_screen 0,0,24,79,0f4hSETcusor 0,10,30LEA DX,MES5MOV AH,09HINT 21H;-SETCUSOR 0,11,61word.lea bx,password1mov cx,6input:mov ah,07hint 21hmov bx,alinc bxmov ah,02hmov dl,*int 21h;-loop in

21、putcontiun:mov ah,07hint 21hcmp al,0dhjne contiunmov cx,6lea si,passwordlea di,password1check:mov al,sicmp al,dijne newinc siinc diloop check ;密码的输入及判断是否正确;-start1:clear_screen 0d,0d,24d,79d,07hword.mov grade,0mov numb,0mov numb1,0mov sum,0mov score,0mov cx,1000h ;隐藏光标mov ah,01hint 10hclear_screen 0

22、d,0d,24d,79d,1eh ;清屏Init_boarder 0d, 0d, *, dl, 80dInit_boarder 24d,0d, *, dl, 80dInit_boarder 0d, 0d, *, dh, 25dInit_boarder 0d, 79d, *, dh, 25d ;初始化边框menu 3d,20d,kaishi; ;显示菜单menu 7d,15d, datepush dx ;显示当天的时间mov ah,2ahint 21hmov year,cxmov month,dhmov day,dlmov dx,-1mov ax,yearcall writedecmov ah,

23、0mov al,monthcall writedecmov dx,-1mov al,daycall writedecword.pop dxmenu 09d, 15d, mes0 menu 11d, 15d, mes1menu 13d, 15d, mes2menu 15d, 15d, mes3menu 17d, 15d, mes4menu 29d, 15d, mes21;-mov ah,02h ;设置光标位置mov bh, 00hmov dh, 22dmov dl, 33dint 10hkeyin:mov ah, 07h ;从键盘输入命令字符,无回显int 21hcmp al, 0dhje be

24、gincmp al, Eje exitcmp al,c ;输入c查询分数记录je searchjmp keyinsearch :push dxclear_screen 0,0,24,79,1ehmenu 5d,20d,mes22mov cx,4lea si,scoresnext33:word.mov ah,02hmov dl, int 21hmov dx,-1mov ax,sicall writedecadd si,2loop next33pop dxexit:mov ax, 4c00hint 21h;-begin:clear_screen 0,0,24,79,0f6hmenu 6d,28d,

25、mes6menu 9d,28d,mes7menu 13d,28d,mes8menu 15d,28d,mess8SETcusor 0,17,28lea dx,mes9call readdeccmp ax,2 ;选择游戏的等级je donecmp ax,1je donecmp ax,3je doneword.cmp ax,4;jne beginjmp donehigher: ;难度增加时升级push bxMOV BX,game_timeDEC BXSHL BX,1mov si,scoremov scoresbx,si mov numb,0mov numb1,0mov score,0mov sum,

26、0mov sum1,0mov bx,gradeclear_screen 00d, 00d, 24d, 79d,colbxpop bxinc gradecmp grade,3ja ok1jmp tenok1:jmp ok2;-done:MOV GRADE,AXclear_screen 00d, 00d, 24d, 79d,1eh ;清屏ten:Init_boarder 00d, 00d, *, dl, 80dword.Init_boarder 24d, 00d, *, dl, 80dInit_boarder 00d, 00d, *, dh, 25dInit_boarder 00d, 79d, *

27、, dh, 25d ;初始化边框clear_screen 02d, 02d, 23d, 78d,1eh; 清屏边框还存在Init_boarder 23d, 01d, 01h, dl, 78d; 在倒数第二行显示一行笑脸SETCUSOR 0,01,8 lea dx,mes14mov ax,numb1call writedecSETCUSOR 0,01,35lea dx,mes12mov ax,numbcall writedecSETCUSOR 0,01,55lea dx,mes13mov ax,scorecall writedec ;显示已输击字母数,正确的字母数和分数;-mov ah, 02h

28、mov bh, 00hmov dh, 02hmov dl, 02hint 10h ;将光标设置在第一行第一列mov cx, 78 lea si, lettersnextletter:mov ah, 02h; 显示字母mov dl,siint 21hinc siword.loop nextletter;-start_game:;游戏开始mov time,0mov ah, 2chint 21h;取系统时间,返回一个 099 的数,在 dl 里inc dlcmp dl,78jna sg1sub dl,78sg1:mov present_position, dllea di, lettersadd d

29、i, word ptr present_position ;di 指向即将掉落的字母dec dimov dl, present_positionmov ah, 02hmov bh, 00hmov dh, 02hint 10h ;将光标设置在第一行和当前列的位置mov cx, 20d;总共有 20 行是空的;-nextrow: push cxMOV BX,GRADEDEC BXSHL BX,1mov cx,speedbxwait_for_key:word.push cxmov cx,yanchibx; 延迟 delay:loop delaypush dxmov ah, 06h ; 从键盘输入字符

30、mov dl, 0ffhint 21hpop dxjz pass;zf=1 表示没有输入字符,zf=0 表示有字符输入cmp al, 1bh ; 如果键入 ESC,那么返回主菜单je to_startcmp al, ; 如果键入 SPACE,那么游戏暂停jne pass0jmp pauseok2:jmp ok3midstep:jmp nextrow;-pause: push dx; 暂停处理mov ah, 06hmov dl, 0ffhint 21hpop dxcmp al, jne pauseje passjmp pass0to_start:word.jmp start1;-pass0: i

31、nc numb1push dxpush axSETCUSOR 0,01,8lea dx,mes14mov ax,numb1call writedecpop axpop dxSETCUSOR 0,dh,dlcmp al,di ; 输入字母正确!那么字母消失je disappearjmp passhigh1:jmp higherkk3:jmp to_start;-pass:pop cxLOOP wait_for_keydown:inc time inc summov ah, 0ah ; 在当前光标位置写空格mov al, mov bh, 00hword.mov cx, 01hint 10hinc

32、dhmov ah, 02h; 改变光标位置mov bh, 00hint 10hmov ah, 0ah; 在当前光标位置写字母mov al, dimov bh, 00hmov cx, 01hint 10hpop cxloop midstep ;下一行;-letter_over:mov ah,0ahmov al, mov bh, 00hmov cx, 01hint 10hinc dh ;将光标设置在最后一行mov ah, 02hmov bh, 00hint 10hmov ah, 0ah ;最后行的笑脸消失mov al, mov bh, 00hmov cx, 01hint 10hjmp next_letterword.jmp disappearjmp disappearok3:jmp ok4kk2:jmp kk3disappear: ; 击中字母后输出空pop cxpop cxmov ah,0ahmov al,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论