用汇编实现冒泡排序的例程:
AREA Sort,CODE,READONLYENTRY
start
MOV r4,#0
LDR r6,=src
ADD r6,r6,#len
outer
LDR r1,=src
inner
LDR r2,[r1]
LDR r3,[r1,#4]
CMP r2,r3
STRGT r3,[r1]
STRGT r2,[r1,#4]
ADD r1,r1,#4
CMP r1,r6
BLT inner
ADD r4,r4,#4
CMP r4,#len
SUBLE r6,r6,#4
BLE outer
stop
MOV r0,#0x18
LDR r1,=0x20026
SWI 0x123456
AREA Array,DATA,READWRITE
src DCD 2,4,10,8,14,1,20
len EQU 7*4
END
这是一个冒泡排序问题,如果pc值一开始为0x30100058,则r6为74, 经过内循环和外循环得到结果从58开始的为00 01 02 04 08 0a,0e,14,从而衍生出一个00,所以改程序7*4为6*4,因为20前面只有6个字啊,这时得到从58开始的为01 02 04 08 0a,0e,14