汇编课程设计论文
- 格式: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
.data
msg1 byte ' 字母转换系统
',13,10,0 ; 菜单
msg2 byte ' ------------------------------------------------------------',13,10,0 ;分隔线
msg3 byte ' 编号操作
',13,10,0 ;
msga byte ' a 实现大写字母向小写
字母的转换',13,10,0
msgb byte ' b 实现小写字母向大写
字母的转换',13,10,0
msgq byte ' q 退出',13,10,0
msg_err byte ' 输入错误,请重新输入',13,10,0
msg_meau byte '请输入菜单对应的编号: ',0
msg_inputCap byte '请输入一个小写字母: ',0
msg_inputLow byte '请输入一个大写字母: ',0
msg_output_Low byte '对应的小写字母: ',0
msg_output_Cap byte '对应的大写写字母: ',0
.code
start:
mov eax,offset msg1 ;显示菜单各项内容
call dispmsg
call dispmsg
mov eax,offset msg3
call dispmsg
mov eax,offset msga
call dispmsg
mov eax,offset msgb
call dispmsg
mov eax,offset msgq
call dispmsg
meau: mov eax,offset msg_meau
call 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_err
call dispmsg ;用户输入错误,则提示错误信息
jmp meau;
return_a:
mov eax,offset msg_err
call dispmsg
a: mov eax,offset msg_inputLow;
call dispmsg;提示输入一个大写字母
call readc ;获得用户输入的字母
mov bl,al ;将用户输入的字母存储到bl中
call dispcrlf
cmp al,'A' ;判断用户输入字母的合法性
jb return_a;如果用户输入的字母比‘A’小,则跳转到return_a标识符
cmp al,'Z'
ja return_a; 如果用户输入的字母比‘Z’大,则跳转到return_a标识符call dispc
mov eax,offset msg_output_Low;用户输入正确,则提示输出相应的小写字母call dispmsg;
add bl,20h ;将用户输入字母的ASII码加20h,以实现大写到小写间的转换mov al,bl
call dispc;将转换的字母输出
call dispcrlf
jmp meau
return_b: