當前位置:編程學習大全網 - 編程軟體 - 單片機 試編程將內部RAM50H~70中的數據由大到小進行原地排列

單片機 試編程將內部RAM50H~70中的數據由大到小進行原地排列

TEMP1 EQU 30H

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中就始終是最大的),得到最大的,再找第二大的...壹直判斷下去,最後就實現了妳要的效果了!提示:壹定要用心去讀、去理解這段程序!加油!

  • 上一篇:對密碼科學與技術專業的認識和理解有什麽?
  • 下一篇:信噪比計算公式是什麽?
  • copyright 2024編程學習大全網