汇编语言打字练习专业课程设计方案报告内附源程序_第1页
汇编语言打字练习专业课程设计方案报告内附源程序_第2页
汇编语言打字练习专业课程设计方案报告内附源程序_第3页
汇编语言打字练习专业课程设计方案报告内附源程序_第4页
汇编语言打字练习专业课程设计方案报告内附源程序_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

课程设计~第二学期设计题目打字练习程序院(系)计算机科学与信息工程专业计算机科学与技术班级091041b1学号学生姓名王涛设计时间6月20日——年6月24日指引教师蒯锐提交日期6月

上海应用技术学院课程设计任务书课程名称汇编语言课程设计课程代码B704207设计题目打字练习程序题目序号设计时间6月20日——6月系(院)计算机科学与信息工程专业计算机科学与技术班级091041b1一、课程设计任务(条件)、详细技术参数(指标)本课程设计是《80X86汇编语言程序设计》课程后继教学环节,通过对一种较大型、综合性应用程序进行阅读、修改、添加功能等工作,使学生对汇编语言程序设计有更进一步结识,提高阅读理解复杂程序能力和程序设计能力。依照所给“typetest.asm”应用程序框架,在此基本上修改和添加功能。基本任务:1认真阅读“typetest.asm”源程序,理解程序每一条指令在程序中作用。绘制程序流程图(简略总图,各模块详细流程图),给程序中核心语句(后跟分号)作注释。设立输入界面,顾客输入密码后才干进入主菜单;2.修改主菜单,在主菜单上显示当天日期;3.修改主菜单,增长可供顾客选取难度级别选项。4.为顾客打分,对的输入字母使用时间越少,得分越高。5.修改程序,在屏幕右上角显示顾客得分、已输入字母数、对的数。6.将程序中“置光标位置”程序段落用宏调用完毕,添加“置光标位置”宏定义。扩展任务:7.设立限定期间,到达该时间,顾客尚未得到规定分数时,游戏停止。8.到达限定期间,顾客得分达到预设值时,自动提高难度级别,屏幕变色。9.修改程序,底行笑脸字母消失后,不再在该列下落字母(提示:设立数组记录笑脸字母存在与否)。笑脸字母所有消失后,游戏停止,显示告别画面,显示顾客成绩。其她任务:自行设计新功能。二、对课程设计成果规定(涉及课程设计阐明书、图纸、图表、实物等软硬件规定)分析原“typetest.asm”程序构造:画出主程序粗略流程图和各个模块详细流程图,每个功能模块用文字阐明她们功能(与相应流程图放在一起);对你已经实现功能(修改、新编写)做详细阐明,并附上流程图及程序清单(修改/增长指令请使用大写字母,以示区别);自己对该“打字练习程序”进一步设想;对于有设想但最后未实现功能大体编程思路阐述;阐述在设计过程中遇到并且对你具备启发性问题。禁止抄袭,发现雷同,双方扣分。三、课程设计工作进度筹划:周一:教师布置任务,解说本课设模块。学生细读原始源程序,在重要行添加注解。周二:画出主程序粗略流程图和各个模块详细流程图,开始基本任务。周三~周四:设计程序及调试程序。同步着手写报告。周五:完毕设计,提交报告,接受教师考核。四、重要参照资料[1]杨文显,宓双,胡建人.新编汇编语言程序设计,清华大学出版社,[2]朱玉龙,任文览等.汇编语言程序设计,清华大学出版社,[3][美]KipR.Irvine.电子工业出版社,指引教师(签名):蒯锐教研室主任(签名):杨晶鑫6月20日6月

目录TOC\o"1-3"\u~第二学期·········································11.概述···························································51.1基本功能··················································51.2扩展功能··················································62.详细设计阐明···················································72.1分析原“typetest.asm”程序构造····························82.1已经实现功能(修改、新编写)阐明····················93.对该“打字练习程序”进一步设想······························10 3.1·························································11 3.2··························································12 3.3··························································124.课程设计总结··················································135.软件使用阐明··················································136.附录(参照文献,原代码)·······································146.1参照文献····················································146.2源代码·····················································15概述本课程设计是《80X86汇编语言程序设计》课程后继教学环节,通过对一种较大型、综合性应用程序进行阅读、修改、添加功能等工作,使学生对汇编语言程序设计有更进一步结识,提高阅读理解复杂程序能力和程序设计能力基本功能1.1基本功能设立输入界面,顾客输入密码后才干进入主菜单修改主菜单,在主菜单上显示当天日期。修改主菜单,增长可供顾客选取难度级别选项。为顾客打分,对的输入字母使用时间越少,得分越高。修改程序,在屏幕右上角显示顾客得分、已输入字母数、对的数。将程序中“置光标位置”程序段落用宏调用完毕,添加“置光标位置”宏定义。1.2拓展功能1.设立限定期间,到达该时间,顾客尚未得到规定分数时,游戏停止。2.到达限定期间,顾客得分达到预设值时,自动提高难度级别,屏幕变色。3.修改程序,底行笑脸字母消失后,不再在该列下落字母(提示:设立数组记录笑脸字母存在与否)。笑脸字母所有消失后,游戏停止,显示告别画面,显示顾客成绩。其她任务:详细设计阐明分析原“typetest.asm”程序构造2.1.1.一方面在typetest.asm中定义了四个宏调用程序(1)方框宏定义(2)清屏宏定义(3)菜单显示宏定义(4)设立光标位置宏定义2.1.2data数据段定义:涉及所有显示字幕定义。2.1.3各宏定义函数调用以及对各个子函数调用。2.1.4程序重要流程图方框宏定义方框宏定义清屏宏定义菜单显示宏定义设立光标位置宏定义Data数据段定义:date db0ah,0dh, "Date:$"mes0 db0ah,0dh, "(1)PressEnterkeytocontinue$"mes1 db0ah,0dh, "(2)Whenaletterisdropping,pleasehitit!$"mes2 db0ah,0dh, "(3)Pressspacekeytopause!$"mes3 db0ah,0dh, "(4)PressESCkeytoreturnmaininterface!$"mes4 db0ah,0dh, "(5)Pressletter'E'toexit!$"mes5 DB 'pleaseenteryourpassword:$'mes6 db0ah,0dh, "1:<fast>$"开始开始顾客输入密码判断密码进入主菜单 返回 不对的密码对的拟定后进入选取需要练习速度选项选取需要练习速度选项1.fast2.veryfast3.slow4.veryslow选取需要速度选项开始练习打字游戏计算打字对的数计算打字对的数依照对的数计算出应得分数显示顾客所得分数,然后退出练习界面已经实现功能(修改、新编写)阐明2.2.1本程序已实现了基本功能:设立输入界面,顾客输入密码后才干进入主菜单;修改主菜单,在主菜单上显示当天日期;修改主菜单,增长可供顾客选取难度级别选项;为顾客打分,对的输入字母使用时间越少,得分越高;修改程序,在屏幕右上角显示顾客得分、已输入字母数、对的数;将程序中“置光标位置”程序段落用宏调用完毕,添加“置光标位置”宏定义;2.2.2本程序扩展功能:修改了主界面背景颜色以及字体颜色,对某些重要提示信息进行了某些优化。(2)增长了一键显示顾客得分记录功能,只要顾客在主界面上输入“C”,就可以显示出来顾客得分记录对“打字练习程序”进一步设想可以让每次浮现字母都变得有逻辑性,就像打中文时候那种逻辑性,还可以增长英语之类打字练习。可以变化每一种字母在掉落时候颜色。让每一种字母不同步刻颜色都由电脑随机产生。在打字练习过程中还可以有某些恰当声音来配合着练习进行,这样话效果和顾客体验都会有更进一步提高。课程设计总结通过这次课程设计让我跟详细理解了汇编语言用途以及她特点,这样有助于在此后实践中更好去应用汇编语言解决问题,同步通过这次课程设计也体现出了我在汇编方面某些基本知识局限性。由于对汇编语言某些基本知识掌握局限性,程序中还存在或多或少缺陷和局限性,有某些基本功能在逻辑上还存在某些小问题,但是不会影响基本使用。软件使用阐明由于系统版本不同缘故,在程序汇编链接时候会停滞一部,但只要在敲一下回车在进入一次就好了。诸多时候在进入时输入密码后需要按回车才干跳转到主界面。附录(参照文献,原代码)参照文献[1]杨文显,宓双,胡建人.新编汇编语言程序设计,清华大学出版社,[2]朱玉龙,任文览等.汇编语言程序设计,清华大学出版社,[3][美]KipR.Irvine.电子工业出版社,原代码;Assemblyprogramfortestyourtypeskills;Writedbyin06/24/;ModifiedbyMishuangin06/06/;includeylib.hInit_boardermacrorow,col,char,dhdl,count;Local llmovcx,countmovdh,rowmovdl,colll:mov ah,02hmovbh,00hint10hpushcxmovah,0ahmoval,charmovbh,00hmovcx,01hint10hpopcxincdhdlloopllendm;clear_screenmacrotop,left,bottom,right,col ;清屏宏定义mov ah,06hmov al,00hmov bh,colmov ch,topmov cl,leftmov dh,bottommov dl,rightint 10hmov ah,02hmov bh,00hmov dh,00hmov dl,00hint 10hendm;SETCUSOR MACROPAGE,ROW,COLUMN ;设立光标位置MOV AH,02H MOV BH,PAGEMOV DL,COLUMNMOV DH,ROWINT 10HENDM;menu macro row,col,text ;菜单显示宏定义mov ah,02hmov bh,024hmov dh,rowmov dl,colint 10hmov ah,09hlea dx,textint 21hendm;======================================================Datasegmentkaishi db0ah,0dh, "welcometoplaythegame!$"yeardw?monthdb?daydb?date db0ah,0dh, "Date:$"mes0 db0ah,0dh, "(1)PressEnterkeytocontinue$"mes1 db0ah,0dh, "(2)Whenaletterisdropping,pleasehitit!$"mes2 db0ah,0dh, "(3)Pressspacekeytopause!$"mes3 db0ah,0dh, "(4)PressESCkeytoreturnmaininterface!$"mes4 db0ah,0dh, "(5)Pressletter'E'toexit!$"mes5 DB 'pleaseenteryourpassword:$'mes6 db0ah,0dh, "1:<fast>$"mes7 db0ah,0dh, "2:<veryfast>$"mes8 db0ah,0dh, "3:<slow>$"mess8 db0ah,0dh, "4:<veryslow>$"mes9 db 'pleasechoosethespeedyouwant:$'mes10 db "Thegameisover!$"mes15 db "Doyouwanttocontinue?Yes(1)/No(0):$"mes11 db "yourtime:$"mes12 db "rightkeys:$"mes13 db "Yourscore:$"mes14 db "youhaveinput:$"mes20 db "higuygoodjob!$"mes21 db0ah,0dh, "(6)press'c'tocheckyourrecords!$"mes22 db "theserecords:$"col db 00h,24h,0fdh,0dh ;颜色numb1 dw ? ;已输入字母个数numb dw ? ;输入对的字母个数score dw ? ;每轮游戏分数TIME DW ?sum dw ? ;所有字母下落行数和sum1 dw ?game_time dw ? ;记录游戏次数scores dw 4dup(?) ;记录游戏分数password db "111111"password1 db 6dup(?)GRADE DW ?Speed dw 1000H,300h,5000h,8000hyanchi dw 0f00h,3fffh,1fffhLetters db "jwmilzoeucgpravskntxhdyqfb" db "iytpkwnxlsvxrmofzhgaebudjq" db "nwimzoexrphysfqtvdcgljukda"Present_positiondb 1db 0 Dataends;=========================================================code segmentassume cs:code,ds:datastart: movax,data movds,ax moves,axnew: clear_screen0,0,24,79,0f4h SETcusor0,10,30 LEADX,MES5 MOVAH,09H INT21H; SETCUSOR0,11,61 leabx,password1 movcx,6input: movah,07h int21h mov[bx],al incbx movah,02h movdl,'*' int21h; loopinputcontiun: movah,07h int21h cmpal,0dh jnecontiun movcx,6 leasi,password leadi,password1check: moval,[si] cmpal,[di] jnenew incsi incdi loopcheck ;密码输入及判断与否对的;start1: clear_screen0d,0d,24d,79d,07h mov grade,0 mov numb,0 mov numb1,0 mov sum,0 mov score,0 mov cx,1000h ;隐藏光标 mov ah,01h int 10h 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 ;初始化边框 menu 3d,20d,kaishi; ;显示菜单 menu 7d,15d,date push dx ;显示当天时间 mov ah,2ah int 21h mov year,cx mov month,dh mov day,dl mov dx,-1 mov ax,year call writedec mov ah,0 mov al,month call writedec mov dx,-1 mov al,day call writedec pop dx 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 int10hkeyin: movah,07h ;从键盘输入命令字符,无回显 int21h cmpal,0dh jebegin cmpal,'E' jeexit cmpal,'c' ;输入‘c'查询分数记录 jesearch jmpkeyinsearch: pushdx clear_screen0,0,24,79,1eh menu5d,20d,mes22 movcx,4 leasi,scoresnext33: 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 jmptenok1: jmpok2;done: MOVGRADE,AXclear_screen00d,00d,24d,79d,1eh ;清屏ten: Init_boarder00d,00d,'*',dl,80d Init_boarder24d,00d,'*',dl,80d Init_boarder00d,00d,'*',dh,25d Init_boarder00d,79d,'*',dh,25d ;初始化边框clear_screen02d,02d,23d,78d,1eh ;清屏(边框还存在)Init_boarder23d,01d,01h,dl,78d; 在倒数第二行显示一行笑脸 SETCUSOR 0,01,8 lea dx,mes14 mov ax,numb1 call writedec SETCUSOR 0,01,35 lea dx,mes12 mov ax,numb call writedec SETCUSOR 0,01,55 lea dx,mes13 mov ax,score call writedec ;显示已输击字母数,对的字母数和分数; movah,02h movbh,00h movdh,02h movdl,02h int10h ;将光标设立在第一行第一列 movcx,78 leasi,letters nextletter:movah,02h ;显示字母 movdl,[si] int21h incsi loopnextletter;start_game: ;游戏开始 movtime,0 movah,2ch int21h ;取系统时间,返回一种0—99数,在dl里 incdl cmpdl,78 jnasg1 subdl,78sg1: movpresent_position,dl leadi,letters adddi,wordptrpresent_position ;di指向即将掉落字母 decdi movdl,present_position movah,02h movbh,00h movdh,02h int10h ;将光标设立在第一行和当前列位置 movcx,20d ;总共有20行是空;nextrow: pushcx MOVBX,GRADE DECBX SHLBX,1 movcx,speed[bx] wait_for_key: pushcx movcx,yanchi[bx];延迟 delay:loopdelay pushdx movah,06h ;从键盘输入字符 movdl,0ffh int21h popdx jzpass ;zf=1表达没有输入字符,zf=0表达有字符输入 cmpal,1bh ;如果键入ESC,则返回主菜单 jeto_start cmpal,"" ;如果键入SPACE,则游戏暂停 jnepass0 jmppauseok2: jmpok3midstep: jmpnextrow;pause: pushdx ;暂停解决 movah,06h movdl,0ffh int21h popdx cmpal,"" jnepause jepass jmppass0 to_start: jmpstart1;pass0: incnumb1 pushdx pushax SETCUSOR0,01,8 leadx,mes14 movax,numb1 callwritedec popax popdx SETCUSOR0,dh,dl cmpal,[di] ;输入字母对的!则字母消失 jedisappear jmppasshigh1: jmphigherkk3: jmpto_start;pass: popcx LOOPwait_for_key down: inctime incsum movah,0ah ;在当前光标位置写空格 moval,"" movbh,00h movcx,01h int10h incdh movah,02h ;变化光标位置 movbh,00h int10h movah,0ah ;在当前光标位置写字母 moval,[di] movbh,00h movcx,01h int10h popcxloopmidstep ;下一行;letter_over: movah,0ah moval,"" movbh,00h movcx,01h int10h incdh ;将光标设立在最后一行 movah,02h movbh,00h int10h movah,0ah ;最后行笑脸消失 moval,"" movbh,00h movcx,01h int10h jmpnext_letter jmpdisappear jmpdisappearok3: jmpok4kk2: jmpkk3disappear: ;击中字母后输出空 popcx popcx movah,0ah moval,"" movbh,00h movcx,0

温馨提示

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

评论

0/150

提交评论