微机原理字符串大写转小写,并统计大写字符个数

题目:已知字符串STRING以‘$’为结束标志;统计其中大写字母的个数,结果送到COUNT单元,并把该字符串中的大写字母变成小写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。

应掌握:1:字符串长度的获取以及循环次数的设置,2:指令指针寄存器的使用,3:比较指令以及条件转移指令,4:大写字母转小写字母就是加上20H。

代码:

DATA SEGMENT

STRING DB 'aJHCjxgfGFAHBVgafbGF $'

NEW_STR DB 40 DUP('$')

COUNT DB 0

NUM EQU $-STRING ;获取STRING中的字符个数

CRLF DB 0DH,0AH,'$' ;换行

DATA ENDS

CODE SEGMENT ;定义代码段

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX ;设置DS

LEA DI,NEW_STR ;将新字符串首地址送到DI

LEA SI,STRING-1 ;将原字符串首地址减一后送到SI

MOV CX,0

MOV CX,NUM ;设置循环次数

NEXT:

INC SI ;移动指针

MOV AL,[SI] ;将原字符串第一个元素送到AL

CMP AL,'$' ;AL与$比较

JZ OVER ;若AL内容为$,则显示字符串,结束程序

CMP AL,'A' ;将AL内容和A比较

JB NEXT1 ;若AL内容比A小,则AL不是大写字母,跳到NEXT1

CMP AL,'Z' ;将AL内容和Z比较

JA NEXT1 ;若AL内容比Z大,则AL不是大写字母,跳到NEXT1

ADD AL,20H ;将AL中的大写字母加上20H后转成小写字母

INC COUNT ;COUNT单元加一

NEXT1:

MOV [DI],AL ;AL内容不是大写字母,将其送到新字符串中

INC DI ;移动新串指针

LOOP NEXT ;循环NEXT

OVER:

LEA DX,STRING ;在屏幕上显示旧字符串

MOV AH,09H

INT 21H

LEA DX,CRLF ;换行

MOV AH,09H

INT 21H

LEA DX,NEW_STR ;在屏幕上显示新字符串

MOV AH,09H

INT 21H

MOV AH,09H ;返回DOS

INT 21H

CODE ENDS

END START

运行结果:

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值