汇编 数组求和

汇编 数组求和,第1张

这是个1位档团陆数运算,2位以上运算或陆你给的分真不行顷够我忙活的

data segment

num1 db '1','2','3','4','5','6','7','8','9','1'

num2 db '8','1','6','5','4','3','2','1','0','8'

sum db 10 dup(?)

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov cx,10

mov si,0

next:

push cx

mov bx,offset num1

mov dl,[bx+si]

mov ah,02h

int 21h

mov dl,'+'

mov ah,02h

int 21h

mov bx,offset num2

mov dl,[bx+si]

mov ah,02h

int 21h

mov dl,'='

mov ah,02h

int 21h

mov bx,offset num1

mov dl,[bx+si]

mov bx,offset num2

add dl,[bx+si]

sub dl,30h

mov bx,offset sum

mov [sum+si],bl

mov ah,02h

int 21h

inc si

mov ah,02h

mov dl,0ah

int 21h

mov ah,02h

mov dl,0dh

int 21h

pop cx

loop next

mov ah,4ch

int 21h

code ends

end start

DATA1 SEGMENTNUM1 DB ?NUM2 DB ?SUMDB ?DATA1 ENDSCOSEG SEGMENT ASSUME CS:COSEG,DS:DATA1START: MOV AX,DATA1 MOV DS,AX MOV AH,01H 调用睁谨码一号键输悉哪入功能,输出参量保持在AL中. INT 21H MOV BL,AL MOV AH,01H 调用一号键输入功能,输出参量保持在AL中. INT 21H MOV NUM1,BL 为了方便查看数据段结果,晌老将输入的第一个数保存在NUM1中 MOV NUM2,AL 将输入的第2个数保存在NUM2中 ADD BL,AL MOV SUM,BL 将结果保存在SUM中MOV AH,4CH INT 21HCOSEG ENDS END START

        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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12238390.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存