DATAS SEGMENT

    A db 100 dup(?);第一个数

    B db 100 dup(?) ;第二个数

    count db ?;记录最大位数

    temp db ?;进位标志位

    len1 db 0;记录A的位数

    len2 db 0;B的位数

DATAS ENDS

CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS,SS:DATAS

START:

    MOV AX,DATAS

    MOV DS,AX

    mov es,ax

    xor ax,ax

in1:   ;A数组的输入

    mov ah,1

    int 21h

    sub al,'0'

    cmp al,0;判定输入的字符是否是0-9

    jl @F

    cmp al,9

    jg @F

    push ax

    inc len1

    jmp in1

@@:

    mov dl,10

    mov ah,2

    int 21h

    mov dl,13

    mov ah,2

    int 21h

    lea di,A

    mov cl,len1

@@:  ;将数组A倒置

    pop ax

    mov [di],al

    inc di

    loop @B

    xor ax,ax

in2:   ;输入B数组

    mov ah,1

    int 21h

    sub al,'0' ;判定输入的字符是否是0-9

    cmp al,0

    jl @F

    cmp al,9

    jg @F

    push ax

    inc len2

    jmp in2

@@:

    mov dl,10

    mov ah,2

    int 21h

    mov dl,13

    mov ah,2

    int 21h

    lea si,B

    mov cl,len2

@@:    ;将数组A倒置

    pop ax

    mov [si],al

    inc si

    loop @B

    mov bl,len1

    mov al,len2

    mov count,bl  ;比较出最大位数,并将位数小的数组在高位补0,直到位数相等

    cmp bl,al

    jz sa

    jg xy

    mov count,al

    sub al,bl

    mov cl,al

@@:

    mov [di],0

    inc di

    loop @B

    jmp sa

xy:

    sub bl,al

    mov cl,bl

@@:

    mov [si],0

    inc si

    loop @B

sa:

    mov cl,count

    lea di,A

    lea si,B

    mov temp,0;设置进位标志

    clc

fg:   ;2个数组add

    mov bl,[si]

    cmp temp,1

    clc

    jnz p3

    stc

p3:

    mov temp,0

    adc bl,[di]

    cmp bl,10

    jl p2

    sub bl,10

    mov temp,1

p2:

    push bx

    inc di

    inc si

    loop fg

    cmp temp,1

    jnz p1

    mov bl,1 ;最高位有进位,加1位并置1

    push bx

    inc count

p1:

    mov cl,0

@@:  ;清除前面多余的0

    pop ax

    inc cl

    cmp cl,count

    jz @F

    cmp al,0

    jz @B

@@:

    push ax

    dec cl

    sub count,cl

    mov cl,count

@@:  ;结果输出

    pop dx

    add dl,'0'

    mov ah,2

    int 21h

    loop @B

    MOV AH,4CH

    INT 21H

CODES ENDS

END START
View Code

相关文章:

  • 2021-07-12
  • 1970-01-01
  • 2021-11-08
  • 2021-06-11
  • 2021-08-30
  • 2021-05-21
  • 2022-02-26
猜你喜欢
  • 2022-01-16
  • 2021-08-04
  • 2022-12-23
  • 2021-08-15
  • 2022-01-21
  • 2022-12-23
相关资源
相似解决方案