sotp.asm

来自「通过调试的有用的单片机控制程序」· 汇编 代码 · 共 35 行

ASM
35 行
字号
;入口条件:数据块的首址在R0中,字节数在R7中。
;出口信息:完成排序(增序)
;影响资源:PSW、A、R2~R6      堆栈需求:  2字节

SORT:	MOV	A,R7
	MOV	R5,A		;比较次数初始化
SRT1:	CLR	F0		;交换标志初始化
	MOV	A,R5		;取上遍比较次数
	DEC	A		;本遍比上遍减少一次
	MOV	R5,A		;保存本遍次数
	MOV	R2,A		;复制到计数器中
	JZ	SRT5		;若为零,排序结束
	MOV	A,R0		;保存数据指针
	MOV	R6,A
SRT2:	MOV	A,@R0		;读取一个数据
	MOV	R3,A
	INC	R0		;指向下一个数据
	MOV	A,@R0		;再读取一个数据
	MOV	R4,A
	CLR	C
	SUBB	A,R3		;比较两个数据的大小
	JNC	SRT4		;顺序正确(增序或相同),不必交换
	SETB	F0		;设立交换标志
	MOV	A,R3		;将两个数据交换位置
	MOV	@R0,A
	DEC	R0
	MOV	A,R4
	MOV	@R0,A
	INC	R0		;指向下一个数据
SRT4:	DJNZ	R2,SRT2		;完成本遍的比较次数
	MOV	A,R6		;恢复数据首址
	MOV	R0,A
	JB	F0,SRT1		;本遍若进行过交换,则需继续排序
SRT5:	RET			;排序结束

⌨️ 快捷键说明

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