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

📄 bubsort.asm

📁 单片机程序设计基础 随书光盘
💻 ASM
字号:
;单字节冒泡排序算法
DATS	EQU	30H	;排序数据首址。
N	EQU	8	;数据个数。

	ORG	0000H
	LJMP	TEST
	
	ORG	100H	
TEST:	MOV	DPTR,#LIST;设置单字节表格
	MOV	R0,#DATS
	MOV	R2,#N
COPY:	CLR	A
	MOVC	A,@A+DPTR
	MOV	@R0,A
	INC	R0
	INC	DPTR
	DJNZ	R2,COPY
	LCALL	BUBSORT	;调用冒泡排序算法
STOP:	LJMP	STOP

LIST:	DB	53H,87H,12H,9AH
	DB	2FH,3CH,0A8H,0BCH

BUBSORT:MOV	R4,#N	;初始化一轮冒泡操作中的比较次数。
SRT1:	CLR	F0	;在一轮冒泡操作前,初始化交换标志。
	MOV	A,R4	;取上一轮冒泡操作中比较次数。
	DEC	A	;减少一次。
	MOV	R4,A	;作为本轮冒泡操作中的比较次数。
	MOV	R2,A	;控制本轮比较次数。
	JZ	SRT4	;比较次数为零,排序结束。
	MOV	R0,#DATS;取数据区首址。
SRT2:	MOV	A,@R0	;读取一个数据。
	MOV	R3,A	;暂存。
	INC	R0	;指向后一个数据。
	MOV	A,@R0	;读取。
	CLR	C
	SUBB	A,R3	;和前一个数据比较。
	JNC	SRT3	;不小于前一个数据,符合增序要求。
	SETB	F0	;小于前一个数据,设置交换标志。
	MOV	A,R3	;交换两个数据(冒泡)。
	XCH	A,@R0
	DEC	R0	;指向前一个数据。
	XCH	A,@R0
	INC	R0	;恢复指针,指向后一个数据。
SRT3:	DJNZ	R2,SRT2	;处理完这一轮。
	JB	F0,SRT1	;这一轮如果发生交换操作,则需要进行下一轮操作。
SRT4:	RET		;排序结束。

	END


⌨️ 快捷键说明

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