?? bsort.asm
字號:
;三字節浮點數冒泡排序算法
ADDR EQU 2000H ;三字節浮點數數組首址。
NUMB EQU 0120H ;浮點數個數。
TEMP1 EQU 30H ;浮點數暫存區1的首址。
TEMP2 EQU 33H ;浮點數暫存區2的首址。
EXC BIT 00H ;交換標志。
ORG 0000H
LJMP TEST
ORG 0100H
TEST: MOV DPTR,#ADDR ;將測試數據傳送到片外RAM中。
MOV P2,DPH
MOV R0,DPL
MOV DPTR,#NUMB
MOV R2,DPH
MOV R3,DPL
MOV DPTR,#LIST
MOV A,R3
JZ TEST1
INC R2
TEST1: MOV R4,#3
TEST2: CLR A
MOVC A,@A+DPTR
MOVX @R0,A
INC DPTR
INC R0
CJNE R0,#0,TEST3
INC P2
TEST3: DJNZ R4,TEST2
DJNZ R3,TEST1
DJNZ R2,TEST1
LCALL BUBB ;調用冒泡排序算法。
STOP: LJMP STOP
BUBB: MOV R6,#HIGH(NUMB);初始化交換次數為浮點數總個數。
MOV R7,#LOW(NUMB)
BUBB1: CLR EXC ;開始一輪冒泡操作前,初始化交換標志。
CJNE R7,#0,BUBB2;本輪交換次數比上一輪少一次。
DEC R6
BUBB2: DEC R7
MOV A,R6 ;取本輪交換次數。
MOV R4,A
MOV A,R7
MOV R5,A
ORL A,R6
JZ BUBBE ;比較次數為零,排序結束。
MOV A,R5 ;調整本輪比較次數的控制計數器。
JZ BUBB3
INC R4
BUBB3: MOV DPTR,#ADDR;取數據區首址。
BUBB4: MOV R0,#TEMP1;讀取一個浮點數。
LCALL LOAD
PUSH DPH ;保存下一個浮點數的地址。
PUSH DPL
LCALL LOAD ;再讀取一個浮點數。
POP DPL ;恢復這個浮點數的地址。
POP DPH
MOV R0,#TEMP2;指向這兩個浮點數的片內副本。
MOV R1,#TEMP1
LCALL FCMP ;比較浮點數的大?。▍㈤喐↑c子程序庫)。
JNC BUBB6 ;順序正確。
SETB EXC ;順序不正確,設立交換標志。
MOV R0,#TEMP1;存放到后一個數據的片外地址中。
LCALL SAVE
MOV A,#0FAH ;將指針退回到前一個數據的地址。
ADD A,DPL
MOV DPL,A
JC BUBB5
DEC DPH
BUBB5: LCALL SAVE ;將后一個浮點數存放到前一個數據的片外地址中。
BUBB6: DJNZ R5,BUBB4;進行完本輪的比較。
DJNZ R4,BUBB4
JB EXC,BUBB1;本輪操作中發生過交換,則需要進行下一輪操作。
BUBBE: RET ;否則,排序結束。
LOAD: MOV R3,#3 ;將一個三字節浮點數復制到片內RAM中。
LOAD1: MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R3,LOAD1
RET
SAVE: MOV R3,#3 ;將一個三字節浮點數存放到片外RAM中。
SAVE1: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R3,SAVE1
RET
FCMP: MOV A,@R0 ;浮點數比較子程序
XRL A,@R1
JNB ACC.7,CMP2
MOV A,@R0
RLC A
MOV A,#0FFH
RET
CMP2: MOV A,@R1
MOV C,ACC.6
MOV ACC.7,C
MOV B,A
MOV A,@R0
MOV C,ACC.7
MOV F0,C
MOV C,ACC.6
MOV ACC.7,C
CLR C
SUBB A,B
JZ CMP6
RLC A
JNB F0,CMP5
CPL C
CMP5: MOV A,#0FFH
RET
CMP6: INC R0
INC R0
INC R1
INC R1
CLR C
MOV A,@R0
SUBB A,@R1
MOV B,A
DEC R0
DEC R1
MOV A,@R0
SUBB A,@R1
DEC R0
DEC R1
ORL A,B
JZ CMP7
JNB F0,CMP7
CPL C
CMP7: RET
LIST: DB 0BH,94H,0A7H,0F3H,94H,0EBH
DB 78H,9DH,66H,7AH,0ACH,0C8H
DB 7AH,99H,03H,8EH,0A0H,66H
DB 76H,8CH,0D5H,8CH,9AH,0B0H
DB 00H,0D6H,1EH,76H,0C3H,0D2H
DB 7DH,0FAH,5AH,0BH,0CBH,55H
DB 0F1H,0EAH,0BCH,0DH,0D7H,9CH
DB 85H,0F3H,9AH,75H,0F3H,50H
DB 0FBH,0EAH,0AH,0F9H,0C1H,5AH
DB 89H,0ABH,4AH,05H,0E9H,4DH
DB 80H,0A9H,0ACH,85H,0B5H,9EH
DB 84H,0B3H,0D6H,0F4H,0FAH,0D8H
DB 0FAH,0DBH,0FH,0F9H,0E1H,0E6H
DB 7DH,0BCH,0DEH,8DH,9BH,0D8H
DB 0F0H,0FBH,0DH,7EH,0E1H,0A5H
DB 0FDH,0B4H,0B9H,8DH,97H,37H
DB 0F0H,0E6H,0F7H,7AH,0DEH,0F9H
DB 8BH,0DFH,28H,73H,0E5H,1FH
DB 7FH,0A3H,0EEH,8FH,0FDH,0C4H
DB 82H,0B8H,9FH,0F1H,93H,0E5H
DB 0FEH,0FCH,0BEH,7CH,97H,0D1H
DB 0F9H,0FAH,33H,7EH,0C6H,6FH
DB 0FBH,0CDH,0F2H,0DH,0BEH,57H
DB 03H,0CAH,0E2H,0F6H,0DCH,43H
DB 0FH,88H,72H,75H,8EH,59H
DB 0EH,0CBH,20H,04H,0E4H,1BH
DB 07H,83H,7BH,85H,0EFH,74H
DB 02H,0EEH,9CH,81H,0D3H,80H
DB 87H,0F0H,1EH,77H,83H,0C6H
DB 0F9H,0F8H,0D3H,08H,9AH,79H
DB 0F1H,0CFH,3BH,7CH,0E7H,75H
DB 0DH,0EEH,0AFH,87H,0D5H,0F2H
DB 83H,0BEH,5DH,77H,0CBH,0BCH
DB 0FAH,0F7H,8BH,0FH,0F1H,79H
DB 0F5H,0AFH,30H,0FBH,0E6H,06H
DB 88H,0C0H,0CEH,87H,99H,0D5H
DB 03H,0BAH,0B8H,70H,0D7H,19H
DB 0FCH,0E3H,30H,7DH,0E6H,19H
DB 8BH,0C3H,27H,81H,0E4H,0FBH
DB 03H,9FH,66H,81H,0ECH,0C7H
DB 72H,98H,0FDH,8FH,9FH,0ADH
DB 76H,0F5H,0B7H,7CH,0B6H,0E7H
DB 0FFH,0DCH,0E6H,0FAH,9CH,0D7H
DB 7BH,9AH,0E6H,7EH,0DCH,0DAH
DB 7EH,9BH,49H,7DH,0E9H,3BH
DB 7EH,0A7H,61H,8DH,0ECH,2EH
DB 84H,85H,0CEH,83H,0B9H,0D9H
DB 06H,0BBH,20H,0F2H,0E4H,0FH
DB 0FCH,81H,0F2H,8DH,0BEH,4BH
DB 02H,0C9H,73H,0F0H,0AEH,79H
DB 0FH,0CFH,3EH,84H,0E7H,0D5H
DB 07H,0FAH,0BFH,87H,0D7H,0F0H
DB 0F3H,0FEH,19H,7DH,0C3H,3CH
DB 0FBH,0E7H,90H,0FH,0F2H,07H
DB 81H,0C0H,0FAH,0F3H,9FH,57H
DB 09H,0EAH,0E1H,70H,0DCH,2FH
DB 8FH,85H,0F8H,75H,0BFH,0EH
DB 0EH,0E1H,0D6H,0F2H,0BAH,0D9H
DB 8FH,0DBH,34H,0F0H,0E6H,9BH
DB 7DH,0D3H,7FH,8DH,0EFH,0FDH
DB 73H,0FFH,0B4H,89H,0F6H,9BH
DB 0F7H,0D3H,70H,0FFH,0EEH,0CH
DB 7BH,0C1H,98H,89H,0B3H,1EH
DB 07H,0E3H,0D6H,0F0H,0FAH,0C9H
DB 89H,0D9H,3BH,0F1H,0A7H,63H
DB 7DH,0ECH,76H,8CH,8EH,0C5H
DB 83H,0D8H,0B7H,06H,96H,0FAH
DB 77H,0DFH,51H,7CH,0EAH,34H
DB 7BH,0C6H,9EH,8FH,0D3H,0CAH
DB 05H,0F9H,49H,73H,0A9H,20H
DB 0F9H,0A4H,09H,8CH,81H,2DH
DB 84H,0A5H,0A6H,02H,0B4H,0C5H
DB 80H,98H,0B3H,0F2H,96H,70H
DB 7AH,0CEH,0EH,7CH,0C1H,0DEH
DB 0BH,0BBH,0D2H,07H,0FAH,4BH
DB 0F0H,0C9H,70H,0FDH,0AEH,04H
DB 0DH,0C0H,8EH,84H,91H,0CDH
DB 07H,0B9H,0AAH,70H,0B5H,54H
DB 0F8H,0AAH,8AH,0FCH,0D1H,4CH
DB 8AH,0A9H,9BH,75H,0B3H,79H
DB 88H,0EFH,39H,0F4H,0E7H,38H
DB 89H,0E7H,00H,87H,0E0H,0EH
DB 83H,81H,0DCH,83H,0BBH,90H
DB 00H,0F2H,03H,0F0H,0C0H,61H
DB 0FDH,8CH,38H,09H,87H,12H
DB 00H,0E2H,54H,06H,0CAH,9FH
DB 83H,0D3H,0FAH,01H,0FFH,46H
DB 75H,0E8H,0C5H,0F9H,98H,0B6H
DB 8FH,96H,0DCH,74H,0DBH,8FH
DB 7CH,0F1H,0E4H,7BH,0BCH,80H
DB 0FDH,90H,0BH,0F8H,81H,7EH
DB 7EH,0AFH,0D4H,08H,0FAH,88H
DB 80H,0D1H,18H,0F7H,0A3H,0EH
DB 7DH,0E1H,0C9H,88H,0B9H,39H
DB 81H,0A7H,39H,0F0H,0E7H,22H
DB 8CH,0E4H,48H,83H,89H,09H
DB 83H,0A1H,29H,02H,0A5H,3DH
DB 84H,0A7H,0A8H,80H,0F5H,1CH
DB 82H,0A3H,95H,0F3H,0F2H,0B4H
DB 8AH,0D6H,8EH,0F1H,0D1H,0DEH
DB 79H,0BBH,0D5H,7BH,0FAH,0ADH
DB 0F8H,0D5H,0B1H,0FDH,0B6H,2AH
DB 7DH,0C5H,57H,0FAH,0AAH,0ECH
DB 0BH,0DDH,85H,82H,0B0H,0B7H
DB 75H,96H,0F7H,0FEH,0DEH,0ECH
DB 78H,0DDH,87H,7BH,0B0H,0ECH
DB 7FH,9DH,9DH,0FEH,0B3H,0AAH
DB 78H,0F5H,45H,0FEH,0A8H,0ACH
DB 0F9H,95H,9FH,8AH,0B3H,0E9H
DB 74H,0FDH,35H,0FAH,0A6H,0A7H
DB 0F9H,0D4H,0EEH,8EH,9DH,0DDH
DB 73H,0BBH,0A3H,7AH,0F4H,79H
DB 0FEH,8FH,24H,0FDH,0E4H,8CH
DB 0AH,91H,9DH,87H,0B3H,0A1H
DB 72H,0F4H,37H,0F8H,86H,0F2H
DB 0F9H,0DEH,52H,0AH,0CAH,56H
DB 73H,0CAH,0C9H,0FH,0D9H,2EH
DB 05H,0A5H,0C4H,75H,0B8H,9BH
DB 8CH,93H,6DH,0F2H,0EDH,0AAH
DB 7CH,0B5H,47H,89H,0A8H,0E7H
DB 0F6H,9CH,0EAH,8AH,9DH,59H
DB 74H,0ABH,33H,7EH,0E6H,7FH
DB 8EH,0CFH,0F4H,85H,0FEH,98H
DB 03H,0D3H,06H,0F7H,0E0H,0CBH
DB 7FH,99H,66H,89H,0ACH,0C1H
DB 70H,98H,33H,8CH,86H,6DH
DB 76H,0CDH,0A6H,0CH,0B4H,0D9H
DB 03H,9BH,2CH,0F6H,0E5H,80H
DB 7AH,0B0H,05H,8DH,80H,0A7H
DB 0F2H,94H,0E9H,08H,9DH,20H
DB 70H,0A4H,14H,7AH,82H,99H
DB 8EH,0D3H,3BH,02H,0E7H,7BH
DB 71H,0EFH,7CH,89H,0EFH,86H
DB 83H,0F0H,0DAH,87H,9BH,4EH
DB 0F7H,0E9H,0CEH,78H,0B9H,0CBH
DB 8DH,0B9H,6FH,0F4H,0ADH,0F4H
DB 0FCH,0BEH,9BH,8CH,0D3H,78H
DB 0F6H,0EFH,16H,7FH,0E2H,0CFH
DB 89H,0D9H,0F1H,87H,0BEH,3BH
DB 71H,0C7H,6AH,0FCH,0EDH,45H
DB 0FH,0A8H,0A4H,83H,94H,8CH
DB 86H,91H,84H,74H,0B0H,9AH
DB 7AH,93H,52H,0F8H,0EAH,58H
DB 78H,0CBH,05H,89H,0E0H,0A6H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -