汇编语言:两数求和

来源:互联网 发布:软件流程图实例 编辑:程序博客网 时间:2024/05/23 01:03

data segment
buff1 db 20
n1 db ?
content1 db 20 dup(0)
buff2 db 20
n2 db ?
content2 db 20 dup(0)
buff3 db 21 dup(0)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
buffa:
mov dx,offset buff1
mov ah,0ah
int 21h
mov dl,0ah
mov ah,2
int 21h
buffb:
mov dx,offset buff2
mov ah,0ah
int 21h
mov cl,n1
mov si,offset content1
transfer1:
sub byte ptr[si],30h
inc si
loop transfer1
dec si
mov di,si
mov cl,n2
mov si,offset content2
transfer2:
sub byte ptr[si],30h
inc si
loop transfer2
dec si
mov bx,si
addd:
mov si,offset buff3
mov dl,n1
cmp dl,n2
clc
jg lowern2
mov cl,n1
mov dl,n2
addln1:
mov al,[di]
adc al,[bx]
aaa
mov [si],al
inc si
dec di
dec bx
loop addln1
pushf
mov cl,n2
sub cl,n1
cmp cl,0
je ifequ
popf
remain0n1:
mov al,0
adc al,[bx]
aaa
mov [si],al
inc si
dec bx
loop remain0n1
jmp done
lowern2:
mov cl,n2
mov dl,n1
addln2:
mov al,[di]
adc al,[bx]
aaa
mov [si],al
inc si
dec di
dec bx
loop addln2
pushf
mov cl,n1
sub cl,n2
popf
remain0n2:
mov al,0
adc al,[di]
aaa
mov [si],al
inc si
dec di
loop remain0n2
done:
jnc over
jmp refinement
ifequ:
popf
jnc over
refinement:
mov al,0
adc al,0
mov [si],al
inc dl
inc si
over:
dec si
mov cl,dl
mov dl,0ah
mov ah,2
int 21h
transfer3:
add byte ptr[si],30h
mov dl,[si]
mov ah,2
int 21h
dec si
loop transfer3
mov ah,4ch
int 21h
code ends
end start

 

 


 

原创粉丝点击