ORG 0000H
START:
CLR 00H
CLR C
MOV R7, #09H
MOV R0, #30H
MOV A, @R0 ;(30H)->A
LOOP:
INC R0 ;R0 = 31H
MOV R2, A ;(30H)->R2 暂存(30H)
SUBB A, @R0 ;(30H)-(31H), if (30H)>=(31H) C=0; else C=1
MOV A, R2 ;(30H)->A
JC NEXT ;(30H)>=(31H) 顺序; (30H)<(31H) 跳
SETB 00H ;进行了交换,00H置位
XCH A, @R0 ;(30H)->(31H), (31H)->A
DEC R0 ;R0 = 30H
XCH A, @R0 ;(31H)->(30H)
INC R0 ;R0 = 31H
NEXT: ;无需交换
MOV A, @R0 ;(31H)->A
DJNZ R7,LOOP ;完成一次判断,继续下一次,共9次
JB 00H, START ;如果进行了交换,需要进行下一次排序;如果未进行交换,则排序结束
SJMP $
END
10-09
479
10-11
2012
04-17
4081