虽然编得不怎么高明,最起码能达到目的
第一题:
我的思路是先把片外30个数据循环地弄到片内,再把片内30个数据弄出片外
START: MOV DPTR,#8000H
MOV R0,#30H
MOV R1,#1EH
LOOP: MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R1,LOOP
MOV DPTR,#8100H
MOV R0,#30H
MOV R1,#1EH
LOOP1: MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
DJNZ R1,LOOP1
END
第二题
DAT EQU 30H ;排序数据首地址
N EQU 10 ;排序个数
SELSORT: MOV R0,#DAT
MOV R2,#N-1
LOOP: MOV B,@R0
MOV A,R0
MOV R3,A
INC A
MOV R1,A
MOV A,R2
MOV R4,A
LOOP1: MOV A,@R1
CLR C
SUBB A,B
JNC LOOP2
MOV B,@R1
MOV A,R1
MOV R3,A
LOOP2: INC R1
DJNZ R4,LOOP1
MOV A,R3
MOV R1,A
MOV A,@R1
XCH A,@R0
XCH A,@R1
INC R0
DJNZ R2,LOOP
RET
1. ORG 0000H
AJMP MAIN
ORG 0080H
MAIN: MOV DPTR,#8000H
MOV RO,#30
MOV R1,#60H
LP: MOVX A,@DPTR
MOV @R1,A
INC DPTR
INC R1
DJNZ R0,LP
AIM: MOV RO,#30
MOV R1,#60H
MOV DPTR,#8100H
MOV A,@R1
MOVX @DPTR,A
INC DPTR
INC R1
DJNZ R0,AIM
END
2. BUF EQU 30H
ORG 0000H
AJMP MAIN
ORG 0060H
MAIN: MOV BUF+0,#2
MOV BUF+1,#9
MOV BUF+2,#5
MOV BUF+3,#24
MOV BUF+4,#23
MOV BUF+5,#12
MOV BUF+6,#10
MOV BUF+7,#7 ;要排的数据
SORT: MOV R0,#30H
MOV R7,#07H
CLR TR0 ;TR0是置换标志位,若TR0为1说明还没有全部排完
LOOP: MOV A,@R0 ;比较两数大小
MOV 2BH,A
INC R0
MOV 2AH,@R0
CLR C
SUBB A,@R0
JC NEXT
MOV @R0,2BH
DEC R0
MOV @R0,2AH
INC R0
SETB TR0
NEXT: DJNZ R7,LOOP
JB TR0,SORT