版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言课程设计报告(20--20年度第1学期)课题名称:课题名称:代码转换程序专业XXXXX学生姓名XXX班级XXXXXXX学号XXXX指导教师XXXX完成日期XXXX目录TOC\o"1-5"\h\z\u目录 21概述 11.1课程设计目的 11.2课程设计内容 12程序需求分析 12.1程序目标 12.2主体功能 12.3开发环境 13程序概要设计 13.1程序的功能模块划分 13.2程序流程图 24程序详细设计 44.1程序功能菜单模块设计 44.2小写字母向大写字母转换模块设计 44.3大写字母向小写字母转换模块设计 54.4二进制数向十六进制数转换模块设计 54.5十六进制数向二进制数转换模块设计 54.6十六进制数向十进制数转换模块设计 65小结 7参考文献 9附录 10附录1源程序清单 10代码转换程序设计1概述1.1课程设计目的1、通过利用汇编语言写代码转换程序,更好的掌握汇编语言,通过实践来巩固汇编语言的理论知识。2、巩固并加深对汇编语言程序设计知识的理解3、进一步掌握和应用汇编语言集成开发环境4、提高运用汇编语言解决实际问题的能力5、掌握书写程序设计开发文档的能力(书写课程设计实验报告)1.2课程设计内容功能菜单的编制;小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;十六进制数向二进制数的转换;十六进制数向十进制数的转换。2程序需求分析2.1程序目标实现代码转换:大小写字母之间转换,二进制、十进制、十六进制之间的相互转换。2.2主体功能模块2、模块3选项,进行大小写字母的转换,显示出待转换的字母及转换后的字母。在实际应用中,不仅有数值的运算,还有更多的是大量的非数值的处理,特别是在现代或今后的社会活动中,非数值处理在管理程序、文字处理和过程控制中将会得到广泛的应用。模块4、模块6、模块7选项,进行数制的转换,显示出待转换数值及转换后的数值。本选项的功能时实现十进制数向二进制和十六进制的转换。由于用户输入的数一般是用十进制表示的,而这些数在计算机内存储、运算时一般都是用二进制,这就涉及到了十进制数向二进制的转换问题,所以二进制和十进制之间的转换算法是汇编语言程序员应该掌握的基本算法之一。2.3开发环境MicrosoftWindows7MASM3程序概要设计3.1程序的功能模块划分设计一个字母和数制之间的转化的程序,用户通过输入不同的数字,来选择要实现的功能。输入6可直接退出程序。本程序共有7个模块:模块5为主模块,调用模块1和模块7。开始显示提示信息调用功能接收键盘输入信息实现小写字母向大写字母的转换开始显示提示信息调用功能接收键盘输入信息实现小写字母向大写字母的转换实现大写字母向小写字母的转换实现二进制数向十六进制数的转换实现十六进制数向二进制数的转换实现十六进制数向十进制数的转换输出错误是“2”?是“3”?是“4”?是“5”?是“6”?是“1”?退出YNYYYYYNNNNN3.2程序流程图图3-1程序流程图4.1程序功能菜单模块设计4.2小写字母向大写字母转换模块设计4.3二进制数向十六进制数转换模块设计4.4十六进制数向二进制数转换模块设计4.5十六进制数向十进制数转换模块设计5小结通过此次课程设计,使我更加扎实的掌握了有关汇编语言方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手编程,使我们掌握的知识不再是纸上谈兵。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终把程序调试成功。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在和同学的讨论下,还有网上搜索的结果下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计给我很多专业知识以及专业技能上的提升,同时又给了我许多思考方法,给了我很多思考思路,给了我很大的自由发挥空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了汇编语言更多知识,这些是课本上没有的。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的掌握所学的知识,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。课程设计过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询或者同学间相互讨论,只要认真钻研,动脑思考,动手实践,就没有克服不了的难题。参考文献[1]刘其明.汇编语言程序设计教程[M].江苏:中国矿业大学出版社,2010.10[2]沈美明.IBM-PC汇编语言程序设计实验教程[M].北京:清华大学出版社,2010.6 附录附录1源程序清单源程序:DATAS SEGMENTmenu DB 0AH,0DH,'' DB 0AH,0DH,'Pleasechoiceaction:',0AH,0DH DB 0AH,0DH,'1.Letterchange' DB 0AH,0DH,'2.BinarytoHexadecimal' DB 0AH,0DH,'3.HexadecimaltoBinary' DB 0AH,0DH,'4.HexadecimaltoDecimal' DB 0AH,0DH,'q.Exit' DB 0AH,0DH,'',0AH,0DH,'$'STR1 DB 0AH,0DH,'PleaseinputaLetter',0AH,0DH,'$'STR11 DB 0AH,0DH,'ThebigLetteris:',0AH,0DH,'$'STR12 DB 0AH,0DH,'ThelitteLetteris:',0AH,0DH,'$'STR13 DB 0AH,0DH,'PleaseconfirmyoujustinputedisaLetter',0AH,0DH,'$'STR2 DB 0AH,0DH,'Pleaseinputthebinarystring,Entertoconfirm',0AH,0DH,'$'STR21 DB 0AH,0DH,'ThestringHexadecimalis:',0AH,0DH,'$'STR3 DB 0AH,0DH,'PleaseinputtheHexadecimalstring,Entertoconfirm',0AH,0DH,'$'STR31 DB 0AH,0DH,'changetobinaryis:',0AH,0DH,'$'STR4 DB 0AH,0DH,'changetoDecimalis:',0AH,0DH,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS;宏定义字符输入charin MACRO ;宏定义无参数的字符输入功能 MOVAH,01H ;系统调用输入一个字符用于功能选择 INT21H ;字符默认输入到AL中ENDM;宏定义数字输入数字输入到AL中numin MACRO charin SUBAL,48ENDM;宏定义字符串输入strin MACROSTRINGIN ;将字符串输入到字符串STRINGIN中 LEADX,STRINGIN ;将STRINGIN的偏移地址送到DX寄存器 MOVAH,0AH ;0AH字符串输入功能 INT21H ;调用系统中断ENDM ;宏定义字符输出charout MACRO outchar ;宏定义将字符outchar输出 PUSHAX PUSHDX MOVDL,outchar MOVAH,02H ;系统调用输出字符outchar INT21H ;调用系统中断调用过程中会改变AL中的值,故将AX中的值入栈保存 POPDX POPAXENDM;宏定义数字输出numout MACROoutnum PUSHAX PUSHDX MOVDL,outnum ADDDL,48 ;将数值转换为对应得数值字符 MOVAH,02H ;系统调用输出字符outchar INT21H ;调用系统中断调用过程中会改变AL中的值,故将AX中的值入栈保存 POPDX POPAXENDM;宏定义字符串输出strout MACROSTRINGOUT ;将字符串STRINGOUT输出 PUSHAX PUSHDX LEADX,STRINGOUT ;将STRIN的偏移地址送到DX寄存器 MOVAH,9 ;09H字符串输出功能 INT21H ;调用系统中断 POP DX POP AXENDM;宏定义换行endl MACRO ;宏定义换行 PUSHAX PUSHBX PUSHCX PUSHDX MOVDL,0AH ;先输出垂直Tab键 MOVAH,2 INT21H ;调用系统中断实现输出 MOVDL,0DH ;再将输出输出调至段首 INT21H ;调用系统中断 POPDX POPCX POPBX POPAXENDM;宏定义以baseNum进制输出AX中的数值outAX MACRO baseNum ;宏定义换行 PUSHAX PUSHBX PUSHCX PUSHDX MOVBX,baseNum ;将要转换成的进制存入BX作为除数 CALLoutAXp ;调用进制输出过程 POPDX POPCX POPBX POPAXENDM;过程定义 以baseNum进制形式输出存放在AX中的数值过程outAXp PROC MOVDX,0 ;初始化DX配合AX一起进行处罚操作 MOVCX,0 ;用CX计数取得个余数个数 outAXp_Circle: CMPAX,0 ;判断AX中的值是否为0 JEoutAXp_NEXT ;是则跳转 DIVBX ;不是则进行除10运算商保存在AX中余数保存在DX中 PUSHDX ;将对10取到的余数入栈保存 MOVDX,0 ;将DX中的余数清空以便下一步对AX中的数进行除10运算 INCCX ;计数循环取得的余数个数 JMPoutAXp_Circle outAXp_NEXT: ;循环输出取得的余数 POPAX CMPAL,10 ;当余数小于10时,直接将数值输出 JB nout ADDAL,55 ;否则将余数转化为对应的字符10对应字符'A' charoutAL JMPcout nout: numoutALcout: LOOPoutAXp_NEXT RET outAXp ENDP;宏定义以baseNum进制输入数据串到AX中,可输入2-37进制inAX MACRO baseNum ;宏定义换行 PUSHBX PUSHCX PUSHDX MOVCX,baseNum ;将要转换成的进制存入BX作为除数 CALLinAXp ;调用进制输入过程 POPDX POPCX POPBXENDM;过程定义 以baseNum进制形式输出存放在AX中的数值过程inAXp PROC MOV AX, 0inAXp0: PUSHAXinAXp1: charin ;逐个字符进行输入,结果存放到AX中 CMPAL,13 JE inAXE ;当按下Enter键后跳转AX的输出 CMPAL,'0' JB inAXp1 ;当输入字符小于'0'时,跳转inAXp1,跳转重新进行字符输入 CMPAL,'9' JA inAXnext1 ;当输入字符大于'9'时,跳转inAXnext1进一步进行比较 SUB AL,48 ;当字符在'0'-'9'之间时,将字符转化为对应的数值 JMPinAXnum ;跳转数值输入 inAXnext1: CMPAL,'A' JB inAXp1 ;当输入字符小于'A'时,跳转重新进行字符输入 CMPAL,'Z' JA inAXnext2 ;当输入字符大于'Z'时,跳转inAXnext2进一步进行比较 SUB AL,55 ;当字符在'A'-'Z'之间时,将字符转化为对应的数值,并跳转到数值输入 JMPinAXnum inAXnext2: CMPAL,'a' JB inAXp1 ;当输入字符小于'A'时,跳转重新进行字符输入 CMPAL,'z' JA inAXp1 ;当输入字符小于'A'时,跳转重新进行字符输入 SUB AL,87 ;当字符在'a'-'z'之间时,将字符转化为对应的数值,并跳转到数值输入 JMPinAXnum inAXnum:MOVBH,0 ;将数值送到AX中 MOVBL,AL POP AX CMPAX,0 ;当AX中的数值为0时,跳过乘法操作 JE inAXadd MULCX ;乘以CX中的进制基数inAXadd:ADDAX,BX JMPinAXp0 inAXE: POP AX ;将计算得到的数值出栈到AX中 RET inAXp ENDPSTART: MOVAX,DATAS ;将数据段地址送到AX中 MOVDS,AX ;由AX转送到送到DS P0: strout menu ;字符串输出宏调用输出menu的提示菜单 charin ;宏调用字符输入选择相应功能 CMPAL,'1' JE P1 CMPAL,'2' JE P2 CMPAL,'3' JE P3 CMPAL,'4' JE P4 CMPAL,'q' JE Pq CMPAL,'Q' JE Pq JMP P0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园教师教研奖惩制度
- 文具店员工守则奖惩制度
- 县医院控烟工作奖惩制度
- 销售专员绩效奖惩制度
- 村计生协会会长奖惩制度
- 实验室奖惩制度细则
- 门诊日志自查与奖惩制度
- 制定学生个性化奖惩制度
- 高压电现场施工奖惩制度
- 服务区社治办奖惩制度
- 凹版印刷技术培训
- 《急性肝功能衰竭》课件
- 北海市老干部活动中心招聘笔试真题2024
- 国家中小学智慧教育平台应用指南
- 2025年部编版道德与法治五年级下册第二单元复习课教案
- 学生心理健康一生一策档案表
- 2025年初级会计职称《经济法基础》精讲课件 (第5-8章)
- 基于PLC电解机床控制系统设计13000字论文
- GB/T 41850.9-2024机械振动机器振动的测量和评价第9部分:齿轮装置
- 6西格玛管理在护理应用中的案例
- GB/T 44731-2024科技成果评估规范
评论
0/150
提交评论