汇编语言,从键盘输入20个无符号数十进制数,求和并输出

和不大于65535

        CODE  SEGMENT
              ASSUME    CS:CODE
         SUM  DW        0
              
      START:  PUSH      CS
              POP       DS
              PUSH      CS
              POP       ES
              CALL      INPUTNUM
              CALL      LFCR
              LEA       SI,ARRAY
              MOV       CX,NUM
              CLD
         @0:
              LODSW
              ADD       SUM,AX
              LOOP      @0
              
              MOV       AX,SUM
              CALL      DSPAX
              
              MOV       AH,4CH
              INT       21H
;=========================================
        LFCR  PROC      NEAR
              PUSH      AX
              PUSH      DX
              MOV       AH,2
              MOV       DL,13
              INT       21H
              MOV       DL,10
              INT       21H
              POP       DX
              POP       AX
              RET
        LFCR  ENDP

;===============================================
;  键盘输入数值数组子程序(数组名为array,元素个数存放在num中)
    INPUTNUM  PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              PUSH      SI
              PUSH      DI
              PUSH      BP
              PUSHF
    ; 输入的数据以一个空格分隔,以回车符结束输入
              LEA       DI,CS:ARRAY
              MOV       WORD PTR CS:NUM,0
       STIN:
              MOV       AX,0
              PUSH      AX
     AGAIN1:
              MOV       AH,0CH
              MOV       AL,1
              INT       21H
              MOV       BYTE PTR CS:CHAR,AL
              CMP       AL,13
              JE        LINE0
              CMP       AL,' '
              JE        LINE0
              SUB       AL,30H
              MOV       AH,0
              MOV       SI,AX
              POP       AX
              MOV       CL,10
              MOV       CH,0
              MUL       CX
              ADD       AX,SI
              PUSH      AX
              JMP       AGAIN1
      LINE0:
              POP       AX
              MOV       WORD PTR CS:[DI],AX
              INC       WORD PTR CS:NUM
              CMP       BYTE PTR CS:CHAR,13
              JE        STINEND
              INC       DI
              INC       DI
              JMP       STIN
    STINEND:
              POPF
              POP       BP
              POP       DI
              POP       SI
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
       ARRAY  DW        200 DUP(0)
         NUM  DW        0
        CHAR  DB        ?
    INPUTNUM  ENDP
;======================================
      DSPAXS  PROC      NEAR
              PUSH      AX
              TEST      AX,8000H
              JNS       @DSPAXS1
              PUSH      AX
              PUSH      DX
              MOV       AH,2
              MOV       DL,'-'
              INT       21H
              POP       DX
              POP       AX
              NEG       AX
   @DSPAXS1:
              CALL      DSPAX
              POP       AX
              RET
      DSPAXS  ENDP
;==================================
       DSPAX  PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              PUSHF
              XOR       CX,CX
              MOV       BX,10
    @DSPAX1:
              XOR       DX,DX
              DIV       BX
              INC       CX
              OR        DX,30H
              PUSH      DX
              CMP       AX,0
              JNE       @DSPAX1
              MOV       AH,2
   @DISPAX2:
              POP       DX
              INT       21H
              LOOP      @DISPAX2
              MOV       DL,32
              INT       21H
              POPF
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
       DSPAX  ENDP
;==================================
        CODE  ENDS
              END       START

温馨提示:答案为网友推荐,仅供参考
相似回答