问答题 在ARRAY址起有20个有符号数。试编程将其正数存于A起的单元中。负数存于B起的单元中。且显示正数及负数的个数。
【正确答案】DATA  SEGMENT
   ARRAY  DB  12H,89H,98H,34H……
     A    DB  20 DUP(?)
     B    DB  20 DUP(?)
     N1   DB  0
     N2   DB  0
   DATA  ENDS
   CODE  SEGMENT
     ASSUME  CS:CODE,DS:DATA
   START: MOV  AX,DATA
          MOV  DS,AX
          MOV  BX,OFFSET ARRAY
          LEA  SI,A
          LEA  DI,B
          MOV  CX,20
   NEXT:  MOV  AL,[BX]
          AND  AL,80H
          JNS  A1   ;是正数,转到A1
          INC  N2   ;是负数,负数个数加1
          MOV  [DI],AL    ;负数存于B处
          INC  DI
          JMP  LOP
   A1:    MOV  [SI],AL    ;正数存于A处
          INC  SI
          INC  N1
   LOP:   INC  BX
          LOOP NEXT
          MOV  AL,N1   ;显示正数的个数
          CALL ABC
          MOV  DL,OAH    ;回车
          MOV  AH,02H
          INT  21H
          MOV  DL,0DH
          INT  21H
          MOV  AL,N2   ;显示负数的个数
          CALL ABC
          MOV  AH,4CH
          INT  21H
          ABC  PROC
               CBW
               MOV  BL,10
               DIV  BL
               MOV  DH,AH
               MOV  DL,AL
               ADD  DL,30H
               MOV  AH,02H
               INT  21H
               MOV  DL,DH
               ADD  DL,30H
               INT  21H
               RET
   ABC    ENDP
   CODE   ENDS
   END START
【答案解析】