Assembly 如何求DWORD数组的均值
对于我的赋值,我需要添加DWORD数组的元素,然后找到平均值并将其放入ebx寄存器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
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