版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言课程设计报告(2010--2011年度第2学期)代码转换程序专 业 计算机科学与技术学生姓名 袁帅 班 级 B计算机092 学 号 0910704225 指导教师 王志宏 完成日期 2011年6月24日 目录TOC\o"1-5"\h\z目录 2\o"CurrentDocument"概述 1课程设计目的 1课程设计内容 1\o"CurrentDocument"程序需求分析 1程序目标 1主体功能 1开发环境 1\o"CurrentDocument"程序概要设计 1程序的功能模块划分 1程序流程图 2\o"CurrentDocument"程序详细设计 4程序功能菜单模块设计 4小写字母向大写字母转换模块设计 4大写字母向小写字母转换模块设计 5二进制数向十六进制数转换模块设计 5十六进制数向二进制数转换模块设计 5十六进制数向十进制数转换模块设计 6\o"CurrentDocument"测试 6测试方案 6测试结果 7\o"CurrentDocument"6小结 7\o"CurrentDocument"参考文献 9附录 10\o"CurrentDocument"附录1源程序清单 10附录1.1程序功能菜单模块源程序 10附录1.2小写字母向大写字母转换模块源程序 12附录1.3大写字母向小写字母转换模块源程序 13附录1.4二进制数向十六进制数转换模块源程序 13附录1.5十六进制数向二进制数转换模块源程序 14附录1.6十六进制数向十进制数转换模块源程序 15代码转换程序设计概述课程设计目的1、 通过利用汇编语言写代码转换程序,更好的掌握汇编语言,通过实践来巩固汇编语言的理论知识。2、 巩固并加深对汇编语言程序设计知识的理解3、 进一步掌握和应用汇编语言集成开发环境4、 提高运用汇编语言解决实际问题的能力5、 掌握书写程序设计开发文档的能力(书写课程设计实验报告)课程设计内容功能菜单的编制;小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;十六进制数向二进制数的转换;十六进制数向十进制数的转换。程序需求分析程序目标实现代码转换:大小写字母之间转换,二进制、十进制、十六进制之间的相互转换。主体功能模块2、模块3选项,进行大小写字母的转换,显示出待转换的字母及转换后的字母。在实际应用中,不仅有数值的运算,还有更多的是大量的非数值的处理,特别是在现代或今后的社会活动中,非数值处理在管理程序、文字处理和过程控制中将会得到广泛的应用。模块4、模块6、模块7选项,进行数制的转换,显示出待转换数值及转换后的数值。本选项的功能时实现十进制数向二进制和十六进制的转换。由于用户输入的数一般是用十进制表示的,而这些数在计算机内存储、运算时一般都是用二进制,这就涉及到了十进制数向二进制的转换问题,所以二进制和十进制之间的转换算法是汇编语言程序员应该掌握的基本算法之一。开发环境MicrosoftWindows7TASM程序概要设计程序的功能模块划分设计一个字母和数制之间的转化的程序,用户通过输入不同的数字,来选择要
实现的功能。输入6可直接退出程序。本程序共有7个模块:模块5为主模块,调用模块1和模块7。模块1又调用模块2、3、4和6四个模块,其中:模块2实现小写字母向大写字母的转换。模块3实现大写字母向小写字母的转换。模块4实现二进制数向十六进制数的转换。模块6实现十六进制数向二进制数的转换。模块7实现十六进制数
图3-2小写向大写转换图3-3大写向小写转换图3-4二进制向十六进制转换 图3-5十六进制向二进制转换
图3-6十六进制向十进制转换程序详细设计程序功能菜单模块设计str2DB0AH,0DH,'**Welcomeyou!**$'str3DB0AH,0DH,'** **$'str4DB0AH,0DH,'**Thisisprogrammeofcodeconversion!**$'str5DB0AH,0DH,'**Pleaseinputyourchoice:**$'str6DB0AH,0DH,'**1:LowercaseletterstoCapitalletters**$'str7DB0AH,0DH,'**2:CapitalletterstoLowercaseletters**$'str8DB0AH,0DH,'**3:BinarytoHex**$'str9DB0AH,0DH,'**4:HextoBinary**$'str10DB0AH,0DH,'**5:HextoDecimal**$'str11DB0AH,0DH,'**6:Quitorexit**$主菜单的功能选择菜单的代码如下:主程序中的提示信息*****DB0AH,0DH,'******************************************************$'•rT*rT*str1str12DB0AH,0DH,'******************************************************$'通过disp语言将其打印在屏幕上,用户可以通过输入不同的字母来选择实现不同的功能。(输入的字母不区分大小写)小写字母向大写字母转换模块设计先从键盘上读取字符:start:pushdssubax,axpushaxmovax,datamovds,ax并判断字符是否有效:again:movah,1int21hcmpal,'0'得到有效字符之后,通过ASCII值进行运算得到相应的大写字母并输出。大写字母向小写字母转换模块设计先从键盘上读取字符:start:pushdssubax,axpushaxmovax,datamovds,ax并判断字符是否有效:again:movah,1int21hcmpal,'0'得到有效字符之后,通过ASCII值进行运算得到相应的小写字母并输出。二进制数向十六进制数转换模块设计先从键盘上读取字符:start:pushdssubax,axpushaxmovax,datamovds,ax并判断字符是否有效:again:movah,1int21hcmpal,'0'当得到有效字符时,对得到的二进制数进行运算得到十六进制数并输出,在输出时在数字的结尾加上十六进制标识符H。十六进制数向二进制数转换模块设计先从键盘上读取字符:start:pushdssubax,axpushaxmovax,datamovds,ax并判断字符是否有效:again:movah,1int21hcmpal,'0'当得到有效字符时,对得到的十六进制数进行运算得到二进制进制数并输出,在输出时在数字的结尾加上二进制数标识符B。十六进制数向十进制数转换模块设计先从键盘上读取字符:start:pushdssubax,axpushaxmovax,datamovds,ax并判断字符是否有效:again:movah,1int21hcmpal,'0'当得到有效字符时,对得到的十六进制数进行运算得到十进制数并输出,在输出时在数字的结尾加上十进制数标识符D。5测试5.1测试方案图5-1主菜单Inputyourchoice:uinputLouercaselettersSToutputCapitalletters:GInputyourchoice:图5-3小写字母向大写字母转换Inputyourchoice:1inputCapitalletters:DoutputLowercaselettersInputyourchoice:图5-4大写字母向小写字母转换Inputyourchoice:dInputnumberis:1010Outputnumberis:00010Dllnpul:youi?choice:.图5-5二进制向十六进制转换Inputyourchoice:bPleaseinputthefourHexnumber:ladbH0001101011011011Bllnputyoui*uhoiw图5-6十六进制向二进制转换Inputyourchoice:hInputnumberis:1423Outputnumberis:058FHInputyourchoice图5-7十六进制向十进制转换测试结果程序在大小写字母转换,二进制数,十进制数和十六进制数之间的相互转换中没有出错,当输入错误的指令或字符时会提示输入错误并让用户继续输入。测试结果如下图所示:Inputyourchoice:Inputerror,pleaserepess?Inputyourchoice图5-8输入错误指令时6小结通过此次课程设计,使我更加扎实的掌握了有关汇编语言方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手编程,使我们掌握的知识不再是纸上谈兵。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终把程序调试成功。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在和同学的讨论下,还有网上搜索的结果下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计给我很多专业知识以及专业技能上的提升,同时又给了我许多思考方法,给了我很多思考思路,给了我很大的自由发挥空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了汇编语言更多知识,这些是课本上没有的。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的掌握所学的知识,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。课程设计过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询或者同学间相互讨论,只要认真钻研,动脑思考,动手实践,就没有克服不了的难题。参考文献刘其明.汇编语言程序设计教程[M].江苏:中国矿业大学出版社,2010.10沈美明.IBM-PC汇编语言程序设计实验教程[M].北京:清华大学出版社,2010.6附录附录1源程序清单附录1.1程序功能菜单模块源程序主菜单:extrnmain:far,change1:far,change2:far,change3:far,change4:far,change5:farstacksegmentparapublic'stack'db200dup(0)stackendsdatasegment;*****主程序中的提示信息*****str3DB0AH,0DH,'** **$'str4DB0AH,0DH,'**Thisisprogrammeofcodeconversion!**$'str5DB0AH,0DH,'**Pleaseinputyourchoice:**$'str6DB0AH,0DH,'**1:LowercaseletterstoCapitalletters**$'str7DB0AH,0DH,'**2:CapitalletterstoLowercaseletters**$'str8DB0AH,0DH,'**3:BinarytoHex**$'str9DB0AH,0DH,'**4:HextoBinary**$'str10DB0AH,0DH,'**5:HextoDecimal**$'str11DB0AH,0DH,'**6:Quitorexit**$'DB0AH,0DH,'******************************************************$'str1str2DB0AH,0DH,'** Welcomeyou!**$'str12DB0AH,0DH,'******************************************************$'str13DB0Ah,0Dh,'Inputerror,pleaserepess!','$'str14DB0AH,0DH,0AH,0DH,'Inputyourchoice:','$'dataendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axdispmacromleadx,mmovah,9int21hendmdispstr1dispstr2dispstr3dispstr4dispstr5dispstr6dispstr7dispstr8dispstr9dispstr10dispstr11dispstr12dispstr14lop:movah,8int21hcmpal,'1'jzltolcmpal,'2'jzlto2cmpal,'3'jzlto3cmpal,'4'jzlto4cmpal,'5'jzlto5cmpal,'6'jzexitdispstr13dispstr14jmplopltol:callmaincallchange1jmploplto2:callmaincallchange2jmploplto3:callmaincallchange3jmploplto4:callmaincallchange4jmploplto5:callmaincallchange5jmplopexit:movah,4chint21hcodeendsendstart子菜单:publicinfo1,info2,bufa,bufb,buf,main,info0,info3extrnchange1:far,change2:far,change3:far,change4:fardatasegmentinfo0db0ah,0dh,'thisisthechangeoflettertoleter:$'info1db0ah,0dh,'pleaseinputstring:$'info2db0ah,0dh,'outputstring:$'bufadb81db?db80dup(?)bufbdb80dup(?)info3db0ah,0dh,'thisisthechangeofdigitaltodigital:',0ah,0dh,'$'bufdb0dh,0ah,'thenumberis:0100101010001111b',0ah,0dh,'theresultis:$'dataendsstacksegmentstackdb200dup(?)stackendscodesegmentmainprocfarassumeds:data,cs:code,ss:stackmovax,datamovds,axdispmacromleadx,mmovah,9int21hendmcallchange1callchange2dispinfo3dispbufcallchange3callchange4retmainendpcodeendsend附录1.2小写字母向大写字母转换模块源程序extrninfo1:byte,info2:byte,bufa:byte,bufb:byte,info0:bytepublicchange1codesegmentassumecs:codelowtohighprocnearcmpal,'a'jbstopcmpal,'z'jastopsubal,20hstop:retlowtohighendpchange1procfarleadx,info0movah,9int21hleadx,info1movah,9int21hleadx,bufamovah,10int21hleasi,bufa+1leadi,bufbmovch,0movcl,[si]addsi,1next:moval,[si]calllowtohighmov[di],alincsiincdiloopnextmovbyteptr[di],'$'leadx,info2movah,9int21hleadx,bufbmovah,9int21hretchange1endpcodeendsend附录1.3大写字母向小写字母转换模块源程序extrninfo1:byte,info2:byte,bufa:byte,bufb:bytepublicchange2codesegmentassumecs:codehightolowprocnearcmpal,'A'jbstopcmpal,'Z'jastopaddal,20hstop:rethightolowendpchange2procfarleadx,info1movah,9int21hleadx,bufamovah,10int21hleasi,bufa+1leadi,bufbmovch,0movcl,[si]incsinext:moval,[si]callhightolowmov[di],alincsiincdiloopnextmovbyteptr[di],'$'leadx,info2movah,9int21hleadx,bufbmovah,9int21hretchange2endpcodeendsend附录1.4二进制数向十六进制数转换模块源程序extrnbuf:byte,info3:bytepublicchange3codesegmentchange3procfarassumecs:codesubax,axmovch,4movcl,4movbx,4a8fhrotate:rolbx,clmoval,blandal,0fhaddal,30hcmpal,3ahjlprintitaddal,7hprintit:movdl,almovah,2int21hdecchjnzrotatemovdl,'H'movah,2int21hretchange3endpcodeendsend附录1.5十六进制数向二进制数转换模块源程序publicchange4datasegmentbufdb0ah,0dh,'pleaseinputthefourhexnumber:$'dataendscodesegmentassumecs:code,ds:datachange4procfarmovax,datamovds,axleadx,bufmovah,9int21hmovbx,0movch,4input:movcl,4salbx,clmovah,1int21hcmpal,39hjaafandal,0fhjmpbinaryaf:andal,0fhaddal,9binary:orbl,aldecchcmpch,0jneinputmovdl,'H'movah,2int21hmovdl,0ahmovah,2int21hmovdl,0dhmovah,02int21hmovcx,16disp:movdl,0rolbx,1rcldl,1ordl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学仪器科学与技术(仪表研发设计)试题及答案
- 2025年高职雪茄烟草叶制作与包装(烟叶处理与包装规范)试题及答案
- 2025年中职(会展策划师)展会策划阶段测试题及答案
- 2025年中职第一学年(文秘)公文写作技能试题及答案
- 2025年大学大二(森林保护学)病虫害防治期末测试试题及答案
- 2025年中职会计事务(财务核算基础)试题及答案
- 2025年高职高星级饭店运营与管理(宴会策划)试题及答案
- 2025年大学本科(会计学)财务报表编制与分析试题及答案
- 2025年高职包装设计与制作(绿色包装设计)试题及答案
- 2025年大学语文(经典诵读)试题及答案
- 风电项目数据采集与分析流程
- 监控运维工作总结
- 材料供应商与装修公司合作协议模板
- 股权收购协议(参考文本)
- 2025届高考语文一轮复习:二元思辨类作文思辨关系高阶思维
- 新人教版七年级上册初中数学全册教材习题课件
- 地下综合管廊混凝土工程施工方案
- 2024-2025学年湖北省咸宁市高二生物学上册期末达标检测试卷及答案
- 预制混凝土构件质量控制
- 2024高考英语应用文写作真题手把手:2023全国乙卷素材
- 抵制网络烂梗主题班会课件不盲目跟风做自己的主人
评论
0/150
提交评论