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

📄 sort.asm

📁 用汇编语言实现的冒泡排序算法程序。排20个正整数。
💻 ASM
字号:
stack segment para stack 'stack'
	top db 150 dup(?)
stack ends

data segment
buff	dw	20	dup(?);存储20个待排序数字
order	dw	10000,1000,100,10,1
data ends

code segment
	assume cs:code,ds:data

inputc	proc	near
;入口参数:无
;功能:从键盘读入一个字母
;出口参数:DL中为键盘输入字的ASCII码值
	push	ax
	mov	ah,01h
	int	21h
	mov	dx,0
	mov	dl,al
	pop	ax
	ret
inputc	endp

input	proc	near
;入口参数:无
;功能:从键盘读入数字n
;出口参数:BX中为读入的数字n
	push	ax
	push	cx
	mov	ax,0
loop1:	call	inputc
	cmp	dx,30h
	jb	exit2;小于30跳转exit2
	cmp	dx,39h
	ja	exit2;大于39跳转exit2
	sub	dx,30h
	mov	bx,0
	mov	bx,dx
	mov	cx,10
	mul	cx
	add	ax,bx
	jmp	loop1
exit2:	mov	bx,ax
	pop	cx
	pop	ax
	ret
input	endp

bin2dec proc	far
;入口参数:DX存放要输出的数字
;功能:输出5位十进制数
;出口参数:无
	push	cx
	push	bx
	mov	cx,5
	mov	bx,0
	lea	si,order

loop3:	sub	dx,[si]
	jb	loop4
	inc	bl;存放某位数字
	jmp	loop3
loop4:	add	dx,[si]
	cmp	bl,0
	je	loop7
loop5:	push	dx
	mov	dl,bl
	or	dl,30h
	mov	ah,2
	int	21h
	pop	dx
	mov	bh,1;标志是否已经有数字输出
	jmp	loop8
loop7:	cmp	bh,1
	je	loop5
loop8:	add	si,2
	mov	bl,0
	loop	loop3
	cmp	bh,0
	jne	loop9;为0时输出0
	mov	dl,'0'
	mov	ah,2
	int	21h
loop9:	pop	bx
	pop	cx
	ret
bin2dec	endp

lfcr	proc	near
;入口参数:无
;功能:另起一行,从头输出
;出口参数:无
	push	ax
	push	dx
	mov	ah,02h
	mov	dl,0ah
	int	21h
	mov	dl,0dh
	int	21h
	pop	dx
	pop	ax
	ret
lfcr	endp

sort	proc	near
;入口参数:buff内存有待排数
;功能实现冒泡排序
;出口参数:buff内为已由小到大排好序的数
	push	bx
	push	cx
	push	dx
	mov	bx,0
	mov	cx,20
	dec	cx
l1:	mov	dx,cx
l2:	mov	ax,buff[bx]
	cmp	ax,buff[bx+2]
	jbe	conti
	xchg	ax,buff[bx+2]
	mov	buff[bx],ax
conti:	add	bx,2
	loop	l2
	;dec dx
	mov	cx,dx
	mov	bx,0
	loop	l1
	pop	dx
	pop	cx
	pop	bx
	ret
sort	endp	

main	proc	far
;入口参数:无
;功能:做冒泡排序
;出口参数:无
	push	ds
	mov	ax,0
	push	ax
	mov	ax,data
	mov	ds,ax;设置数据段寄存器
	mov	ax,stack
	mov	ss,ax;设置堆栈段寄存器

	mov	cx,20
	lea	si,buff
inall:	call	input
	mov	[si],bx
	add	si,2
	call	lfcr
	loop	inall

	call	sort	
	lea	bx,buff
	mov	cx,20
	
	call	lfcr
outall:	mov	dx,[bx]
	call	bin2dec
	call	lfcr
	add	bx,2
	loop	outall

	mov	ah,4ch
	int	21h

main	endp

code	ends

end	main




⌨️ 快捷键说明

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