主题:;51单片机 排序 小程序
;51单片机 将片外ROM1000H的数据从大到小排序 然后输出到片外RAM2000H的小程序
mov R7, #0AH ; 循环次数
mov DPTR, #1000H;片外地址
MOV R1, #30H
LOOP1: MOV A, #0H
MOVC A, @A+DPTR
MOV @R1, A
INC R1
INC DPTR
DJNZ R7, LOOP1
ACALL QUE
MOV DPTR, #2000H
MOV R7, #0AH
MOV R1, #30H
LOOP2: MOV A,@R1
MOVX @DPTR, A
INC DPTR
INC R1
DJNZ R7,LOOP2
OUT: MOV R0,#30H
MOV DPTR,#1000H
MOV R7,#10
OUT1: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,OUT1
HERE: AJMP HERE
QUE: CLR 00H
MOV R1,#39H ;
MOV R6,#09H
I3: MOV A,R6
MOV R7,A
MOV A,R1
MOV R0,A
MOV A,@R0
I2: DEC R0 ;
MOV R2,A
SUBB A,@R0 ;
MOV A,R2
JC I1
SETB 00H
XCH A,@R0
I1: DJNZ R7,I2
NOP ;可在此处设置断点观察每次排序结果
JNB 00H,STOP
MOV @R1,A
DEC R1 ;
DJNZ R6,I3
STOP: RET
END
mov R7, #0AH ; 循环次数
mov DPTR, #1000H;片外地址
MOV R1, #30H
LOOP1: MOV A, #0H
MOVC A, @A+DPTR
MOV @R1, A
INC R1
INC DPTR
DJNZ R7, LOOP1
ACALL QUE
MOV DPTR, #2000H
MOV R7, #0AH
MOV R1, #30H
LOOP2: MOV A,@R1
MOVX @DPTR, A
INC DPTR
INC R1
DJNZ R7,LOOP2
OUT: MOV R0,#30H
MOV DPTR,#1000H
MOV R7,#10
OUT1: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,OUT1
HERE: AJMP HERE
QUE: CLR 00H
MOV R1,#39H ;
MOV R6,#09H
I3: MOV A,R6
MOV R7,A
MOV A,R1
MOV R0,A
MOV A,@R0
I2: DEC R0 ;
MOV R2,A
SUBB A,@R0 ;
MOV A,R2
JC I1
SETB 00H
XCH A,@R0
I1: DJNZ R7,I2
NOP ;可在此处设置断点观察每次排序结果
JNB 00H,STOP
MOV @R1,A
DEC R1 ;
DJNZ R6,I3
STOP: RET
END