给定100的数据,计算这100个数据的平均值
方法:space创建连续的内存空间,存储100个数据,首先计算这100个数据的和作为被除数,使用移位和减法来计算除法,得到商和余数

二进制除法
将被除数和除数当做二进制,被除数每次左移1位,和除数作减法

算法流程
1)将商和余数清零
2)将被除数左移1位到余数中
3)余数和除数作减法
4)若所得结果为负数,则将商的最低位置零;
若所得结果为正数或零,则将商的最低位置1,并且将所得结果存入余数中
5)判断是否达到循环的次数(循环的次数,即数据的位数)
6)若达到循环的次数,退出,得到结果
若没有达到循环的次数,将商值左移1位,余数左移1位,继续进行步骤2

0x30200000          

AREA ave,CODE,READWRITE
code32
entry
start
ldr r0,= array ;r0 point to the 100 num
mov r1, #1
mov r2, #0
ldr sp,= stack_top
arrayinit
add r2, r1, #0
str r2, [r0], #4
add r1, r1, #1
cmp r1, #101
bne arrayinit
averageinit
ldr r0,= array
mov r1, #1
mov r2, #0 ;r2 point to the dividend beicu
mov r3, #0 ;r3 point to the ramainder yu
mov r4, #0 ;r4 point to the quotient shan
getsum
ldr r3, [r0], #4
add r2, r2, r3
add r1, r1, #1
cmp r1, #101
bne getsum
average
mov r1, #1
mov r3, #0
aveloop
movs r2, r2, lsl#1
addcs r3, r3, #1
subs r5, r3, #100
biccc r4, r4, #1
orrcs r4, r4, #1
movcs r3, r5
add r1, r1, #1
cmp r1, #33
movne r4, r4, lsl#1
movne r3, r3, lsl#1
bne aveloop
stop
b stop

ltorg
array space 100