Assembly 如何求DWORD数组的均值

Assembly 如何求DWORD数组的均值,assembly,masm,irvine32,Assembly,Masm,Irvine32,对于我的赋值,我需要添加DWORD数组的元素,然后找到平均值并将其放入ebx寄存器 TITLE Assignment 2 INCLUDE Irvine32.inc .data array1 DWORD 10h,20h,30h,40h,11h,12h,16h,14h,18h,22h,96h,44h,89h,17h,94h,27h,16h,82h, 33h N = ($ - array1)/4 .STACK 4096 ExitProcess PROTO, dwExitCode:DWORD

对于我的赋值,我需要添加DWORD数组的元素,然后找到平均值并将其放入ebx寄存器

TITLE Assignment 2



INCLUDE Irvine32.inc
.data
array1  DWORD   10h,20h,30h,40h,11h,12h,16h,14h,18h,22h,96h,44h,89h,17h,94h,27h,16h,82h, 33h
N = ($ - array1)/4
.STACK 4096
ExitProcess PROTO, dwExitCode:DWORD 
DumpRegs PROTO
.code
   main PROC
    mov esi, OFFSET array1
    mov ecx, N
    mov eax, array1
    loop_start:
    add eax,[esi]
    add esi,4
    dec ecx
    jnz loop_start
    call DumpRegs
    INVOKE ExitProcess, 0   

main ENDP
END main

我已经找到了数组的和,但除法让我感到困惑。从我所读到的内容来看,它包括将edx设置为0,然后使用div命令。如何处理除法以及将除法放在代码中的什么位置?

此指令
mov-eax,array1
需要更改为
mov-eax,0
(或
xor-eax,eax

jnz loop\u start

xor edx,edx
mov ecx, N
div ecx

现在EAX保存平均值,EDX保存除法的剩余部分。

您应该将其放置在您想要进行除法的位置。试试看会发生什么。您的计算机不会爆炸,但EBX需要保持mean@Josamoda:然后将值放入EBX:
mov EBX,eax