问答题 从STRINq-1单元起有一个字符串,串长在STRIN单元中。另在NUMB单元中有一数N。要求在字符串第N个字符后插入一个字符“?”。若N大于串长则不插入。
【正确答案】DATA  SEGMENT
   STRIN  DB 10
          DB'ABCDEFGHIJ'
   NUMB   DB 5
   DATA  ENDS
   CODE  SEGMENT
     ASSUME CS: CODE,DS: DATA
   START: MOV  AX,DATA
          MOV  DS,AX
          MOV  SI,OFFSET STRIN    ;置字符串首址
          MOV  AL,[SI]    ;把字符串长度送入AL
          CMP  AL,NUMB    ;判断AL是否大于NUMB
          JB   NXT    ;不是,转到NXT
          LEA  DI,STRIN+10   ;置字符串尾指针
          MOV  CL,STRIN
          SUB  CL,NUMB    ;置计数初值
   NEXT:  MOV  AL,[DI]    ;使插入位置后字符向后移动一个位置
          XCHG AL,[DI+1]
          MOV  [DI],AL
          DEC  D1
          DEC  CL
          JNZ  NEXT    ;未完,转NEXT
          INC  DI
          MOV  BYTE PTR[DI],'?'    ;插入'?,
          MOV  STRIN,11
          MOV  CX,11
          LEA  SI,STRIN+1
   NXT:   MOV  DL,[SI]    ;显示字符串
          MOV  AH,02H
          INT  21H
          INC  SI    ;调整指针
          LOOP NXT    ;未完,转到NXT
          MOV  AH,4CH
          INT  21H
   CODE   ENDS
   END    START
【答案解析】