1. 程式人生 > >採用冒泡法編寫51微控制器排序程式

採用冒泡法編寫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
提問者對於答案的評價:謝謝~
原題網址:

http://zhidao.baidu.com/question/148407042.html?fr=qrl&cid=865&index=1