採用冒泡法編寫51微控制器排序程式
試設計一個子程式,其功能為將(R0)指出的內部RAM中6個單位元組正整數按從小到大的次序重新排列。
懸賞分:10 - 解決時間:2010-5-7 22:59
;========================================
最佳答案:
下列程式使用冒泡法排序,經過KEIL模擬測試通過。
ORG 0000H
;------------------------下面先準備6個數字
MOV 40H, #8AH
MOV 41H, #3BH
MOV 42H, #0B9H
MOV 43H, #47H
MOV 44H, #29H
MOV 45H, #0AFH
CALL SORT6 ;呼叫排序子程式
SJMP $ ;停止,此時可以觀察排序結果
;-------------------------------------
SORT6: ;排序子程式
MOV R6, #5 ;6個數字,比較5次
S1:
MOV R0, #40H ;起始地址
MOV B, R6
MOV R7, B
CLR PSW.5 ;交換標誌清零
S2:
MOV B, @R0 ;取出前一個數
INC R0
MOV A, @R0 ;取出後一個數
CJNE A, B, S3 ;後-前
S3:
JNC N_JH ;夠減就不用交換
MOV @R0, B ;交換存放
DEC R0
MOV @R0, A
INC R0
SETB PSW.5 ;設立交換標誌位
N_JH:
DJNZ R7, S2
JNB PSW.5, S_END ;沒有交換過,就結束
DJNZ R6, S1
S_END:
RET
;-------------------------------------
END
;========================================
回答者: 做而論道 - 十三級 2010-4-21 00:19
提問者對於答案的評價:謝謝~
原題網址: