試設(shè)計一個子程序,其功能為將(R0)指出的內(nèi)部RAM中6個單字節(jié)正整數(shù)按從小到大的次序重新排列。
;========================================
最佳答案:
下列程序使用冒泡法排序,經(jīng)過KEIL仿真測試通過。
ORG 0000H
;------------------------下面先準(zhǔn)備6個數(shù)字
MOV 40H, #8AH
MOV 41H, #3BH
MOV 42H, #0B9H
MOV 43H, #47H
MOV 44H, #29H
MOV 45H, #0AFH
CALL SORT6 ;調(diào)用排序子程序
SJMP $ ;停止,此時可以觀察排序結(jié)果
;-------------------------------------
SORT6: ;排序子程序
MOV R6, #5 ;6個數(shù)字,比較5次
S1:
MOV R0, #40H ;起始地址
MOV B, R6
MOV R7, B
CLR PSW.5 ;交換標(biāo)志清零
S2:
MOV B, @R0 ;取出前一個數(shù)
INC R0
MOV A, @R0 ;取出后一個數(shù)
CJNE A, B, S3 ;后-前
S3:
JNC N_JH ;夠減就不用交換
MOV @R0, B ;交換存放
DEC R0
MOV @R0, A
INC R0
SETB PSW.5 ;設(shè)立交換標(biāo)志位
N_JH:
DJNZ R7, S2
JNB PSW.5, S_END ;沒有交換過,就結(jié)束
DJNZ R6, S1
S_END:
RET
;-------------------------------------
END
;========================================