问答题 对A址起的30个字节长的字符串,删除其中的数字符,后续字符向前递补,剩余字符补空格字符。编程实现之。
【正确答案】DATA  SEGMENT
   A  DB  'A23HJL4KJ6IJ7L5L56JKJLJK75KJ2L'
   DATA  ENDS
   CODE  SEGMENT
     ASSUME  CS: CODE,DS: DATA
   START: MOV  AX,DATA
          MOV  DS,AX
          LEA  SI,A
          MOV  DI,SI
          ADD  DI,30
          MOV  CX,30
   LP1:   CMP  BYTE PTR[SI],'0'    ;判断是否为数字符
          JB   NEXT
          CMP  BYTE PTR[SI],'9'
          JA   NEXT    ;不是,转到NEXT
          PUSH SI    ;是,先压入栈;
          PUSH DI
          SUB  DI,SI
          MOV  DX,DI
   LP2:   MOV  AL,[SI+1]
          MOV  [SI],AL
          INC  SI
          DEC  DX
          JNZ  LP2
          POP  DI
          POP  SI
          MOV  BYTE PTR[DI],''
          JMP  A1
   NEXT:  INC  SI
     A1:  LOOP LP1
          MOV  CX,30
          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
【答案解析】