.text
@冒泡排序
@排序 2,3,5,4,1
@排序4趟
@ r0=arr1指向首元素 r1=arr1+16指向最后一个元素
mov r3,#4 @排序4趟,表示趟数
nextloop:
ldr r0,=arr1 @指向首元素
add r1,r0,#16 @指向最后一个元素
again:
ldr r5,[r0],#4 @r5存放前边的元素(r0指向后一个元素)
ldr r6,[r0] @r6存放后边的元素,r0不变
cmp r5,r6 @比较r5和r6
bls notchange @若r5<=r6跳转
str r5,[r0] @否则r5>r6,将此时指向r6的元素写入r5中
str r6,[r0,#-4] @前索引 r6=*(r0-4) ,交换r5和r6的位置
notchange: @ r5<=r6
cmp r0,r1 @判断一趟排序是否结束
bne again @若r0!=r1没有结束,跳转继续比较
subs r3,r3,#1 @一趟排序结束后,趟数-1 ,判断是否结束了4趟排序
bne nextloop @没有结束,继续下一趟
nop
.end