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

下载本文档

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

文档简介

I汇编语言课程设计报告汇编语言课程设计报告程程序序题题目:目:打字练习程序打字练习程序学学生生姓姓名:名:XXXX班班级:级:20102010级计算机科学与技术专业级计算机科学与技术专业44班班学学号:号:XXXXXX院院系:系:计算机科学学院计算机科学学院指指导导教教师:师:XXXXXXII目录11设计目的设计目的.322概要设计概要设计.32.12.1系统总体分析系统总体分析.32.22.2主模块框图及说明主模块框图及说明.433详细设计详细设计.53.13.1主模块及子模块说明主模块及子模块说明.53.2各模块详细设计各模块详细设计.53.2.13.2.1主界面模块主界面模块.53.2.23.2.2随机字母产生模块随机字母产生模块.73.2.33.2.3字母落下模块字母落下模块.93.2.43.2.4暂停模块暂停模块.104程序调试程序调试.114.14.1运行界面分析运行界面分析.114.24.2调试过程及分析调试过程及分析.1355心得体会心得体会.135.15.1设计体会设计体会.135.25.2系统改进系统改进.13参考文献参考文献.14附:程序源代码附:程序源代码.14陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告311设计目的设计目的本程序运行后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按E退出。通过课程设计,主要达到以下目的:1.增进对汇编语言的认识,加强用汇编语言编程的能力;2.掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;3.了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础;4.通过课程设计可以使我们更加了解书上的知识了解书上的语句并且能够应用自己的程序中;5.掌握屏幕输出显示的设计方法。22概要设计概要设计2.12.1系统总体分析系统总体分析根据题目要求可以看到有以下几部分来实现打字练习:1.由26字母乱序组成一行显示行。2.字母自动落下。3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。4.按下“Ese”键则程序返回到主界面。5.按空格键游戏暂停。6.在主界面按“E”则程序退出。打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。对于以上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告42.22.2主模块框图及说明主模块框图及说明E其他键ENTERENTER是否是是否是是图图2-12-1程序设计流程图程序设计流程图程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令从键盘输入字符结束随即字母落下当前字母消失暂停判断输入按键键入字符是否与下落一致是否是空格开始输入空格是否是ESC陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告5来融合的,主要流程是先到主界面,然后选择你想要进行的指令ENTER进入打字界面开始打字,E退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。核心模块的流程大体如下面的流程图图2-1:33详细设计详细设计3.13.1主模块及子模块说明主模块及子模块说明主界面是程序的初始入口,也是其他功能模块的接入点。主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:打字界面返回主界面模块和主界面退出程序模块)3.2各模块详细设计各模块详细设计3.2.13.2.1主界面模块主界面模块当程序运行后,我们首先要进行选择,是要继续进行即进入打字练习程序还是终止练习退出程序。所以,在这里我们需要设置一个程序,该程序要判断键盘键入的字符,我们不妨规定ESC键和ENTER键分别为终止程序的控制键和进入打字练习程序的控制键,即当检验到键盘输入ESC后,退出程序;当键盘输入为ENTER时进入打字练习程序。单元程序如下:datasegmentZKdbHELLOWELCOMETOHERE!$nodbMynameisXXmystudentnumberis:XX.$megdbPressENTERkeytocontinue.$陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告6meg1dbWhenaletterisdroppingpleasehitit!$meg2dbPressSPACEkeytopause!$meg3dbPressESCkeytoreturnmaininterface!$meg4dbPressletterEtoexit!$以上设置主界面的显示方式。clear_screen00d00d24d79dInit_game00d00d0ahdl80dnextsign1Init_game24d00d0ahdl80dnextsign2Init_game00d00d0ahdh25dnextsign3Init_game00d79d0ahdh25dnextsign4menu05d15dZK菜单信息的宏调用menu07h15dnomenu09d15dmegmenu11d15dmeg1menu13d15dmeg2menu15d15dmeg3menu17d15dmeg4put:movah02h设置光标位置movbh00hmovdh22dmovdl33dint10hmovah01h从键盘输入任意字符int21hcmpal0dhjespeed3cmpal45hjeexit以上代码是清屏,并调用宏实现主界面的显示,并在主界面中设置了菜单陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告7显示后的光标位置,以方便使用者的操作。in_cycle:addcx01hcmpcx1000jnein_cyclepushdxmovah06h从键盘输入字符movdl0ffhint21hpopdxjzpasscmpal1bh如果键入ESC,则返回主菜单jeto_start1cmpal如果键入SPACE,则游戏暂停jepausecmpaldi输入字母正确!则字母消失jedisappearto_start1:返回主菜单jmpstart上述程序段中用到了中断INT21,利用中断的有关规定,先将01H存入到AH当中,则AL中即为由键盘键入的字符。在此,先通过CMP指令来判断输入的字符是否是ENTER键(ENTER键的ASCII码为十六进制的0DH,程序开头部分的宏定义已经令CR为0DH),如果是的话,程序将跳转到程序disappear,disappear是定义的又一个程序,该程序即为打字练习程序的核心部分。如果不是ENTER的话,将执行下一条指令,即判断键盘键入的是否为E键,此功能由CMPAL,1BH来实现,其中1BH是E键的ACSII码的十六进制的表示。如果是E键的话,程序将跳转到TZD_1子程序,再通过TZD_1程序来判断是否要退出打字练习程序。如果键盘键入的既不是ENTER也不是E键的话,程序将继续等待键盘的输入,直到输入的按键为ENTER和E当中的一个为止。3.2.23.2.2随机字母产生模块随机字母产生模块当用户选择继续运行程序且进入打字练习界面时,则程序需要首先为用陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告8户输出一列随机的字符序列,这时程序就需要自动的调用产生随机字符序列的程序。程序段如下:lettersdbjwmilzoeucgpravskntxhdyqfbdbiytpkwnxlsvxrmofzhgaebudjqdbnwimzoexrphysfqtvdcgljukdaletters_bakdbjwmilzoeucgpravskntxhdyqfbdbiytpkwnxlsvxrmofzhgaebudjqdbnwimzoexrphysfqtvdcgljukdaletter_counterdb0begin:clear_screen01d01d23d78d清屏宏调用clear_screen01d01d23d78dInit_game23d01d01hdl78dnextsign5movah02hmovbh00hmovdh01hmovdl01hint10hmovcx00hleasiletters上述的程序段中,begin实现了输出的字符的随机显示,当然这个随机是我们要事先通过自己随机定义一段由26个字母随机组成的序列,然后由begin来调用,从而间接来实现随即字母的产生。Begin段利用了INT10,其功能是设置屏幕显示方式,灵活的利用INT10丰富的指令功能,可以巧妙的设计出想要的程序来。INT10中断规定,DH和DL共同控制着字符输出的位置,其中DH为字符输出的行标,DL为字符输出的列标,通过改变DH和DL的值,可以改变字符在命令符输出屏幕上的位置;如果AH=09H时,则AL=字符,BL陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告9则是控制着输出的字符属性或颜色;计数器CX中存放的则是重复输出字符的个数。本程序中令CX中存放78,也就是说loop循环程序将循环78次,程序的输出为78个字符,当loop循环程序运行结束之后,程序将执行下一条指令,调用DAZIRUKOU子程序。使得程序继续运行,让用户按照程序自动产生的字符串来进行打字练习。3.2.33.2.3字母落下模块字母落下模块程序自动进入打字功能,自动落下字符,等待键盘输入字符以此来判断输入者想什么,如果键盘输入与预期的相符合则程序自动执行相关功能。如果输入字符与落下字符相同,程序执行当前字母消失和产生下一落下字母的功能,字母落下功能的实现是通过逐行替换的方法实现的,字母在当前行出现会有一个延迟时间,当过了这个延迟时间时,程序执行当前位置清空操作,并在下一行显示上一行的字母。代码如下:hit:movah02hmovbh00hmovdh01hmovdlpresent_positionint10hmovaldi出现下一个新字母的数法addal7cmpal7ahjaconvey_lettermovah0ahmovbh00hmovcx01hint10hmovdialaddletter_counter01h陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告10jmpnextcycleconvey_letter:subal7ahaddal61hmovah0ahmovbh00hmovcx01hint10hmovdialaddletter_counter01hjmpnextcycleclear_screen01012378movah02hmovbh00hmovdh11dmovdl20dint10hincdhincdhmovah02hmovbh00hint10hdisappear:击中字母后输出空格popcxpopcxmovah0ahmovalmovbh00hmovcx01hint10hjmphit3.2.43.2.4暂停模块暂停模块如果输入空格,则程序执行暂停功能,暂停功能的实现是通过以下方法陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告11实现的,当从键盘输入空格时,程序收到暂停信号,执行跳转,跳转到一个死循环模块,就是无限显示当前屏幕,不做其他任何操作,直到键盘再次输入空格时,程序收到暂停结束指令,跳转回到主程序模块,继续执行主模块的功能。代码如下:pass:popcxinccxcmpcxspeedjeprintjmpout_cyclepause:pushdx暂停处理movah06hmovdl0ffhint21hpopdxcmpaljnepausejmppass4程序调试程序调试4.14.1运行界面分析运行界面分析程序运行后的主界面如图4-1,主界面第一行是欢迎语,第二行是作者,然后往下是操作说明,为使用者说明该程序的使用方法。陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告12图图4-14-1程序主界面程序主界面当用户按下ENTER键时,程序自动跳入到图4-2的界面,字母随机落下,用户便可以开始打字练习了。练习只要按照说明来做就可以了。图图4-24-2打字界面打字界面陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告134.24.2调试过程及分析调试过程及分析当程序运行时,我发现当按esc退出,如果之前按下空格键暂停时,则退不出去,必须再次按下空格是程序开始运行才能退出。主要是因为按下空格键时,程序收到暂停信号,执行跳转,跳转到一个死循环模块,就是无限显示当前屏幕,不做其他任何操作,直到键盘再次输入空格时.55心得体会心得体会5.15.1设计体会设计体会课程设计对我们多数初学汇编的学生来说,确实是一座高峰。翻越他是需付出努力的。我也是在探索了好久才弄明白他的,在此做个小总结,也许对自己今后的学习有些借鉴作用。在整个程序的编写中,调试占了很大部分的时间,要想写好汇编程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug指令。通过这次实际动手能力的培养,我进一步熟悉了汇编的结构和使用法,基本达到能独立阅读。我觉得学习汇编的一个较大好处就是可以了解电脑中每一个字节数据的来龙去脉,我觉得学习汇编可以发挥一下自己的空间想象力。5.25.2系统改进系统改进这次课程设计,其主题内容都以满足课程实际的要求,各功能都能相应的完成,即写一个程序,运行可执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按E退出,但是感觉整个程序界面不够华丽,看着粗糙的界陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告14面,不能引起别人的注意,下次能够吧界面做得更好看一些。参考文献参考文献1李敬兆80868088和arm核汇编语言程序设计中国科技大学出版社2沈美明,温冬婵编著IBMPC汇编语言程序设计(第二版)清华大学出版社出版3罗云彬Windows环境下32位汇编语言程序设计电子工业出版社4【美】KipR.Irvine著,温玉杰等译Intel汇编语言程序设计(第四版)电子工业出版社5吕晓庆8038680486系统编程实践淅江大学出版社6袁可风汇编语言程序设计江西高校出版社7戴水贵Windows汇编语言程序设计教程清华大学出版社8罗杰INTEL86系列汇编语言程序设计江西科学技术出版社附:程序源代码附:程序源代码Init_gamemacroop1op2op3op4op5op6movcx00hmovdhop1movdlop2op6:movah02hmovbh00hint10hpushcxmovah0ahmovalop3movbh00hmovcx01hint10hpopcxinccxincop4cmpcxop5jneop6endmclear_screenmacroop1op2op3op4清屏宏定义movah06hmoval00hmovbh07hmovchop1陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告15movclop2movdhop3movdlop4int10hmovah02hmovbh00hmovdh00hmovdl00hint10hendmmenumacroop1op2op3菜单显示宏定义movah02hmovbh00hmovdhop1movdlop2int10hmovah09hleadxop3int21hendmdatasegmentZKdbHELLOWELCOMETOHERE!$nodbMynameisLiuHuimystudentnumberis:41012169.$megdbPressENTERkeytocontinue.$meg1dbWhenaletterisdroppingpleasehitit!$meg2dbPressSPACEkeytopause!$meg3dbPressESCkeytoreturnmaininterface!$meg4dbPressletterEtoexit!$speeddw500dlettersdbjwmilzoeucgpravskntxhdyqfbdbiytpkwnxlsvxrmofzhgaebudjqdbnwimzoexrphysfqtvdcgljukdaletters_bakdbjwmilzoeucgpravskntxhdyqfbdbiytpkwnxlsvxrmofzhgaebudjqdbnwimzoexrphysfqtvdcgljukdaletter_counterdb0life_flagdb78dup(0)position_flagdb78dup(0)present_positiondb1dataendsstacksegmentparastackstackdb64dup(0)stackendscodesegment陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告16mainprocfarassumecs:codeds:datass:stackstart:movaxdatamovdsaxmovletter_counter00hmovpresent_position1leasiposition_flagmovah00hmovcx00hinit_postion_flag:movsiahincsiinccxcmpcx78djneinit_postion_flagleadilettersleasiletters_bakmovcx00hinit_letters:movahsimovdiahincsiincdiinccxcmpcx78djneinit_lettersmovah00hleasilife_flagmovcx00hinit_life_flag:movsiahincsiinccxcmpcx78djneinit_life_flagmovcx00hmovah01horch00010000bint10hclear_screen00d00d24d79dInit_game00d00d0ahdl80dnextsign1Init_game24d00d0ahdl80dnextsign2Init_game00d00d0ahdh25dnextsign3Init_game00d79d0ahdh25dnextsign4陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告17menu05d15dZK菜单信息的宏调用menu07h15dnomenu09d15dmegmenu11d15dmeg1menu13d15dmeg2menu15d15dmeg3menu17d15dmeg4put:movah02h设置光标位置movbh00hmovdh22dmovdl33dint10hmovah01h从键盘输入任意字符int21hcmpal0dhjespeed3cmpal45hjeexitexit:movah4chint21hspeed3:movaxspeed+12movspeedaxjmpbeginbegin:clear_screen01d01d23d78d清屏宏调用clear_screen01d01d23d78dInit_game23d01d01hdl78dnextsign5movah02hmovbh00hmovdh01hmovdl01hint10hmovcx00hleasilettersnextletter:movah02h显示字母movdlsiint21hincsiinccxcmpcx78djenextcyclejmpnextletterfrom_front:subpresent_position78d陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告18jmpgobackto_sifind_zero:cmpletter_counter78djerecyclecmppresent_position78djefrom_onemovah00hnextsi:addpresent_position01hincsicmpsiahjegobackto_dicmppresent_position78djefrom_onejmpnextsifrom_one:movpresent_position01hjmpgobackto_sirecycle:movletter_counter00hmovpresent_position01dleasiposition_flagmovcx00hmovah00hclearsi:movsiahinccxcmpcx78djenextcycleincsijmpclearsinextcycle:leadilettersleasiposition_flagaddpresent_position31dcmppresent_position78jafrom_frontgobackto_si:addsiwordptrpresent_positiondecsimovahsicmpah01hjefind_zerogobackto_di:movah01hmovsiahadddiwordptrpresent_positiondecdi陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告19movdlpresent_positionmovah02hmovbh00hmovdh01hint10hmovcx00hnextrow:pushcxmovcx00hout_cycle:延迟pushcxmovcx00hin_cycle:addcx01hcmpcx1000jnein_cyclepushdxmovah06h从键盘输入字符movdl0ffhint21hpopdxjzpasscmpal1bh如果键入ESC,则返回主菜单jeto_start1cmpal如果键入SPACE,则游戏暂停jepausecmpaldi输入字母正确!则字母消失jedisappearpass:popcxinccxcmpcxspeedjeprintjmpout_cyclepause:pushdx暂停处理movah06hmovdl0ffhint21hpopdxcmpaljnepausejmppassto_start1:返回主菜单jmpstartprint:movah0ah在当前光标位置写空格陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告20movalmovbh00hmovcx01hint10hincdhmovah02h改变光标位置movbh00hint10hm

温馨提示

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

评论

0/150

提交评论