Calculating the Average

来源:互联网 发布:哪些网游支持mac 编辑:程序博客网 时间:2024/05/16 19:02

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

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

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

stack_top   EQU 0x30200000              AREA ave,CODE,READWRITE    code32    entrystart        ldr     r0,= array            ;r0 point to the 100 num        mov     r1, #1        mov     r2, #0        ldr     sp,= stack_toparrayinit        add     r2, r1, #0        str     r2, [r0], #4        add     r1, r1, #1        cmp     r1, #101        bne     arrayinitaverageinit        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  shangetsum        ldr     r3, [r0], #4        add     r2, r2, r3        add     r1, r1, #1        cmp     r1, #101        bne     getsumaverage        mov     r1, #1        mov     r3, #0aveloop        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        ltorgarray   space   100                                     end
原创粉丝点击