英文字母大小写转换程序设计.docx
- 文档编号:16998295
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:23
- 大小:84.94KB
英文字母大小写转换程序设计.docx
《英文字母大小写转换程序设计.docx》由会员分享,可在线阅读,更多相关《英文字母大小写转换程序设计.docx(23页珍藏版)》请在冰点文库上搜索。
英文字母大小写转换程序设计
课程设计任务书
学生姓名:
刘小燕专业班级:
电信0801班
指导教师:
陈德军工作单位:
信息工程学院
题目:
英文字母大小写转换程序设计
初始条件:
具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、输入英文字母串,在回车后实现大小写转换
2、按命令要求将字符串转换为全部大写或全部小写
3、非英文字母不允许输入并声响报警
4、程序采用汇编语言在PC机上完成
5、完成符合学校要求的设计说明书
时间安排:
一周,其中2天程序设计,2天程序调试,1天完成课程设计报告书及答辩
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。
汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。
本次课程设计的任务是用汇编语言做一个英文字母大小写转换程序,按照用户的要求完成对输入数据的大写或者小写转换。
先输入要转换的数据,再对数据进行检验判断其合法性,对不合法的数据进行警报并重新输入数据,对合法的数据按照要求进行大写或者小写转换,最后显示转换后的字符串。
关键词:
DOS功能调用大写英文小写英文转换
1DOS功能调用
在进行设计之前,先要弄清楚INT21H软中断的DOS功能调用。
MSDOS操作系统为程序设计者提供了可以直接调用的软中断处理程序,每一个中断处理程序完成一个特定的功能操作。
依据编程需要选择适当的处理程序,编程者不需再重新编写程序,而是使用INTn软中断指令。
每执行一种不同类型码n的软中断指令,就执行一个中断处理程序,其主要功能如下。
①磁盘的读/写控制。
②内存管理、文件操作和目录管理。
③基本输入/输出(对键盘、打印机和显示器等)控制,另外还有日期、时间管理等。
当类型码n=05H~1FH时,调用BIOS的中断处理程序;类型码n=20H~3FH时,调用DOS的中断处理程序,这次课程设计使用的是DOS中断处理程序。
INT21H软中断是一个具有几十种功能的大型中断服务程序,给这些子功能程序分别予以编号,称为功能号。
每个功能程序完成一种特定的操作和处理。
对INT21H软中断指令对应的功能子程序的调用称为DOS系统功能调用。
调用系统功能子程序时,不必了解所使用设备的物理特性、接口方式及内存分配等,也不必编写繁琐的控制程序,这样给应用者带来了很大的方便。
应用INT21H系统功能调用的方法如下。
①入口参数送指定的寄存器或内存。
②功能号送AH中。
③执行INT21H软中断指令。
有的子功能程序不需要入口参数,但大部分需要把参数送入指定位置。
程序员只要给出这三方面的信息,不必关心程序具体如何执行,在内存中的存放地址如何,DOS就会根据所给的参数信息自动转入相应的子程序去执行并产生相应结果。
下面介绍常用的功能调用。
(1)键盘输入并显示(1号功能调用)
格式:
MOVAH,01H
INT21H
功能:
按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。
如果按下的是Ctrl+Break组合键,则终止程序执行。
1号功能调用无须入口参数,出口参数在AL中。
(2)键盘输入但不显示输入字符(8号功能调用)
格式:
MOVAH,08H
INT21H
功能:
同1号功能调用,但字符不在屏幕上显示。
(3)屏幕显示一个字符(2号功能调用)
格式:
MOVDL,'字符'
MOVAH,02H
INT21H
功能:
将置入DL寄存器中的字符在屏幕上显示输出。
(4)打印输出(5号功能调用)
格式:
MOVDL,'字符'
MOVAH,05H
INT21H
功能:
将置入DL寄存器中的字符送打印机接口,打印输出。
(5)屏幕显示字符串(9号功能调用)
格式:
MOVDX,字符串的偏移地址
MOVAH,09H
INT21H
功能:
在屏幕上显示字符串。
在使用9号功能调用时,应当注意以下问题。
①待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。
②应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。
(6)字符串输入功能调用(0AH号功能调用)
格式:
MOVDX,已定义缓冲区的偏移地址
MOVAH,0AH
INT21H
功能:
从键盘接收字符,并存放到内存缓冲区。
在使用0AH号功能调用时,应当注意以下问题。
①执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符0DH在内,不能为“0”值。
第二个字节保留,在执行程序完毕后存入输入的实际字符个数。
从第三个字节开始存入从键盘上接收字符的ASCII码。
若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他单元自动清0。
若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,且响铃示警,一直到输入回车键为止。
整个缓冲区的长度等于最大字符个数再加2。
②应当将缓冲区首地址的段基址和偏移地址分别存入DS和DX寄存器中。
(7)返回DOS操作系统(4CH号功能调用)
格式:
MOVAH,4CH
INT21H
功能:
终止当前程序的运行,并把控制权交给调用的程序,即返回DOS系统,屏幕出现DOS提示符,如“C:
\>”,等待DOS命令。
除了这几种功能调用,还有其他的,这里就不再一一介绍了。
2总体方案论证
该课程设计的任务是做一个英文字母大小写转换程序,完成对输入数据的大写或者小写转换。
输入部分:
在输入之前,先利用INT21H的9号功能调用输出显示输入字符串提示符'pleaseinputthestring:
'再利用INT21H的8号功能调用输入字符串(在屏幕上并不显示)。
由于键盘输入的并不一定是英文字母,所以要对输入的每一个字符进行判别,如果输入的字符串都是英文字符则进行大小写转换,并将字符串存储到缓冲区,且将字符输出显示到屏幕上;如果输入的字符串中有非英文字符,则产生报警声并返回重新输入数据,直至输入的字符符合要求为止。
转换部分:
由于要求要有两种转换方式,即大写字母转换为小写字母或者由小写字母转换为大写字母,所以要求用户在进行转换前输入提示要转换的方法。
为解决这个问题,先利用INT21H的9号功能调用输出显示转换方法选择提示符‘pleasechoosethetypetooutput(1or2):
’,1为Uppercase,2为Lowercas。
再利用INT21H的8号功能调用输入1或者2(在屏幕上并不显示)。
如果此时输入为1,则进行字符串小写转大写的转换,如果此时输入为2,则进行字符串大写转小写的转换。
输出部分:
先利用INT21H的9号功能调用输出显示输出提示符'theresultis:
',再利用INT21H的9号功能调用输出显示转换后的字符串。
3程序流程图及程序设计分析
3.1主程序设计
3.1.1流程图及其分析
主程序的流程图如图3-1所示.
图3-1主程序流程图
首先在屏幕上输出显示字符串输入提示符,再进行字符串的输入,然后对输入的第一个字符进行判别。
如果该字符不等于0DH,则继续判断该字符是否为英文字符。
如果结果为否则产生报警声并返回重新输入数据,直至输入的字符符合要求为止;如果结果为是则将字符存储到缓冲区,并将字符输出显示到屏幕上。
然后进行下一个字符的判别,直至出现一个字符等于0DH,此时字符串验证完毕,调用子程序chos进行字符串的大小写转换,转换完后结果输出显示到屏幕上,并结束程序。
3.1.2程序设计
程序如下:
start:
movax,data
movds,ax
movah,9;输出显示输入提示符:
‘pleaseinputthestring:
’
leadx,ms1
int21h
movsi,0;源串偏移地址SI置0
again:
movah,8;输入字符串
int21h
cmpal,13;将AL与0DH进行比较,若相等,则转移到CHANGE
jechange
cmpal,41h;将AL与’A’进行比较,若AL小于’A’,则转移到SING
jbsing
cmpal,5bh;将AL与’Z’进行比较,若AL小于等于’Z’,则转移到CHG
jbchg
cmpal,61h;将AL与’a’进行比较,若AL小于’a’,则转移到SING
jbsing
cmpal,7bh;将AL与’z’进行比较,若AL小于等于’z’,则转移到CHG
jbchg
sing:
;输入为非英文字母,发出警报,并重新输入
movah,2
movdl,07h
int21h
jmpagain
chg:
;将英文字母存入缓冲区,并在屏幕中显示
mov[buffer+si],al
movdl,al
movah,2
int21h
incsi
jmpagain
change:
;转换过程
mov[buffer+si],'$'
callchos;调用chos子程序
movah,2
movdl,10;回车
int21h
movdl,13;换行
int21h
movah,9;输出显示输出提示符
leadx,ms2
int21h
movah,9
leadx,buffer;屏幕显示转换结果
int21h
movah,1
int21h
movah,4ch;结束程序
int21h
3.2chos字符串转换子程序设计
3.2.1流程图及其分析
chos字符串转换子程序的流程图如图3-2所示
图3-2chos子程序流程图
首先,应该把断点地址及一些寄存器的值压入堆栈,保护现场。
在屏幕上输出转换方法选择提示符,用户根据需要输入数据1或者2。
若输入的数据为1则调用子程序aa,完成字符串由小写转换为大写;若输入的数据是2则调用子程序ba,完成字符串由大写转换为小写。
转换完了以后,把断点地址及一些寄存器的值弹出堆栈,最后返回主程序。
3.2.2程序设计
程序如下:
chosproc;chos子程序
pushax;AX,DX入栈
pushdx
movah,2
movdl,10;回车
int21h
movdl,13;换行
int21h
movah,9;屏幕显示转换方法选择提示符
leadx,ms3
int21h
re:
movah,8;输入数据1或者2,但不显示
int21h
cmpal,31H;输入为1,程序转移至UP
jeup
cmpal,32H;输入为2,程序转移至LO
jelo
movah,2;输入不为1也不为2时,发出警报,并重新输入数据
movdl,7
int21h
jmpre
up:
callaa;调用子程序aa
jmpout1
lo:
callba;调用子程序ba
out1:
popdx;DX,AX出栈
popax
ret;返回主程序
chosendp
3.3小写转大写子程序设计
3.3.1流程图及其分析
小写转大写子程序的流程图如图3-3所示
图3-3小写转大写子程序aa的流程图
首先,应该把断点地址及AX,CX,DI寄存器压入堆栈,保护现场。
再将SI的值赋给CX,将0赋给DI。
取出BUFFER单元中的字符,并判断该字符是否为大写的英文字母,如果是,则不必进行转换;如果不是,则将小写字母转化为大写字母并替代原来的小写字母。
循环判断其他的字符,直至CX的值为0,结束循环,返回主程序。
3.3.2程序设计
程序如下:
aaproc;子程序aa
pushax;AX,CX,DI入栈
pushcx
pushdi
movcx,si;CX=SI
movdi,0;DI=0
top1:
moval,[buffer+di]
cmpal,61h;将AL与’a’进行比较,若AL小于’a’,则程序转移到NE1
jbne1
subal,20h;小写字母转换为大写字母
mov[buffer+di],al;保存转换后的大写字母
ne1:
incdi;DI增1
looptop1;循环返回TOP1
popdi;AX,CX,DI出栈
popcx
popax
ret;返回
aaendp
3.4大写转小写子程序设计
3.4.1流程图及其分析
大写转小写子程序的流程图如图3-4所示
图3-4大写转小写子程序ba的流程图
首先,应该把断点地址及AX,CX,DI寄存器压入堆栈,保护现场。
再将SI的值赋给CX,将0赋给DI。
取出BUFFER单元中的字符,并判断该字符是否为小写的英文字母,如果是,则不必进行转换;如果不是,则将大写字母转化为小写字母并替代原来的大写字母。
循环判断其他的字符,直至CX的值为0,结束循环,返回主程序。
3.4.2程序设计
程序如下:
baproc;子程序ba
pushax;AX,CX,DI入栈
pushcx
pushdi
movcx,si;CX=SI
movdi,0;DI=0
top:
moval,[buffer+di]
cmpal,5Ah;将AL与’Z’进行比较,若AL大于’Z’,则程序转移到NE
jane
addal,20h;大写字母转换为小写字母
mov[buffer+di],al;保存转换后的小写字母
ne:
incdi;DI增1
looptop;循环返回TOP
popdi;AX,CX,DI出栈
popcx
popax
ret;返回
baendp
4总程序
总程序如下:
datasegment
ms1db'pleaseinputthestring:
',10,13,'$'
ms2db'theresultis:
',10,13,'$'
ms3db'pleasechoosethetypetooutput(1or2):
',10,13
db'1.Uppercase',9,'2.Lowercase$'
bufferdb200dup(0)
dataends
stacksegment
db200dup(?
)
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movah,9
leadx,ms1
int21h
movsi,0
again:
movah,8
int21h
cmpal,13
jechange
cmpal,41h
jbsing
cmpal,5bh
jbchg
cmpal,61h
jbsing
cmpal,7bh
jbchg
sing:
movah,2
movdl,07h
int21h
jmpagain
chg:
mov[buffer+si],al
movdl,al
movah,2
int21h
incsi
jmpagain
change:
mov[buffer+si],'$'
callchos
movah,2
movdl,10
int21h
movdl,13
int21h
movah,9
leadx,ms2
int21h
movah,9
leadx,buffer
int21h
movah,1
int21h
movah,4ch
int21h
;============================
chosproc
pushax
pushdx
movah,2
movdl,10
int21h
movdl,13
int21h
movah,9
leadx,ms3
int21h
re:
movah,8
int21h
cmpal,31H
jeup
cmpal,32H
jelo
movah,2
movdl,7
int21h
jmpre
up:
callaa
jmpout1
lo:
callba
out1:
popdx
popax
ret
chosendp
;===========================
baproc
pushax
pushcx
pushdi
movcx,si
movdi,0
top:
moval,[buffer+di]
cmpal,5Ah
jane
addal,20h
mov[buffer+di],al
ne:
incdi
looptop
popdi
popcx
popax
ret
baendp
;==================================
aaproc
pushax
pushcx
pushdi
movcx,si
movdi,0
top1:
moval,[buffer+di]
cmpal,61h
jbne1
subal,20h
mov[buffer+di],al
ne1:
incdi
looptop1
popdi
popcx
popax
ret
aaendp
codeends
endstart
5课程设计心得体会
经过这几天的微机原理课程设计,我觉得学习像微机原理与接口技术这样实用的知识,不仅要掌握书本上的基本内容,还要灵活思考,善于变换,这样才能找到最优设计,达到事半功倍的效果。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
回顾起此次微机原理课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
在设计中遇到了很多编程问题,但最后经过自己的努力完成了这次课设。
这让我明白了只要有恒心,有耐心,就可以达到自己的目标,完成任务!
参考文献
[1]王萍主编.微机原理应用实践.机械工业出版社,2001.5
[2]钱晓捷主编.新版汇编语言程序设计.电子工业出版社,2007.1
[3]朱定华主编.微机原理与接口技术学习指导.清华大学出版社,2004.7
[4]姚燕南、薛钧义主编.微型计算机原理与接口技术.高等教育出版社,2004.11
[5]何小海、严华主编.微机原理与接口技术.科学出版社,2006.9
[6]徐建民、王东主编.汇编语言程序设计.电子工业出版社,2005.9
[7]周佩玲、彭虎等主编.微机原理与接口技术(基于16位机).电子工业出版社,2007.6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 英文字母 大小写 转换 程序设计