📄 数据块排序(增序).asm
字号:
;***************双字节数据块排序(增)****************
;在源地址完成排序(增序)
;占用A、R1~R7 255个数据
SORT: MOV R0,#040H ;数据块的首址在R0中,
MOV R7,#02H ;字节数在R7中
MOV A,R7
MOV R5,A ;比较次数初始化
SRT1: CLR F0 ;交换标志初始化
MOV A,R5 ;取上遍比较次数
DEC A ;本遍比上遍减少一次
MOV R5,A ;保存本遍次数
MOV R2,A ;复制到计数器中
JZ SRT5 ;若为零,排序结束
MOV 06FH,R0 ;保存数据指针
SRT2: MOV A,@R0 ;读取一个数据
MOV R3,A ;H
INC R0 ;指向下一个数据
MOV A,@R0 ;;再读取一个数据
MOV R4,A ;L
INC R0
MOV A,@R0
MOV R1,A ;H
INC R0
MOV A,@R0 ;
MOV R6,A ;L
CLR C
SUBB A,R4 ;比较两个数据的大小
MOV B,A
MOV A,R1
SUBB A,R3
JNC SRT4 ;顺序正确(增序或相同),不必交换
SETB F0 ;设立交换标志
MOV A,R4 ;将两个数据交换位置
MOV @R0,A
DEC R0
MOV A,R3
MOV @R0,A
DEC R0
MOV A,R6
MOV @R0,A
DEC R0
MOV A,R1
MOV @R0,A
INC R0
INC R0
INC R0 ;指向下一个数据
SRT4: DEC R0
DJNZ R2,SRT2 ;完成本遍的比较次数
MOV R0,06FH ;恢复数据首址
JB F0,SRT1 ;本遍若进行过交换,则需继续排序
SRT5: NOP ;RET ;排序结束
CLR C
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -