Sorting 8051气泡排序问题
我试图在汇编程序8051上编写气泡排序。到目前为止,我已经做到了这一点,它按升序排序,但它也在移动元素,当它结束时,在第一个位置留下一个空格 一步一步地查看执行过程,我注意到SUBB没有改变C的值,这使得指令JC SKIP变得无用Sorting 8051气泡排序问题,sorting,assembly,8051,Sorting,Assembly,8051,我试图在汇编程序8051上编写气泡排序。到目前为止,我已经做到了这一点,它按升序排序,但它也在移动元素,当它结束时,在第一个位置留下一个空格 一步一步地查看执行过程,我注意到SUBB没有改变C的值,这使得指令JC SKIP变得无用 DEFSEG INICIO1,ABSOLUTE SEG INICIO1 JMP INICIO ORG 100H INICIO: MOV R1,#05H EXT: M
DEFSEG INICIO1,ABSOLUTE
SEG INICIO1
JMP INICIO
ORG 100H
INICIO: MOV R1,#05H
EXT: MOV A,R1
MOV R2,A
MOV R0,#30H
MOV A,@R0
IN: INC R0
MOV B,@R0
CLR C
SUBB A,B
JC SKIP
MOV B,@R0
DEC R0
MOV A,@R0
MOV @R0,B
INC R0
MOV @R0,A
SKIP: DJNZ R2,IN
DJNZ R1,EXT
STOP: SJMP STOP
JMP FIN
FIN:
END
至少,您需要一个等于@R0的值,但是在跳转到SKIP之后,它就不是了
尝试:
注意,初始计数5比要排序的项目数少一个。SUBB应更改C标志,请再次查看。
mov r1, #30h
mov @r1, #33h
inc r1
mov @r1, #44h
inc r1
mov @r1, #66h
inc r1
mov @r1, #22h
inc r1
mov @r1, #11h
inc r1
mov @r1, #55h
mov r3, #5
outer:
mov a, r3
mov r2, a
mov r1, #30h
mov a, @r1
inner:
inc r1
clr c
subb a, @r1
mov a, @r1
jc continue
dec r1
xch a, @r1
inc r1
mov @r1, a
continue:
djnz r2, inner
djnz r3, outer