📄 sort.asm
字号:
ORG 0000H
BLOCK DATA 21H
SUMH DATA 10H
SUMM DATA 11H
SUML DATA 12H
TMP DATA 13H
LEN DATA 10H
MAIN: MOV R0,#BLOCK
MOV R7,#LEN
LCALL INIT
MOV R0,#BLOCK
MOV R7,#LEN
LCALL SORT
MOV R0,#BLOCK
MOV R7,#LEN
LCALL SUM
LJMP FINISH
SORT: DEC R7
LOOP0:CLR F0
MOV R0,#BLOCK
MOV A,R0
MOV R1,A
INC R1
INC R1
MOV A,R7
MOV R6,A
LOOP1:MOV A,@R0
MOV TMP,A
MOV A,@R1
CJNE A,TMP,NEXT1
INC R0
INC R1
MOV A,@R0
MOV TMP,A
MOV A,@R1
CJNE A,TMP,NEXT2
SJMP NOCHA
NEXT1:CLR C
SUBB A,TMP
JC CASE3
CASE1:JNB ACC.7,CHA
CASE2:INC R0
INC R1
SJMP NOCHA
CASE3:JNB ACC.7,CHA
CASE4:INC R0
INC R1
SJMP NOCHA
CHA: SETB F0
ADD A,TMP
MOV @R0,A
XCH A,TMP
MOV @R1,A
INC R0
INC R1
MOV A,@R0
MOV TMP,@R1
MOV @R1,A
XCH A,TMP
MOV @R0,A
SJMP NOCHA
NEXT2:JC NOCHA
SETB F0
MOV @R0,A
XCH A,TMP
MOV @R1,A
NOCHA:INC R0
INC R1
DJNZ R6,LOOP1
JNB F0,HAL
DJNZ R7,LOOP0
HAL: RET
SUM: DEC R7
MOV A,@R0
MOV SUMM,A
JNB ACC.7,LOOPS
MOV A,0FFH
ADD A,SUMH
MOV SUMH,A
SJMP LOOPS
LOOPS:CLR C
INC R0
MOV A,@R0
ADD A,SUML
MOV SUML,A
INC R0
MOV A,@R0
ADDC A,SUMM
MOV SUMM,A
MOV A,SUMH
ADDC A,#0
MOV SUMH,A
MOV A,@R0
JNB ACC.7,NEXT
MOV A,0FFH
ADD A,SUMH
MOV SUMH,A
NEXT: DJNZ R7,LOOPS
CLR C
INC R0
MOV A,@R0
ADD A,SUML
MOV SUML,A
MOV A,SUMM
ADDC A,#0
MOV SUMM,A
MOV A,SUMH
ADDC A,#0
MOV SUMH,A
RET
INIT: MOV A,R7
MOV B,#2H
MUL AB
MOV R7,A
MOV R3,#0H
LOOPI:MOV A,R3
ADD A,#6H
MOVC A,@A+PC
MOV @R0,A;1 BIT
INC R0;1 BIT
INC R3;1 BIT
NEXTI:DJNZ R7,LOOPI;2 BITS
RET;1 BIT
DAT: DB 00,01,02,03,04,05,06,07
DB 78h,79h,7ah,7bh,7ch,7dh,7eh,7fh
DB 80h,81h,82h,83h,84h,85h,86h,87h
DB 0f8h,0f9h,0fah,0fbh,0fch,0fdh,0feh,0ffh
FINISH:SJMP $
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -