1、1一、题目要求编写程序,接收键盘输入的字符串,将其中大写字母转化为小写字母,并显示转化后的字符串。键盘输入的字符串存于 STRBUF 缓冲区中,最多输入 30 个字符。二、实现原理字符串是由若干个字符构成,而字符在计算机中以 ASCII 码形式存储,因此字符串是一个 ASCII 码序列。小写字符 az的 ASCII 是 61H7AH ,大写字符 AZ的 ASCII是 41H5AH,因此将大写字母转化为小写字母的方法是:大写字母 ASCII 加上 20H。三、实验程序及流程图程序首先调用 0A 号功能,等待用户输入字符串,并存入 STRBUF 中。然后对输入字符逐个检测,若为大写字符,则将其转化
2、为小写字符,否则不变。最后采用循环结构,使用02 号调用,逐个显示字符串中的字符。流程图如图 4.11 所示。51 单片机 C 语言应用开发完全手册2开 始DS:X 输 入 缓 冲 区 首 地 址调 用 21H的 0A号 功 能CX 输 入 字 符 串 长 度SI 2从 字 符 串 中 取 出 一个 字 符字 符 是 大 写 字 母 ?N输 入 字 符 数 为 0?NY字 母 ASCI加 上 20HSI (I)+1CX-1=0?N YCX 输 入 字 符 串 长 度SI 2从 字 符 串 中 取 出 一个 字 符SI (I)+1CX-1=0?N21H的 02号 调 用 ,显 示 字 符Y4CH
3、号 调 用结 束Y图 4.11 程序流程图程序代码如下。DATA SEGMENTSTRBUF DB 30,?,31 DUP (?) ;定义键盘接收缓冲区DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:第 27 章 单片机实现密码锁 3MOV AX,DATAMOV DS,AXLEA DX,STRBUFMOV AH,0AHINT 21H ;0A 号调用,等待用户输入字符串MOV CL,STRBUF+1CMP CL,00JZ EXITPMOV CH,00HMOV SI,2XX1:MOV AL,STRBUFSI ;读取一个字符CMP AL,AJB NEXTCMP AL,ZJA NEXT ;判断是否是大写字符,ASCII 在 41H5AH 之间ADD STRBUFSI,a-A ;大写字母 ASCII 值加 20HNEXT:INC SILOOP XX1MOV DL,0AHMOV AH,02HINT 21H ;控制换行MOV CH,00MOV CL,STRBUF+1MOV SI,2XX2:MOV DL,STRBUFSIMOV AH,02HINT 21HINC SILOOP XX2 ;显示字符串EXITP:MOV AH,4CHINT 21HCODE ENDSEND START