收藏 分享(赏)

英文字母大小写转换程序设计.doc

上传人:hskm5268 文档编号:6982211 上传时间:2019-04-29 格式:DOC 页数:24 大小:141KB
下载 相关 举报
英文字母大小写转换程序设计.doc_第1页
第1页 / 共24页
英文字母大小写转换程序设计.doc_第2页
第2页 / 共24页
英文字母大小写转换程序设计.doc_第3页
第3页 / 共24页
英文字母大小写转换程序设计.doc_第4页
第4页 / 共24页
英文字母大小写转换程序设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、武汉理工大学微机原理与接口技术课程设计说明书1课 程 设 计 任 务 书学生姓名: 刘小燕 专业班级: 电信 0801 班 指导教师: 陈德军 工作单位: 信息工程学院 题 目:英文字母大小写转换程序设计初始条件:具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉 80X86 的 CPU 结构和指令系统;熟悉相关常用接口电路的设计使用方法。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、输入英文字母串,在回车后实现大小写转换2、按命令要求将字符串转换为全部大写或全部小写3、非英文字母不允许输入并声响报警4、程序采用汇编语言在

2、 PC 机上完成5、完成符合学校要求的设计说明书时间安排:一周,其中 2 天程序设计,2 天程序调试,1 天完成课程设计报告书及答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日武汉理工大学微机原理与接口技术课程设计说明书2目 录摘要 .I1 DOS 功能调用 12 总体方案论证 43 程序流程图及程序设计分析 .53.1 主程序设计 53.1.1 流程图及其分析 .53.1.2 程序设计 .63.2 chos 字符串转换子程序设计 83.2.1 流程图及其分析 .83.2.2 程序设计 .93.3 小写转大写子程序设计 113.3.1 流程图及其分析 .113.3.2 程序

3、设计 .123.4 大写转小写子程序设计 133.4.1 流程图及其分析 .133.4.2 程序设计 .144 总程序 155 课程设计心得体会 20参考文献 .21武汉理工大学微机原理与接口技术课程设计说明书3摘 要汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。本次课程设计的任务是用汇编语言做一个英文字母大小写转换程序,按照用户的要求完成对输入数据的大写或者小写转换。先输入要转换的数据,再对

4、数据进行检验判断其合法性,对不合法的数据进行警报并重新输入数据,对合法的数据按照要求进行大写或者小写转换,最后显示转换后的字符串。关键词:DOS 功能调用 大写英文 小写英文 转换 武汉理工大学微机原理与接口技术课程设计说明书41 DOS 功能调用在进行设计之前,先要弄清楚 INT 21H 软中断的 DOS 功能调用。MS DOS 操作系统为程序设计者提供了可以直接调用的软中断处理程序,每一个中断处理程序完成一个特定的功能操作。依据编程需要选择适当的处理程序,编程者不需再重新编写程序,而是使用 INT n 软中断指令。每执行一种不同类型码 n 的软中断指令,就执行一个中断处理程序,其主要功能如

5、下。 磁盘的读/写控制。 内存管理、文件操作和目录管理。 基本输入/输出(对键盘、打印机和显示器等)控制,另外还有日期、时间管理等。当类型码 n05H1FH 时,调用 BIOS 的中断处理程序;类型码 n20H 3FH 时,调用 DOS 的中断处理程序,这次课程设计使用的是 DOS 中断处理程序。INT 21H 软中断是一个具有几十种功能的大型中断服务程序,给这些子功能程序分别予以编号,称为功能号。每个功能程序完成一种特定的操作和处理。对 INT 21H 软中断指令对应的功能子程序的调用称为 DOS 系统功能调用。调用系统功能子程序时,不必了解所使用设备的物理特性、接口方式及内存分配等,也不必

6、编写繁琐的控制程序,这样给应用者带来了很大的方便。应用 INT 21H 系统功能调用的方法如下。 入口参数送指定的寄存器或内存。 功能号送 AH 中。 执行 INT 21H 软中断指令。 有的子功能程序不需要入口参数,但大部分需要把参数送入指定位置。程序员只要给出这三方面的信息,不必关心程序具体如何执行,在内存中的存放地址如何,DOS 就会根据所给的参数信息自动转入相应的子程序去执行并产生相应结果。下面介绍常用的功能调用。(1) 键盘输入并显示( 1 号功能调用) 格式: MOV AH, 01HINT 21H功能:按下任何键,将其对应字符的 ASCII 码送入 AL 中,并在屏幕上显示该字符。

7、武汉理工大学微机原理与接口技术课程设计说明书5如果按下的是 CtrlBreak 组合键,则终止程序执行。1 号功能调用无须入口参数,出口参数在 AL 中。 (2) 键盘输入但不显示输入字符(8 号功能调用) 格式: MOV AH, 08HINT 21H功能:同 1 号功能调用,但字符不在屏幕上显示。 (3) 屏幕显示一个字符( 2 号功能调用) 格式: MOV DL, 字符MOV AH, 02HINT 21H功能:将置入 DL 寄存器中的字符在屏幕上显示输出。 (4) 打印输出( 5 号功能调用) 格式: MOV DL, 字符MOV AH, 05HINT 21H功能:将置入 DL 寄存器中的字

8、符送打印机接口,打印输出。 (5) 屏幕显示字符串( 9 号功能调用) 格式: MOV DX, 字符串的偏移地址 MOV AH, 09HINT 21H功能:在屏幕上显示字符串。 在使用 9 号功能调用时,应当注意以下问题。 待显示的字符串必须先放在内存一数据区(DS 段)中,且以$符号作为结束标志。 应当将字符串首地址的段基址和偏移地址分别存入 DS 和 DX 寄存器中。 (6) 字符串输入功能调用(0AH 号功能调用) 格式: MOV DX, 已定义缓冲区的偏移地址 MOV AH, 0AHINT 21H功能:从键盘接收字符,并存放到内存缓冲区。武汉理工大学微机原理与接口技术课程设计说明书6在

9、使用 0AH 号功能调用时,应当注意以下问题。 执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符 0DH 在内,不能为“0”值。第二个字节保留,在执行程序完毕后存入输入的实际字符个数。从第三个字节开始存入从键盘上接收字符的 ASCII 码。若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他单元自动清 0。若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,且响铃示警,一直到输入回车键为止。整个缓冲区的长度等于最大字符个数再加 2。 应当将缓冲区首地址的段基址和偏移地址分别存入 DS 和 DX 寄存器中。 (7) 返回 DOS 操

10、作系统(4CH 号功能调用) 格式: MOV AH, 4CHINT 21H功能:终止当前程序的运行,并把控制权交给调用的程序,即返回 DOS 系统,屏幕出现 DOS 提示符,如“C: ” ,等待 DOS 命令。 除了这几种功能调用,还有其他的,这里就不再一一介绍了。武汉理工大学微机原理与接口技术课程设计说明书72 总体方案论证该课程设计的任务是做一个英文字母大小写转换程序,完成对输入数据的大写或者小写转换。输入部分:在输入之前,先利用 INT 21H 的 9 号功能调用输出显示输入字符串提示符please input the string:再利用 INT 21H 的 8 号功能调用输入字符串(

11、在屏幕上并不显示)。由于键盘输入的并不一定是英文字母,所以要对输入的每一个字符进行判别,如果输入的字符串都是英文字符则进行大小写转换,并将字符串存储到缓冲区,且将字符输出显示到屏幕上;如果输入的字符串中有非英文字符,则产生报警声并返回重新输入数据,直至输入的字符符合要求为止。转换部分:由于要求要有两种转换方式,即大写字母转换为小写字母或者由小写字母转换为大写字母,所以要求用户在进行转换前输入提示要转换的方法。为解决这个问题,先利用INT 21H的9号功能调用输出显示转换方法选择提示符please choose the type to output(1or2): ,1为Uppercase,2为L

12、owercas。再利用INT 21H的8号功能调用输入1或者2(在屏幕上并不显示) 。如果此时输入为1,则进行字符串小写转大写的转换,如果此时输入为2,则进行字符串大写转小写的转换。输出部分:先利用INT 21H的9号功能调用输出显示输出提示符 the result is:,再利用INT 21H的9号功能调用输出显示转换后的字符串。武汉理工大学微机原理与接口技术课程设计说明书83 程序流程图及程序设计分析3.1 主程序设计3.1.1 流程图及其分析主程序的流程图如图 3-1 所示.图 3-1 主程序流程图开始字符存储到 BUFFER 中发出警报声字符输出输入字符串输出字符串输入提示符结束判断字

13、符中是否为回车?N判断字符是否为az 或者 AZ?调用子程序 chos 完成字符大小写转换SI 增 1转换结果输出换行输出输出结果提示符0 赋值给 SI 寄存器YYN武汉理工大学微机原理与接口技术课程设计说明书9首先在屏幕上输出显示字符串输入提示符,再进行字符串的输入,然后对输入的第一个字符进行判别。如果该字符不等于 0DH,则继续判断该字符是否为英文字符。如果结果为否则产生报警声并返回重新输入数据,直至输入的字符符合要求为止;如果结果为是则将字符存储到缓冲区,并将字符输出显示到屏幕上。然后进行下一个字符的判别,直至出现一个字符等于 0DH,此时字符串验证完毕,调用子程序 chos 进行字符串

14、的大小写转换,转换完后结果输出显示到屏幕上,并结束程序。3.1.2 程序设计程序如下:start:mov ax,datamov ds,axmov ah,9 ;输出显示输入提示符:please input the string:lea dx,ms1int 21hmov si,0 ;源串偏移地址SI置0again: mov ah,8 ;输入字符串int 21hcmp al,13 ;将AL 与0DH进行比较,若相等,则转移到CHANGEje changecmp al,41h ;将AL 与A进行比较,若AL小于A,则转移到SINGjb singcmp al,5bh ;将AL 与Z进行比较,若AL小于等

15、于Z,则转移到CHGjb chgcmp al,61h ;将AL 与a 进行比较,若AL小于a,则转移到SINGjb singcmp al,7bh ;将AL 与z 进行比较,若AL小于等于z,则转移到CHGjb chgsing: ;输入为非英文字母,发出警报,并重新输入武汉理工大学微机原理与接口技术课程设计说明书10mov ah,2mov dl,07hint 21hjmp againchg: ;将英文字母存入缓冲区,并在屏幕中显示 mov buffer+si,almov dl,almov ah,2int 21hinc sijmp againchange: ;转换过程mov buffer+si,$

16、call chos ;调用chos子程序mov ah,2mov dl,10 ;回车int 21hmov dl,13 ;换行int 21h mov ah,9 ;输出显示输出提示符lea dx,ms2int 21hmov ah,9lea dx,buffer ;屏幕显示转换结果int 21hmov ah,1int 21hmov ah,4ch ;结束程序int 21h 武汉理工大学微机原理与接口技术课程设计说明书113.2 chos 字符串转换子程序设计3.2.1 流程图及其分析chos 字符串转换子程序的流程图如图 3-2 所示图 3-2 chos 子程序流程图开始输入字符将 AX,DX 存入堆栈返

17、回判断字符是否为 1?判断字符是否为 2调用子程序 aa,完成字符由小写转为大写DX,AX 内容出栈换行输出转换方法选择提示符:1 为转换为大写,2 为转换为小写调用子程序 ba,完成字符由大写转为小写YNNY武汉理工大学微机原理与接口技术课程设计说明书12首先,应该把断点地址及一些寄存器的值压入堆栈,保护现场。在屏幕上输出转换方法选择提示符,用户根据需要输入数据1或者2。若输入的数据为1则调用子程序aa,完成字符串由小写转换为大写;若输入的数据是2则调用子程序ba,完成字符串由大写转换为小写。转换完了以后,把断点地址及一些寄存器的值弹出堆栈,最后返回主程序。3.2.2 程序设计程序如下:ch

18、os proc ;chos子程序push ax ;AX,DX入栈push dxmov ah,2mov dl,10 ;回车int 21hmov dl,13 ;换行int 21h mov ah,9 ;屏幕显示转换方法选择提示符lea dx,ms3int 21hre:mov ah,8 ;输入数据1或者2,但不显示int 21h cmp al,31H ;输入为1,程序转移至UPje upcmp al,32H ;输入为2,程序转移至LOje lomov ah,2 ;输入不为1也不为2时,发出警报,并重新输入数据mov dl,7 int 21hjmp reup:武汉理工大学微机原理与接口技术课程设计说明书

19、13call aa ;调用子程序aajmp out1lo:call ba ;调用子程序baout1:pop dx ;DX,AX出栈pop axret ;返回主程序chos endp武汉理工大学微机原理与接口技术课程设计说明书143.3 小写转大写子程序设计3.3.1 流程图及其分析小写转大写子程序的流程图如图 3-3 所示图 3-3 小写转大写子程序 aa 的流程图开始将 SI 的值赋给 CX,将 0 赋给 DI将 AX,CX,DI 存入堆栈返回判断字符是否为为大写?DI 的值增 1将字符转化为大写,并存储取代原来的字符取 BUFFER 中的字符CX 的值减 1判断 CX 是否为 0?YAX,

20、CX,DI 出栈YNN武汉理工大学微机原理与接口技术课程设计说明书15首先,应该把断点地址及 AX,CX,DI 寄存器压入堆栈,保护现场。再将 SI 的值赋给 CX,将 0 赋给 DI。取出 BUFFER 单元中的字符,并判断该字符是否为大写的英文字母,如果是,则不必进行转换;如果不是,则将小写字母转化为大写字母并替代原来的小写字母。循环判断其他的字符,直至 CX 的值为 0,结束循环,返回主程序。3.3.2 程序设计程序如下:aa proc ;子程序aapush ax ;AX,CX,DI 入栈push cxpush di mov cx,si ;CX=SImov di,0 ;DI=0top1:

21、mov al,buffer+di cmp al,61h ;将AL 与a 进行比较,若AL小于a,则程序转移到NE1jb ne1sub al,20h ;小写字母转换为大写字母mov buffer+di,al ;保存转换后的大写字母ne1:inc di ;DI增1loop top1 ;循环返回TOP1pop di ;AX,CX,DI出栈pop cxpop axret ;返回aa endp武汉理工大学微机原理与接口技术课程设计说明书163.4 大写转小写子程序设计3.4.1 流程图及其分析大写转小写子程序的流程图如图 3-4 所示图 3-4 大写转小写子程序 ba 的流程图开始将 SI 的值赋给 C

22、X,将 0 赋给 DI将 AX,CX,DI 存入堆栈返回判断字符是否为为小写?DI 的值增 1将字符转化为小写,并存储取代原来的字符取 BUFFER 中的字符CX 的值减 1判断 CX 是否为 0?NAX,CX,DI 出栈YNY武汉理工大学微机原理与接口技术课程设计说明书17首先,应该把断点地址及 AX,CX,DI 寄存器压入堆栈,保护现场。再将 SI 的值赋给 CX,将 0 赋给 DI。取出 BUFFER 单元中的字符,并判断该字符是否为小写的英文字母,如果是,则不必进行转换;如果不是,则将大写字母转化为小写字母并替代原来的大写字母。循环判断其他的字符,直至 CX 的值为 0,结束循环,返回

23、主程序。3.4.2 程序设计程序如下:ba proc ;子程序bapush ax ;AX,CX,DI 入栈push cxpush di mov cx,si ;CX=SImov di,0 ;DI=0top:mov al,buffer+dicmp al,5Ah ;将AL与Z进行比较,若 AL大于Z, 则程序转移到NEja neadd al,20h ;大写字母转换为小写字母mov buffer+di,al ;保存转换后的小写字母ne:inc di ;DI增1loop top ;循环返回TOPpop di ;AX,CX,DI出栈pop cxpop axret ;返回ba endp武汉理工大学微机原理与

24、接口技术课程设计说明书184 总程序总程序如下:data segmentms1 db please input the string:,10,13,$ms2 db the result is:,10,13,$ms3 db please choose the type to output(1or2):,10,13db 1.Uppercase,9,2.Lowercase$buffer db 200 dup (0)data endsstack segmentdb 200 dup (?)stack endscode segmentassume cs:code,ds:data,ss:stackstart

25、:mov ax,datamov ds,axmov ah,9lea dx,ms1int 21hmov si,0 again: mov ah,8int 21hcmp al,13je changecmp al,41hjb singcmp al,5bh武汉理工大学微机原理与接口技术课程设计说明书19jb chgcmp al,61hjb singcmp al,7bhjb chgsing:mov ah,2mov dl,07hint 21hjmp againchg:mov buffer+si,almov dl,almov ah,2int 21hinc sijmp againchange:mov buffer

26、+si,$call chosmov ah,2mov dl,10int 21hmov dl,13int 21hmov ah,9lea dx,ms2int 21hmov ah,9武汉理工大学微机原理与接口技术课程设计说明书20lea dx,bufferint 21hmov ah,1int 21hmov ah,4chint 21h ;= chos procpush axpush dxmov ah,2mov dl,10int 21hmov dl,13int 21hmov ah,9lea dx,ms3int 21hre:mov ah,8int 21hcmp al,31Hje upcmp al,32Hje

27、 lomov ah,2mov dl,7int 21hjmp re武汉理工大学微机原理与接口技术课程设计说明书21up:call aajmp out1lo:call baout1:pop dxpop axretchos endp;= ba procpush axpush cxpush di mov cx,simov di,0top:mov al,buffer+dicmp al,5Ahja neadd al,20hmov buffer+di,al ne:inc diloop toppop dipop cxpop ax武汉理工大学微机原理与接口技术课程设计说明书22retba endp;=aa pr

28、ocpush axpush cxpush di mov cx,simov di,0top1:mov al,buffer+dicmp al,61hjb ne1sub al,20hmov buffer+di,al ne1:inc diloop top1pop dipop cxpop axretaa endpcode endsend start武汉理工大学微机原理与接口技术课程设计说明书235 课程设计心得体会经过这几天的微机原理课程设计,我觉得学习像微机原理与接口技术这样实用的知识,不仅要掌握书本上的基本内容,还要灵活思考,善于变换,这样才能找到最优设计,达到事半功倍的效果。课程设计是培养学生综合

29、运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。回顾起此次微机原理课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知

30、识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在设计中遇到了很多编程问题,但最后经过自己的努力完成了这次课设。这让我明白了只要有恒心,有耐心,就可以达到自己的目标,完成任务!武汉理工大学微机原理与接口技术课程设计说明书24参考文献1 王萍主编 . 微机原理应用实践. 机械工业出版社,2001.52 钱晓捷主编 . 新版汇编语言程序设计. 电子工业出版社,2007.13 朱定华主编 . 微机原理与接口技术学习指导. 清华大学出版社,2004.74 姚燕南、薛钧义主编 . 微型计算机原理与接口技术. 高等教育出版社,2004.115 何小海、严华 主编. 微机原理与接口技术. 科学出版社,2006.96 徐建民、王东主编 . 汇编语言程序设计. 电子工业出版社,2005.97 周佩玲、彭虎等主编. 微机原理与接口技术(基于 16 位机). 电子工业出版社,2007.6

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报