汇编课程设计论文

  • 格式:doc
  • 大小:125.50 KB
  • 文档页数:7

湖南农业大学东方科技学院课程论文(设计)学部:理工学部班级:计算机二班姓名:付常军学号:200941903224 课程论文(设计)题目:字母大小写转换程序设计课程名称:汇编语言与微机原理评阅成绩:评阅意见:成绩评定教师签名:日期:年月日字母大小写转换程序设计学生:付常军(理工学部09级计算机2班,学号200941903224)摘要:本程序主要完成一个字母转化程序,主程序分别具有 2种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。

2种可选择的子功能分别为:(1)实现小写字母向大写字母的转换;(2)实现大写字母向小写字母的转换。

本程序界面人性化,程序设计中主要应用了条件转移指令判断用户选择的子功能,通过更改字符对应的ASII码达到字母大小写的转换,并且程序还针对用户多种用户错误的输入情况作出处理。

关键字:汇编;程序;大小写转换字母大小写转换在数据处理中应用非常广泛,本程序利用汇编语言针对用户选择的子功能,实现字母大小写的转换。

一、需求分析在办公系统中,我们经常需要将字母进行大小写间的转换,以达到文本处理目的。

字母大小写转换,在生活的文件处理中也随处可见,因此编写一个实现字母大小写转换的程序确实能够处理现实中存在的一些问题。

而且本程序通过汇编语言实现,汇编语言具有许多其他语言不可替代的优点,其目标程序占用内存空间少,运行速度快,在一些硬件配置较差的机器上也能大显身手。

二、概要设计(一)数据类型程序中主要用了byte型变量,以及eax,al,bl寄存器。

将提示信息存储在byte型变量数组中,然后将偏移地址存储在eax寄存器中,以用于输出信息。

用al获得用户输入的字母,用bl暂时存储用户输入的字母。

(二)主要类型程序中主要用byte型变量存储提示信息,用al寄存器获得用户输入的字母,并将其存储到bl中,通过将字符串的偏移地址存储到eax寄存器中,以实现提示信息的输出。

(三)主要流程三、详细设计本程序首先将运行中要显示的各种提示信息存储在不同的变量里,例如将提示信息“请输入一个大写字母”存储到一个byte型变量的数组中,数组名为msg_inputCap,将.data段设置好后,程序一开始首先将要输出的提示信息相应数组的偏移地址存储到eax寄存器中,然后调用dispmsg子过程,以实现菜单的显示。

然后调用readc子过程,获得用户输入的菜单编号,接着利用cmp命令,判断用户输入的编号,并根据编号做出相应处理。

当用户输入‘a’时,程序跳转到‘a’标识符,提示用户输入一个大写字母,同样利用readc子过程,获得用户输入的大写字母。

程序首先用cmp命令对输入的字母分别与‘A’和‘Z’进行比较,以实现对字母是否合法的判断,如果用户输入的字母范围不在‘A’到‘Z’之间,则程序将报错,并调整到标识符“return_a”,以提示用户重新输入。

只有用户输入的字母有效,程序才将其ASII码加20h,以转换成相应的小写字母。

并将其输出。

当用户输入‘b’时,处理过程类似,程序跳转到‘b’标识符,程序提示用户输入一个小写字母,同样利用readc子过程,获得用户输入的小写字母。

程序首先用cmp命令对输入的字母分别与‘a’和‘z’进行比较,以实现对字母是否合法的判断,如果用户输入的字母范围不在‘a’到‘z’之间,则程序将报错,并调整到标识符“return_b”,以提示用户重新输入。

只有用户输入的字母有效,程序才将其ASII码减20h,以转换成相应的大写字母。

当用户输入‘q’时,程序跳转到‘q’标识符,然后利用无条件跳转语句jmp跳转到程序结束位置。

程序退出,返回模拟dos界面。

程序的具体代码如下:;题目四字母大小写转换程序设计include io32.inc.datamsg1 byte ' 字母转换系统',13,10,0 ; 菜单msg2 byte ' ------------------------------------------------------------',13,10,0 ;分隔线msg3 byte ' 编号操作',13,10,0 ;msga byte ' a 实现大写字母向小写字母的转换',13,10,0msgb byte ' b 实现小写字母向大写字母的转换',13,10,0msgq byte ' q 退出',13,10,0msg_err byte ' 输入错误,请重新输入',13,10,0msg_meau byte '请输入菜单对应的编号: ',0msg_inputCap byte '请输入一个小写字母: ',0msg_inputLow byte '请输入一个大写字母: ',0msg_output_Low byte '对应的小写字母: ',0msg_output_Cap byte '对应的大写写字母: ',0.codestart:mov eax,offset msg1 ;显示菜单各项内容call dispmsgcall dispmsgmov eax,offset msg3call dispmsgmov eax,offset msgacall dispmsgmov eax,offset msgbcall dispmsgmov eax,offset msgqcall dispmsgmeau: mov eax,offset msg_meaucall dispmsg;提示输入对于的菜单编号call readc ;输入菜单对应的编号call dispcrlf ;换行,以使界面更美观cmp al,'a' ;判断用户输入jz a ;用户输入‘a’,则跳转到标识符‘a’cmp al,'b'jz b ;用户输入‘b’,则跳转到标识符‘b’cmp al,'q'jz q ;用户输入‘q’,则跳转到标识符‘q’mov eax,offset msg_errcall dispmsg ;用户输入错误,则提示错误信息jmp meau;return_a:mov eax,offset msg_errcall dispmsga: mov eax,offset msg_inputLow;call dispmsg;提示输入一个大写字母call readc ;获得用户输入的字母mov bl,al ;将用户输入的字母存储到bl中call dispcrlfcmp al,'A' ;判断用户输入字母的合法性jb return_a;如果用户输入的字母比‘A’小,则跳转到return_a标识符cmp al,'Z'ja return_a; 如果用户输入的字母比‘Z’大,则跳转到return_a标识符call dispcmov eax,offset msg_output_Low;用户输入正确,则提示输出相应的小写字母call dispmsg;add bl,20h ;将用户输入字母的ASII码加20h,以实现大写到小写间的转换mov al,blcall dispc;将转换的字母输出call dispcrlfjmp meaureturn_b:call dispmsgb: mov eax,offset msg_inputCap;call dispmsg;提示输入一个小写字母call readc;获得用户输入的字母mov bl,al;将用户输入的字母存储到bl中call dispcrlfcmp al,'a';判断用户输入字母的合法性jb return_b;cmp al,'z'ja return_b;call dispcmov eax,offset msg_output_Capcall dispmsg;sub bl,20h;将用户输入字母的ASII码减20h,以实现小写到大写间的转换mov al,blcall dispc; 将转换的字母输出call dispcrlfjmp meauq: jmp donedone:exit 0end start四、调试分析例如,输入‘a’,则进入大写字母转换成小写字母子程序,程序提示用户输入一大写字母,针对用户输入的大写字母,程序输出相应的小写字母,如果用户输入的不是大写字母,则程序将会报错,并提示用户重新输入。

用户输入‘b’时,进入小写字母转换成大写字母子程序,程序将提示用户输入一小写字母,如果用户输入正确,程序将输出相应的大写字母,否则程序将报错,并提示用户重新输入。

而且,当用户输入的菜单编号错误时,程序也会报错,并提示用户程序输入。

当用户处理信息完毕后,按‘q’键,可退出本程序。

五、用户使用说明用户在dos环境或模拟dos环境进入本程序。

程序将会显示菜单,用户可根据菜单相应编号进行操作。

菜单如下图:例如,输入‘a’,则程序提示用户输入一大写字母,正确输入大写字母后,程序将会输出相应的小写字母;输入‘b’,则程序提示用户输入一小写字母,正确输入小写字母后,程序将会输出相应的大写字母;输入‘q’,则返回dos,退出程序。

六、测试结果示例首先在模拟dos环境进入程序,输入菜单编号‘a’,按提示输入一个大写字母‘I’,程序输出对应的小写字母‘i’;接着输入菜单编号‘b’,按提示输入一个小写字母‘w’,程序输出对应的大写字母‘W’。

输入一个错误的菜单编号‘c’,程序提示“输入错误,请重新输入”,并继续跳转到用户输入菜单编号步骤。

在大写字母转换成小写字母子程序中,输入一个小写字母,程序提示“输入错误,请重新输入”,并要求用户输入一个大写字母。

按‘q’键退出本程序,返回模拟dos界面。

测试结果如下图:七、心得体会通过本次汇编课程设计,我深刻感受到了汇编语言在程序运行效率,以及时间、空间上的优越性。

对汇编中常用的寄存器有了一定的了解,掌握了一些常用的子过程,例如readc、dispmsg等。

同时对程序设计的基本步骤有了一定的了解,在程序的调试过程在不断完善功能,使本程序功能更强大,能够处理更多的错误,处理更多的异常。

本次课程设计,我独立完成了本程序的开发,我感受到编程的兴奋,也感受到的汇编语言的特点,同时也感谢陈老师的指导。

参考文献[1] 钱晓捷.微机原理与接口技术,基于IA-32处理器和32位汇编语言[M].2008年1月:30-100[2] 陈涛.16/32位微机原理,汇编语言及接口技术[M]. 2008年6月:56-70[3] 白中英.计算机组成原理[M].2008年1月:45-53[4] 张雪兰.汇编语言程序设计:从DOS到Windows[M].2006年10月:101-120[5] 王爽. 汇编语言[M]. 2008年3月:135-140。