问答题 从STRIN单元开始有一个字符不同的字符串,串长50字节。要求将CHRT单元中的字符与字符串中字符进行比较,若字符中不含有该字符,则置MARK单元为0;若该字符包含在字符串中则置MARK单元为0FFH,并将该字符从字符串中删除,被删除字符后面的所有字符依次向前递补,串长减1。
【正确答案】DATA  SEGMENT
   STRIN  DB 5DUP('ABCDEFGHIJ')
   CHRT  DB'A'
   MARK  DB OFFH
   DATA  ENDS
   CODE SEGMENT
     ASSUME CS: CODE,DS: DATA
   START: MOV  AX,DATA
          MOV  DS,AX
          LEA  SI,STRIN
          MOV  DI,SI
          ADD  DI,49
          MOV  CX,50
          MOV  BX,50
   LP1:   CMP  AL,[SI]
          CMP  AL,CHRT
          JNZ  NEXT
          PUSH SI
          PUSH D1
          SUB  DI,SI
          MOV  DX,DI
   LP2:   MOV  AL,[SI+1]
          MOV  [SI],AL
          INC  SI
          DEC  DX
          JNZ  LP2
          POP  DI
          DEC  D1
          DEC  BX
          POP  SI
          JMP  A1
   NEXT:  INC  SI
   A1:    LOOP LP1
          MOV  CX,BX
          LEA  SI,STRIN
   NXT:   MOV  DL,[SI]
          MOV  AH,02H
          INT  21H
          INC  SI
          DEC  CI,
          JNZ  NXT
          MOV  AH,4CH
          INT  21H
   CODE   ENDS
   END    START
【答案解析】