汇编实现大小写字母转换程序
- 格式:doc
- 大小:55.00 KB
- 文档页数:3
实验一字母大小写转换实验实验一字母大小写转换实验一、实验目的:了解各种字符尤其是小写字母和大写字母在计算机内的表示方式,并学习如何进行大小写字母的转换。
同时通过该实验熟悉汇编语言程序调试的过程和基本方法。
二、实验内容已知程序功能如下:接收键盘输入按键,并将按键对应的ASCII码放入AL中,若按下Enter(回车)键则结束输入,显示转换结果,并返回继续等待键盘输入,若按下“CTRL+C”,则程序结束。
要求:为程序填空,实现将输入的小写字母转换为大写字母,除小写字母外的其他字符保持不变的功能。
提示:对AL中的ASCII码进行判断,是回车键则结束输入,否则继续判断是否小写字母,如果是小写字母则转换为大写字母,否则保持不变。
三、实验步骤:1、画出程序流程图2、列出程序清单,并进行注释3、对程序进行上机调试,观察实验结果四、思考如何修改程序,使键盘接收到Enter(回车)键后只显示转换的大写字母,其他的非字母字符不显示,然后返回继续等待键盘输入。
附录:程序DA TA SEGMENTBUF DB 100 DUP(?) ;BUF缓冲区用来保存转换成功的大写字母的ASCII码MESS DB 'please enter your word:',0AH,0DH,'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV BX,OFFSET BUFKKK: MOV SI,0000HLEA DX,MESS ;显示‘PLEASE ENTER YOUR WORD:'提示字符MOV AH,9 ;显示‘PLEASE ENTER YOUR WORD:'提示字符INT 21H ;显示‘PLEASE ENTER YOUR WORD:'提示字符GGG: MOV AH,01H ;从键盘接收一个键的输入,并把得到按键对应字符的ASCII码存入ALINT 21H ;从键盘接收一个键的输入,并把得到按键对应字符的ASCII码存入ALCMP AL,0DHJZ BBBCMP AL,61HJB GGGCMP AL,7AHJA GGGSUB AL, 20HTTT: MOV [BX+SI],ALINC SIJMP GGGBBB: MOV [BX+SI],AL ;BBB程序段负责处理回车键按下的事件MOV AL,0AH ;把转换成功的大写字母显示出来并继续等待下一次输入MOV [BX+SI+1],ALMOV AL,'$'MOV [BX+SI+2],ALMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HMOV AH,09HMOV DX,BXINT 21HJMP KKKPPP: MOV AX,4C00HINT 21HCODE ENDSEND START思考题程序把GGG内的“JA GGG和JB GGG”改为“JA TTT和JB TTT”。
标题:C语言中输入小写字母输出大写字母的程序在C语言中,输入小写字母,输出大写字母是一个非常基础但又非常实用的功能。
在本文中,将从简单的字符处理和ASCII码转换开始,逐步深入探讨如何编写一个高效且稳定的程序来实现这一功能。
1. 字符处理和ASCII码在C语言中,字符是以ASCII码存储和处理的。
ASCII码是一种用于表示文本的编码标准,在这个标准中,每个字符都对应一个唯一的数字。
大写字母和小写字母在ASCII码中是有规律的排列的,大写字母的ASCII码要比小写字母的ASCII码小一个固定的值。
这就为我们实现输入小写字母输出大写字母的功能提供了基础。
2. 简单的小写转大写程序我们可以编写一个简单的程序,实现输入一个小写字母,输出一个对应的大写字母的功能。
以下是一个简单的C语言程序示例:```c#include <stdio.h>int m本人n() {char lowercase, uppercase;printf("请输入一个小写字母:");scanf("c", lowercase);uppercase = lowercase - 32;printf("对应的大写字母是:c\n", uppercase);return 0;}```在这个程序中,我们首先通过`scanf`函数获取用户输入的小写字母,并且通过简单的ASCII码转换,得到对应的大写字母。
这个程序非常简单,但是具有很好的可读性和易懂性。
3. 更加稳健的输入输出程序然而,上面的程序有一个致命的缺陷,就是没有对用户的输入进行任何检查,如果用户输入的不是小写字母,程序可能会出现意料之外的错误。
为了实现更加稳健的输入输出程序,我们需要添加一些用户输入的检查和提示。
```c#include <stdio.h>int m本人n() {char lowercase, uppercase;printf("请输入一个小写字母:");scanf(" c", lowercase); // 注意这里加了一个空格,用于清空输入缓冲区if (lowercase >= 'a' lowercase <= 'z') { // 判断输入是否为小写字母uppercase = lowercase - 32;printf("对应的大写字母是:c\n", uppercase);} else {printf("输入错误!请输入一个小写字母。
北华航天工业学院课程设计报告(论文)设计课题:代码转换大小写字母转换专业班级:电子信息工程学生姓名:指导教师:设计时间: 2010-12-16北华航天工业学院电子工程系微机原理课程设计任务书指导教师:教研室主任:年月日内容摘要在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法是必不可少的。
因此原理部分重新温习并整理了相关知识。
课程设计要求进行大小写字母的转换。
其实字母大小写的区别在于他们的ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。
在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值。
关键词:汇编代码转换大小写目录一、概述 (1)二、方案设计与论证 (1)1.汇编语言基础 (1)2.方案设计 (2)三、程序设计 (3)1.程序设计流程图 (3)2.程序代码 (4)四、运行结果 (5)五、心得体会 (6)六、参考文献 (6)一、概述:在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCll码和七段显示码等。
这些数制和编码根据其作用的不同,在存储形式上也有差异。
在实际应用中,它们也因使用的要求不同而有所差异。
在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。
还有些代码转换需要根据使用要求通过编程完成。
因此,代码转换是非数据处理中最常见的情况。
二、方案设计:1、汇编语言基础汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。
汇编有人工汇编和计算机汇编两种方法。
汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。
汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。
课程设计任务书学生姓名:刘小燕专业班级:电信0801班指导教师:陈德军工作单位:信息工程学院题目:英文字母大小写转换程序设计初始条件:具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、输入英文字母串,在回车后实现大小写转换2、按命令要求将字符串转换为全部大写或全部小写3、非英文字母不允许输入并声响报警4、程序采用汇编语言在PC机上完成5、完成符合学校要求的设计说明书时间安排:一周,其中2天程序设计,2天程序调试,1天完成课程设计报告书及答辩指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)1 DOS功能调用 (1)2总体方案论证 (4)3程序流程图及程序设计分析 (5)3.1主程序设计 (5)3.1.1流程图及其分析 (5)3.1.2程序设计 (6)3.2 chos字符串转换子程序设计 (8)3.2.1流程图及其分析. (8)3.2.2程序设计 (9)3.3小写转大写子程序设计 (11)3.3.1流程图及其分析 (11)3.3.2程序设计 (12)3.4大写转小写子程序设计 (13)3.4.1流程图及其分析 (13)3.4.2程序设计 (14)4 总程序 (15)5 课程设计心得体会 (20)参考文献 (21)摘要汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。
汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。
本次课程设计的任务是用汇编语言做一个英文字母大小写转换程序,按照用户的要求完成对输入数据的大写或者小写转换。
先输入要转换的数据,再对数据进行检验判断其合法性,对不合法的数据进行警报并重新输入数据,对合法的数据按照要求进行大写或者小写转换,最后显示转换后的字符串。
c语言中输入小写字母输出大写字母的程序文章标题:深入理解C语言中输入小写字母输出大写字母的程序一、背景介绍在C语言中,实现输入小写字母输出大写字母的程序是程序员们经常遇到的需求之一。
这一需求不仅在实际编程中频繁出现,而且对于初学者来说,也是一个常见的疑惑点。
本文将深入探讨如何在C语言中实现输入小写字母输出大写字母的程序,并且将会以从简到繁、由浅入深的方式来讨论这一主题。
二、基础知识在C语言中,要实现输入小写字母输出大写字母的程序,首先需要了解两个重要的概念:ASCII码和字符类型。
ASCII码是用来表示字符的一种编码方式,它包含了从0到127的所有基本字符,其中包括大小写字母、数字、标点符号等。
在C语言中,字符类型是一种基本的数据类型,用来表示单个字符。
三、实现方法在C语言中,可以通过两种方式来实现输入小写字母输出大写字母的程序:一种是利用ASCII码进行转换,另一种是使用内置函数进行转换。
1. 利用ASCII码进行转换每个字符在计算机中都有对应的ASCII码,而小写字母和大写字母之间的ASCII码差值恰好为32。
可以通过将输入的小写字母的ASCII码减去32,得到对应的大写字母的ASCII码,然后将其转换为字符输出,即可实现输入小写字母输出大写字母的功能。
2. 使用内置函数进行转换除了利用ASCII码进行转换外,C语言还提供了内置函数toupper(),该函数可以将小写字母转换为大写字母。
只需要将输入的小写字母作为参数传入toupper()函数,即可得到对应的大写字母输出。
四、总结回顾通过对C语言中输入小写字母输出大写字母的程序实现方法的深入探讨,我们可以看到,无论是利用ASCII码进行转换还是使用内置函数进行转换,都能够简单而有效地实现这一功能。
对于初学者来说,掌握这些方法不仅可以提高编程效率,更有助于理解字符类型和ASCII码的概念。
五、个人观点和理解在我看来,掌握C语言中输入小写字母输出大写字母的程序实现方法是每个程序员的基本技能之一。
./*将小写字母转换为大写字母。
例如:C Language,转换为C LANGUAGE。
*/#include <stdio.h>void change(char s[]){int i;for(i=1;i<=20;i++){if(s[i]>='a'&&s[i]<='z')s[i]=s[i]-32;}}main(){ void CHECK();char str[20]="C Language";clrscr();change(str);printf("%s\n",str);CHECK();}./*求出数组arr中的最大数,并把最大数和arr[0]中的数进行交换。
*/#include <stdio.h>#define N 20/***Fill in the blanks***/void swap(int __a[]____,int n){ int k, m, t ;m=0;/***Fill in the blanks***/for(k=0;k<n;_k++_____)if(a[k]>a[m]) m=k;t=a[0];/***Fill in the blanks***/a[0]=_a[m]_____;a[m]=t;}main( ){ int i,n=10,arr[N]={0,5,12,10,23,6,9,7,10,8}; printf("\n交换前:");for(i=0;i<n;i++) printf("%4d",arr[i]);swap(arr,n);printf("\n交换后:");for(i=0;i<n;i++) printf("%4d", arr[i]);printf("\n");}/*计算1 1 1 1 11 - --- + --- - --- + --- - ... ---2 3 4 5 n例如,n=100时,运算结果为:0.688172。
编⼀个程序,输⼊⼀个字符,如果是⼤写字母,就转换成⼩写字母,如果输⼊的字符是⼩写字母,则转换为⼤using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _3字符互转{class Program{static void Main(string[] args){Console.WriteLine("请输⼊⼀个字符:");//输出到命令提⽰符上⾯char c;//定义⼀个字符string s;//定义⼀个字符串while (true)//输⼊正确才退出{s = Console.ReadLine();//⽤s来存储⽤户输⼊的值if (s.Length == 1)//如果⽤户输⼊的字符串的长度是1的话说明⼀定是⼀个字符{c = Convert.ToChar(s);//将s转换会字符if (char.IsLower(c))//判断是不是⼩写字符,如果是的话转换,如果不是的判断是不是⼤写字符{Console.WriteLine("⼤写字符是:");Console.Write(char.ToUpper(c));//⼩写字符转换为⼤写字符break;}else if (char.IsUpper(c)){Console.WriteLine("⼩写字符是:");Console.Write(char.ToLower(c));//⼤写字符转换为⼩写字符break;}}Console.WriteLine("请输⼊⼀个字符");//其他⾮法输出,通通输⼊这条语句}Console.ReadKey();//按任意键退出}}}。
汇编实现⼤⼩写字母转换程序⼀、题⽬要求编写程序,接收键盘输⼊的字符串,将其中⼤写字母转化为⼩写字母,并显⽰转化后的字符串。
键盘输⼊的字符串存于STRBUF缓冲区中,最多输⼊30个字符。
⼆、实现原理字符串是由若⼲个字符构成,⽽字符在计算机中以ASCII码形式存储,因此字符串是⼀个ASCII码序列。
⼩写字符’a’…’z’的ASCII是61H~7AH,⼤写字符A’…’Z’的ASCII是41H~5AH,因此将⼤写字母转化为⼩写字母的⽅法是:⼤写字母ASCII加上20H。
三、实验程序及流程图程序⾸先调⽤0A号功能,等待⽤户输⼊字符串,并存⼊STRBUF中。
然后对输⼊字符逐个检测,若为⼤写字符,则将其转化为⼩写字符,否则不变。
最后采⽤循环结构,使⽤02号调⽤,逐个显⽰字符串中的字符。
流程图如图4.11所⽰。
–1–图4.11 程序流程图程序代码如下。
DATA SEGMENTSTRBUF DB 30,?,31 DUP (?) ;定义键盘接收缓冲区DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:–2–第27章单⽚机实现密码锁MOV AX,DA TAMOV DS,AXLEA DX,STRBUFMOV AH,0AHINT 21H ;0A号调⽤,等待⽤户输⼊字符串MOV CL,STRBUF+1CMP CL,00JZ EXITPMOV CH,00HMOV SI,2XX1:MOV AL,STRBUF[SI] ;读取⼀个字符CMP AL,’A’JB NEXTCMP AL,’Z’JA NEXT ;判断是否是⼤写字符,ASCII在41H~5AH之间ADD STRBUF[SI],’a’-‘A’;⼤写字母ASCII值加20H NEXT:INC SILOOP XX1MOV DL,0AHMOV AH,02HINT 21H ;控制换⾏MOV CH,00MOV CL,STRBUF+1MOV SI,2XX2:MOV DL,STRBUF[SI]MOV AH,02HINT 21HINC SILOOP XX2 ;显⽰字符串EXITP: MOV AH,4CH INT 21H CODE ENDS END START –3–。
代码转换1.基本功能描述这是一个基于计算机和汇编环境的程序,它能够实现基本的大小写字母之间的转换,二进制数和十六进制之间的相互转换以及十六进制数向十进制数的转换。
而且该程序界面友好,能够通过键盘输入选择相应的转换,结果也能够比较直观的显示在我们眼前,具有一定的人机交互性。
2.设计思路2.1 思路一采用顺序结构程序,所有的操作都集中在一个程序中。
首先,利用DOS系统功能调用其09H号功能号,显示提示语句提示用户选择输入字符的类型:“Please choose the type of the character to input:1.Hexadecimal 2.Binary 3.Letter”。
用户通过选择语句选择相应的输入字符类型。
选择语句:MOV AH,01HINT 21HCMP AL,31HJZ LP1CMP AL,32HJZ LP2CMP AL,33HJZ LP3LP1,LP2,LP3分别为十六进制、二进制、字母的转换程序段。
当从键盘输入‘1’时,选择十六进制,并跳转到其程序段,再采用相同的选择方式选择它要转换的类型:1.二进制 2.十进制,再次跳转到相应的程序,完成转换操作。
同理,当输入‘2’、‘3’时,分别完成二转十六和大小写之间的转换。
当输入其他的字符时,会报错并提示重新选择。
当转换操作完成以后,程序会自动跳转到结束语句,结束程序。
结束语句:MOV AH,4CHINT 21H2.2 思路二将转换操作都写成一个个模块,整个程序由若干个模块组成,其中有一个主模块,可以调用模块。
模块二进行大小写字母的互相转换,主要利用小写字母的ASC码比大写字母大20H;模块三实现二进制数向十六进制数的转换,可以利用移位指令来实现;模块四实现十六进制数向二进制数的转换,也可采用移位指令实现;模块五实现十六进制数向十进制数的转换,首先将十六进制数转换成二进制,然后再实现二进制向十进制数的转换。
程序的流程图和思路一大致相同。
c语言ascii码大小写转换要在C语言中实现ASCII码的大小写转换,可以使用以下方法:1. 大写字母的ASCII码范围是65-90,小写字母的ASCII码范围是97-122。
2. 如果一个字符的ASCII码在65-90之间,那么它是大写字母;如果一个字符的ASCII码在97-122之间,那么它是小写字母。
3. 要将一个大写字母转换为小写字母,可以将ASCII码加上32;要将一个小写字母转换为大写字母,可以将ASCII码减去32。
下面是一个C语言的示例代码:```c#include <stdio.h>int main() {char ch;printf("请输入一个字符:");scanf("%c", &ch);if (ch >= 'A' && ch <= 'Z') {ch = ch + 32;printf("转换后的小写字母是:%c", ch);} else if (ch >= 'a' && ch <= 'z') {ch = ch - 32;printf("转换后的大写字母是:%c", ch);} else {printf("输入的不是字母,无法转换。
");}return 0;}```这个程序首先接收用户输入的一个字符,然后判断该字符是否为大写或小写字母。
如果是大写字母,将其转换为小写字母;如果是小写字母,将其转换为大写字母。
如果输入的不是字母,程序会输出提示信息。
在C语言中,将小写字母转换成大写字母可以通过对ASCII码的操作实现。
以下是一个简单的例子:
```c
#include <stdio.h>
int main() {
char lower_case_letter;
// 输入一个小写字母
printf("请输入一个小写字母:");
scanf("%c", &lower_case_letter);
// 将小写字母转换为大写字母
char upper_case_letter = toupper(lower_case_letter);
// 输出大写字母
printf("转换为大写字母后:%c\n", upper_case_letter);
return 0;
}
```
在这个例子中,我们使用了`toupper()`函数将小写字母转换为大写字母。
`toupper()`函数是C 语言中的字符转换函数,它可以将小写字母转换为大写字母。
需要注意的是,`toupper()`函数只适用于英文字母,对于其他字符可能不会有效果。
程序的运行过程如下:
1. 提示用户输入一个小写字母。
2. 使用`scanf()`函数读取用户输入的小写字母。
3. 使用`toupper()`函数将小写字母转换为大写字母。
4. 输出转换后的大写字母。
【汇编程序】从键盘输⼊⼀个⼤写字母,将其转换成⼩写字母程序需求:从键盘上输⼊⼀个⼤写英⽂字母,将其转换成⼩写字母并显⽰出来,要求输⼊其他字符,能够有出错提⽰信息编程思路:⾸先需要先定义⼀个数据段,定义⼀个变量,在汇编中定义字符串只能使⽤db 以$作为结束标志将段地址和偏移地址都赋值,因为要进⾏键盘的输⼊所以程序需要调⽤dos系统 01H的作⽤是接收从键盘上输⼊的⼀个字符,并在屏幕上显⽰,将接收的到值和al 和 A和 Z 进⾏⽐较如果不在这个范围就跳转到mess 否则的话将⼤写字母转换成⼩写字母,⼤写转换成⼩写是加上32,转换成16进制就是加上20H 再次调⽤int 21h,在此之前将02H功能号显⽰单个字符,所以程序执⾏到这⾥,就会显⽰出转换成的⼩写字母。
;从键盘上输⼊⼀个⼤写英⽂字母,将其转换成⼩写字母并显⽰出来,要求输⼊其他字符,能够有出错提⽰信息data segmentmess db:'inpup error!',0ah,0dh,'$';0ah 换⾏ 0dh回车 $汇编中以$做结束标志data endscode segmentassume ds:data,cs:codestart:mov ax,datamov ds,axmov ah,01hint 21hcmp al,'A'jb errcmp al,'z'ja erradd al,20hmov dl,almov ah,02hint 21hjmp exiterr:mov dx,offset messmov ah,09hint 21hexit:mov ah,02hint 21hcode endsend start。
一、概念解释在计算机编程领域,C++语言是一种十分常用的编程语言,它具有灵活性和高效性,被广泛应用于各种软件开发领域。
在实际的编程过程中,经常会遇到需要将小写字母转化为大写字母的情况,这在处理字符串、文本分析等方面都非常常见。
二、转化方法在C++语言中,要实现将小写字母转换为大写字母,有多种方法可以选择。
一种常见的方法是使用标准库中的 toupper 函数,这个函数能够将一个小写字母转化为大写字母。
另外,也可以通过计算ASCII码的方式来实现字母大小写的转化,因为大写字母和小写字母在ASCII 码中是有规律可循的,通过加减特定的数值就可以完成转化。
三、示例代码接下来,我将给出一个C++的示例代码,用来演示如何将小写字母转化为大写字母:```cpp#include <iostream>#include <cctype> // 包含头文件,这个头文件中包含了 toupper函数的声明int main() {char lowercase = 'a'; // 定义一个小写字母char uppercase = toupper(lowercase); // 调用 toupper 函数将小写字母转化为大写字母std::cout << "小写字母 " << lowercase << " 被转化为大写字母 " << uppercase << std::endl; // 输出转化结果return 0;}```通过这个示例代码,可以清楚地看到如何利用 toupper 函数来实现小写字母到大写字母的转化,这也是C++中常见的做法。
四、个人观点在实际的软件开发中,对于字符串的处理和转化是非常常见的需求,而字母大小写的转化就是其中一个常见的问题。
在C++中,通过使用标准库中的 toupper 函数可以很方便地实现这个功能,同时也可以通过其他方法来完成转化。
汇编实战⼀:⼤写字母转换成⼩写形式DATAS SEGMENT;此处输⼊数据段代码str1 db "Please enter a captial letter:"db 0dh,0ah,'$'str2 db "Error Input"db 0dh,0ah,'$'DATAS ENDSSTACKS SEGMENT;此处输⼊堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输⼊代码段代码MOV dx,offset str1MOV ah,9int 21hMOV ah,01int 21hCMP al,41H ;将al与ASCII码为41H的字符⽐较JB exitCMP al,5AH ;将al与ASCII码为5AH的字符⽐较JA exitADD al,32 ;⼤写转⼩写MOV dl,al ;打印语句MOV ah,02int 21hMOV AH,4CH ;结束INT 21Hexit: ;之前⽐较的时候,如果错误,跳转到这个⼊⼝MOV dx,offset str2MOV ah,9int 21hMOV ah,4chint 21hCODES ENDSEND START写完了之后主要感受就是虽然是更接近底层的汇编语⾔,但其实其内容很多还是框架形式的,有点像 java 和 c++ 的⼀些结构框架,直接⽤就⾏,⽐如MOV ah,4ch int 21h 就是代表结束,有点像封装的意思,很多都是⼀⽤就是很⼤块的完整代码,只需要改其中的⼀些参数就可以了。
一、题目要求
编写程序,接收键盘输入的字符串,将其中大写字母转化为小写字母,并显示转化后的字符串。
键盘输入的字符串存于STRBUF缓冲区中,最多输入30个字符。
二、实现原理
字符串是由若干个字符构成,而字符在计算机中以ASCII码形式存储,因此字符串是一个ASCII码序列。
小写字符’a’…’z’的ASCII是61H~7AH,大写字符A’…’Z’的ASCII是41H~5AH,因此将大写字母转化为小写字母的方法是:大写字母ASCII加上20H。
三、实验程序及流程图
程序首先调用0A号功能,等待用户输入字符串,并存入STRBUF中。
然后对输入字符逐个检测,若为大写字符,则将其转化为小写字符,否则不变。
最后采用循环结构,使用02号调用,逐个显示字符串中的字符。
流程图如图4.11所示。
–1–
图4.11 程序流程图
程序代码如下。
DATA SEGMENT
STRBUF DB 30,?,31 DUP (?) ;定义键盘接收缓冲区DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
START:
–2–
第27章单片机实现密码锁MOV AX,DA TA
MOV DS,AX
LEA DX,STRBUF
MOV AH,0AH
INT 21H ;0A号调用,等待用户输入字符串
MOV CL,STRBUF+1
CMP CL,00
JZ EXITP
MOV CH,00H
MOV SI,2
XX1:
MOV AL,STRBUF[SI] ;读取一个字符
CMP AL,’A’
JB NEXT
CMP AL,’Z’
JA NEXT ;判断是否是大写字符,ASCII在41H~5AH之间
ADD STRBUF[SI],’a’-‘A’;大写字母ASCII值加20H
NEXT:
INC SI
LOOP XX1
MOV DL,0AH
MOV AH,02H
INT 21H ;控制换行
MOV CH,00
MOV CL,STRBUF+1
MOV SI,2
XX2:
MOV DL,STRBUF[SI]
MOV AH,02H
INT 21H
INC SI
LOOP XX2 ;显示字符串
EXITP:
MOV AH,4CH
INT 21H
CODE ENDS
END START
–3–。