ORG 0000H
AJMP MAIN
ORG 0010H
MAIN: MOV R2,#20H ;取32个数放50H-80H
DEC R2 ;外循环次数
L0: MOV R1,#50H ;设置数据首地址高8位
MOV R0,#51H ;低8位
MOV R3,#1FH ;内循环次数
L1: MOV A,@R0 ;取前一个数,从大到小排列
INC R0
INC R0 ;取后一个数
CLR C ;清进位
SUBB A,@R0 ;相邻两数相减
MOV A,@R1
INC R1
INC R1
SUBB A,@R1
JC L2 ;前一个数小则转移
JMP L3 ;
L2: DEC R1 ;
DEC R1
MOV A,@R1 ;取前一个数
INC R1
INC R1 ;取后一个数
XCH A,@R1 ;前一个数小和后一个数交换位置
DEC R1 ;
DEC R1
MOV @R1,A ;
DEC R0
DEC R0
MOV A,@R0
INC R0
INC R0
XCH A,@R0
DEC R0
DEC R0
MOV @R0,A
L3: DJNZ R3,L1 ;内循环次数减一
DJNZ R2,L0 ;外循环次数减一
用户393970 2007-10-17 10:11
有不对的地方敬请大家批评指正.