问答题 有一个50个字符的串,试把其中小写字母改为大写字母,把数字符均改为‘*’,其他字符不变。
【正确答案】DATA  SEGMENT
     A  DB  'AHN23VHH11HGSllHU169'
   DATA  ENDS
   CODE  SEGMENT
     ASSUME  CS:CODE,DS:DATA
   START: MOV  AX,DATA
          MOV  DS,AX
          LEA  SI,A
          MOV  CX,50
   LOP:   MOV  AL,[SI]
          CMP  AL,'a'    ;比较AL与'a'
          JB   A1   ;小于'a',转到A1处,看是否是数字
          CMP  AL,'z'    ;比较AL与'z'
          JA   NEXT    ;大于'z'转到NEXT处
          SUB  AL,20H    ;是小写字母,则减20H变为大写字母
          MOV  [SI],AL
          JMP  NEXT
   A1:    CMP  AL,'0'    ;判断是否为数字
   JB     NEXT
          CMP  AL,'9'
          JA   NEXT
          MOV  AL,'*'    ;是数字,把数字改为'*'
          MOV  [SI],AL
   NEXT:  INC  SI
          LOOP LOP
          MOV  CX,50
          LEA  SI,A    ;显示改变后的字符串
   NXT:   MOV  DL,[SI]
          MOV  AH,02H
          INT  21H
          INC  SI
          LOOP NXT
          MOV  AH,4CH
          INT  21H
   CODE ENDS
   END START
【答案解析】