2. 已知字符串STRING以'$'为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。
DATA SEGMENT
STRING DB 'AQWERTZasdfgz',0AH,0DH,'$'
NUM EQU $-STRING ;取字符串长度
COUNT DB 0 ;开始统计为0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
LEA BX, STRING ;获取字符串首地址
MOV CX, NUM
LEA DX, STRING ;输出开始字符串
MOV AH, 09H
INT 21H
X1:MOV AL, [BX] ;遍历字符串的每一个字符
CMP AL, 61H ;在61H-7AH则为小写字母
JL X2
CMP AL, 7AH
JG X2
SUB AL, 20H ;减20H变大写字母
MOV [BX],AL
ADD COUNT, 1 ;统计加一
X2:ADD BX, 1 ;指针加一
LOOP X1
LEA DX, STRING ;输出转化后的字符串
MOV AH, 09H
INT 21H
MOV AH, 4CH ;退出程序,返回DOS
INT 21H
CODE ENDS
END START