主题:自己编写的一个加减法程序
stack segment stack
dw 100 dup(?)
stack ends
data segment
x1 db 4 dup(?)
x2 db 4 dup(?)
stack segment stack
dw 100 dup(?)
stack ends
data segment
x1 db 4 dup(?)
x2 db 4 dup(?)
x3 db 5 dup(?)
data ends
code segment
assume cs:code,ds:data,ss:stack
main proc far
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
lea si,x1
mov cx,4
call shuru;输入第一个四位十进制数
mov ah,8;输入0或1选择输出加减号
int 21h
cmp al,30h
je again1
cmp al,31h
je again2
again1:mov dl,'+'
mov ah,2
int 21h
jmp jinru
again2:mov dl,'-'
mov ah,2
int 21h
jinru:lea si,x2;输入第二个四位十进制数
mov cx,4
call shuru
mov dl,'='
mov ah,2
int 21h
lea si,x1+3
lea di,x2+3
lea bx,x3+4
mov cx,4
clc
mov ah,8;输入数字选择进行加法还是减法运算
int 21h
cmp al,30h
je yunsuan1
yunsuan2:mov al,[si]
sbb al,[di]
aas
mov [bx],al
dec si
dec di
dec bx
loop yunsuan2
jmp next3
yunsuan1:mov al,[si]
adc al,[di]
aaa
mov [bx],al
dec si
dec di
dec bx
loop yunsuan1
next3:mov al,0
adc al,0
mov [bx],al
mov cx,5
next2:mov dl,[bx];显示输出x3中的数
or dl,30h
mov ah,2
int 21h
inc bx
loop next2
mov ah,4ch
int 21h
main endp
shuru proc near
next:mov ah,1
int 21h
cmp al,30h
jb next
cmp al,39h
ja next
and al,0fh
mov [si],al
inc si
loop next
ret
shuru endp
code ends
end main
dw 100 dup(?)
stack ends
data segment
x1 db 4 dup(?)
x2 db 4 dup(?)
stack segment stack
dw 100 dup(?)
stack ends
data segment
x1 db 4 dup(?)
x2 db 4 dup(?)
x3 db 5 dup(?)
data ends
code segment
assume cs:code,ds:data,ss:stack
main proc far
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
lea si,x1
mov cx,4
call shuru;输入第一个四位十进制数
mov ah,8;输入0或1选择输出加减号
int 21h
cmp al,30h
je again1
cmp al,31h
je again2
again1:mov dl,'+'
mov ah,2
int 21h
jmp jinru
again2:mov dl,'-'
mov ah,2
int 21h
jinru:lea si,x2;输入第二个四位十进制数
mov cx,4
call shuru
mov dl,'='
mov ah,2
int 21h
lea si,x1+3
lea di,x2+3
lea bx,x3+4
mov cx,4
clc
mov ah,8;输入数字选择进行加法还是减法运算
int 21h
cmp al,30h
je yunsuan1
yunsuan2:mov al,[si]
sbb al,[di]
aas
mov [bx],al
dec si
dec di
dec bx
loop yunsuan2
jmp next3
yunsuan1:mov al,[si]
adc al,[di]
aaa
mov [bx],al
dec si
dec di
dec bx
loop yunsuan1
next3:mov al,0
adc al,0
mov [bx],al
mov cx,5
next2:mov dl,[bx];显示输出x3中的数
or dl,30h
mov ah,2
int 21h
inc bx
loop next2
mov ah,4ch
int 21h
main endp
shuru proc near
next:mov ah,1
int 21h
cmp al,30h
jb next
cmp al,39h
ja next
and al,0fh
mov [si],al
inc si
loop next
ret
shuru endp
code ends
end main