TEMP2 EQU 31H
RAM_STA EQU 50H
RAM_END EQU 70HORG 0000HAJMP MAINORG 0030HMAIN: ACALL MAX_SORT SJMP $
MAX_SORT: ;由大到小排序子程序,
MOV R0,#RAM_STA;
MOV R1,#RAM_STA+1;
LOOP: MOV A,@R0;
MOV TEMP1,A
MOV A,@R1
MOV TEMP2,A
ACALL MAX
INC R1;
CJNE R1,#RAM_END+1,LOOP;
INC R0;
MOV A,R0
INC A;
MOV R1,A
CJNE R0,#RAM_END,LOOP;
RET MAX: PUSH PSW ; 比較@R0與@R1二者大小,大的放@R0,小的放@R1
CLR C
MOV A,TEMP1
SUBB A,TEMP2
JNC MAX_END
MOV A,TEMP2
MOV @R0,A
MOV A,TEMP1
MOV @R1,A
MAX_END:POP PSW
RET 這程序我調試過了!理解起來會比較難些,大概的排序方式為:先找出最大的放到最低RAM中(50H),這裏是用最低RAM(50H)與其他RAM逐壹比較,比它大的話就兩者交換(這樣50H中就始終是最大的),得到最大的,再找第二大的...壹直判斷下去,最後就實現了妳要的效果了!提示:壹定要用心去讀、去理解這段程序!加油!