标号: SORT功能:单字节无符号数据块排序(增序) 入口条件:数据块的首址在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 ;排序结束 END