⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00.asm

📁 1、输入模块:从键盘读入两个长整数
💻 ASM
字号:
DSEG    SEGMENT 
num1	db	128,0,128 dup (?)	
num2	db	128,0,128 dup (?)

num3	db	100 dup (?)
bag1	db	'the first num:','$'
bag2	db	0ah,0dh,'the second num:','$'
bag3	db	0ah,0dh,'the result:','$'
bag4	db	0ah,0dh,'press anykey to exit','$'
bag5	db	0ah,0dh,'please chose:1.add 2.sub  :','$'

DSEG    ENDS

sseg	segment	stack
	dw	50 dup (0)
sseg	ends

CSEG    SEGMENT  
	assume	cs:cseg,ds:dseg,ss:sseg
 
START:   
    	MOV     AX, DSEG
    	MOV     DS, AX
    	mov	ax, sseg
    	mov	ss,ax
    	
;******************input the first num*****************    	
    	lea	dx,bag1
 	mov	ah,9
 	int	21h
 	lea	dx,num1
 	mov	ah,0ah
 	int	21h   	
 	
;******************intput the sceond num**************
    	lea	dx,bag2
 	mov	ah,9
 	int	21h
 	lea	dx,num2
 	mov	ah,0ah
 	int	21h  
 
 
 	;lea	si,num1
 	mov	bl,num1[1]   
 	mov	bh,0
 	cmp	bx,0
 	;jz	exit	
 	

 	mov	cl,num2[1]
 	mov	ch,0
 	cmp	cx,0
 	;jz	exit	
;********************************************************************
	push	bx
	push	cx
	lea	dx,bag5
	mov	ah,9
	int	21h
	mov	ah,1
	int	21h
	cmp	al,'1'
	jnz	bug
	call	add1
	jmp	exit1
bug:
	call	sub1
exit1:	
	mov	ah,4ch
	int	21h
;*****************************************************************
;********************************加法*****************************	
;*****************************************************************

	
add1	proc
	push	bp
	mov	bp,sp
	mov	cx,4[bp]
	mov	bx,6[bp]
	mov	dl,0 
 	cmp	bx,cx
 	ja	again
;*******************************第一个数的位数少等于*******************
 	push	cx
again1:
 	mov	al,num1[bx+1]
 	sub	al,30h
 	xchg	bx,cx
 	add	al,num2[bx+1]
 	sub	al,30h
 	add	al,dl
 	cmp	al,10
 	jb	go
 	mov	dl,1
 	sub	al,10
 	jmp	hunt
go:
	mov	dl,0
hunt:
	add	al,30h
	mov	num2[bx+1],al
	xchg	bx,cx
	dec	bx
	dec	cx
	cmp	bx,0
	jnz	again1
	mov	di,dx
	cmp	cx,0
	jz	local1
top:
	mov	bx,cx
	mov	al,num2[bx+1]
	cmp	al,39h
	jnz	kick
	mov	al,30h
	mov	dl,1
	mov	num2[bx+1],al
	loop	top
	jmp	local1
kick:
	add	al,dl
	mov	dl,0
	mov	num2[bx+1],al		
local1:

	lea	dx,bag3
	mov	ah,9
	int	21h
	mov	dx,di
	cmp	dl,0
	jz	local2
	add	dl,30h
	mov	ah,2
	int	21h
local2:
	mov	bx,1
	pop	cx
do:
	mov	dl,num2[bx+1]
	mov	ah,2
	int	21h
	add	bx,1
	cmp	bx,cx
	jna	do
	jmp	exit
;***************************第一个数的位数多***************************
again: 	
	push	bx
	mov	dl,0
	xchg	bx,cx
again2:
 	mov	al,num2[bx+1]
 	sub	al,30h
 	xchg	bx,cx
 	add	al,num1[bx+1]
 	sub	al,30h
 	add	al,dl
 	cmp	al,10
 	jb	go1
 	mov	dl,1
 	sub	al,10 
 	jmp	hunt1	
go1:
	mov	dl,0
hunt1:
	add	al,30h
	mov	num1[bx+1],al
	xchg	bx,cx
	dec	bx
	dec	cx
	cmp	bx,0
	jnz	again2
	mov	dh,0
	mov	di,dx
	cmp	cx,0
	jz	local3
top1:
	mov	bx,cx
	mov	al,num1[bx+1]
	cmp	al,39h
	jnz	kick1
	mov	al,30h
	mov	dl,1
	mov	num1[bx+1],al
	loop	top1
	jmp	local3
kick1:
	add	al,dl
	mov	dl,0
	mov	num1[bx+1],al	
	
local3:
	lea	dx,bag3
	mov	ah,9
	int	21h
	mov	dx,di
	cmp	dl,0
	jz	local4
	add	dl,30h
	mov	ah,2
	int	21h
local4:
	mov	bx,1
	pop	cx
do1:
	mov	dl,num1[bx+1]
	mov	ah,2
	int	21h
	add	bx,1
	cmp	bx,cx
	jna	do1

	jmp	exit

exit:    
	lea	dx,bag4
	mov	ah,9
	int	21h
	mov	ah,1
	int	21h	
 	
 	pop	bp
 	ret
add1	endp
;******************************************************************
;*******************************减法*******************************
;******************************************************************
sub1	proc
	push	bp
	mov	bp,sp
	mov	cx,4[bp]
	mov	bx,6[bp]
	mov	dl,0 
 	cmp	bx,cx
 	jna	sbb1
;*************************第一个数的位数多*******************************
 	push	bx
agago:	
 	mov	al,num1[bx+1]
 	add	al,dl
 	xchg	bx,cx
 	cmp	al,num2[bx+1]
 	jae	skip1
 	add	al,10
 	sub	al,num2[bx+1]
 	mov	dl,-1
 	jmp	skip2
skip1:
	mov	dl,0
	sub	al,num2[bx+1]
skip2:
	xchg	bx,cx
	add	al,30h
	mov	num1[bx+1],al
	dec	bx
	loop	agago
below:
	cmp	dl,0
	jz	spot
	mov	al,num1[bx+1]
	cmp	al,30h
	jnz	spot1
	add	al,10
	add	al,dl
	jmp	spot2
spot1:
	add	al,dl
	mov	dl,0
spot2:
	mov	num1[bx+1],al
	dec	bx
	cmp	bx,0
	jnz	below
	
spot:
	pop	cx
	mov	si,0
	mov	bx,1
	;mov	di,dx
	lea	dx,bag3
	mov	ah,9
	int	21h
	;mov	dx,di
out1:
	mov	al,num1[bx+1]
	cmp	al,30h
	jz	step
	mov	si,1
step:
	cmp	si,1
	jnz	step1
	mov	dl,al
	mov	ah,2
	int	21h
step1:
	add	bx,1
	cmp	bx,cx
	jna	out1	
	jmp	exit2
	
;*******************************第一个数的位数等于************************	
sbb1:
	push	cx
	cmp	cx,bx
	jnz	good3
	mov	si,1
	mov	di,2
	mov	dl,0
skip4:
	add	di,1
	add	cx,2
	cmp	di,cx
	ja	good1
	sub	cx,2
	mov	al,num1[di-1]
	cmp	al,num2[di-1]

	jz	skip4
	add	cx,2
	cmp	al,num2[di-1]
	ja	good1
	mov	si,0
	jmp	good1
good1:
	
	cmp	di,cx
	jna	td2
	lea	dx,bag3
	mov	ah,9
	int	21h
	mov	dl,30h
	mov	ah,2
	int	21h
	pop	cx
	jmp	exit2	
td2:
	sub	cx,2
	cmp	si,1
	jmp	good2
good3:
	jmp	good
good2:
	jnz	good
td:
	mov	al,num1[bx+1]
	add	al,dl
	cmp	al,num2[bx+1]
	jae	look
	add	al,10
	sub	al,num2[bx+1]
	mov	dl,-1
	;mov	num1[bx+1],al
	add	al,30h
	jmp	look1	
look:
	mov	dl,0
	sub	al,num2[bx+1]
	add	al,30h
look1:
	mov	num1[bx+1],al
	dec	bx
	cmp	bx,0
	jnz	td
	
	lea	dx,bag3
	mov	ah,9
	int	21h
	mov	si,0
	mov	bx,1
out2:
	mov	al,num1[bx+1]
	cmp	al,30h
	jz	stap
	mov	si,1
stap:
	cmp	si,1
	jnz	stap1
	mov	dl,al
	mov	ah,2
	int	21h
stap1:
	add	bx,1
	cmp	bx,cx
	jna	out2
	pop	cx	
	jmp	exit2
;********************************第一个数的位数少*******************************
	
good:
	mov	dl,0
	xchg	cx,bx
tap:
	mov	al,num2[bx+1]
	xchg	cx,bx
	add	al,dl
	cmp	al,num1[bx+1]
	jae	tip
	add	al,10
	mov	dl,-1
	sub	al,num1[bx+1]
	jmp	tip1
tip:
	mov	dl,0
	sub	al,num1[bx+1]
tip1:
	add	al,30h
	xchg	bx,cx
	mov	num2[bx+1],al
	dec	bx
	loop	tap
below1:
	cmp	dl,0
	jz	seep
	mov	al,num2[bx+1]
	cmp	al,30h
	jnz	seep1
	add	al,10
	add	al,dl
	jmp	seep2
seep1:
	add	al,dl
	mov	dl,0
seep2:
	mov	num2[bx+1],al
	dec	bx
	cmp	bx,0
	jnz	below1
seep:
	pop	cx
	mov	si,0
	mov	bx,1
	lea	dx,bag3
	mov	ah,9
	int	21h
	mov	dl,'-'
	mov	ah,2
	int	21h
aut1:
	mov	al,num2[bx+1]
	cmp	al,30h
	jz	leas
	mov	si,1
leas:
	cmp	si,1
	jnz	leas1
	mov	dl,al
	mov	ah,2
	int	21h
leas1:
	add	bx,1
	cmp	bx,cx
	jna	aut1
	jmp	exit2

exit2:
	lea	dx,bag4
	mov	ah,9
	int	21h
	mov	ah,1
	int	21h
	pop	bp	 	
 	ret
sub1	endp
 

CSEG    ENDS 

        END    START     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -