我目前正在研究一种汇编语言程序,该程序需要我对数组中的值求和并找到平均值。我已经成功地使用循环找到了总和,但是求平均值的关键是不能使用除法指令。因此,我的逻辑是从总和中减去数组的大小,直到达到负数为止。完成的次数是一个计数器,应该是我的平均值。
我在语法上苦苦挣扎。在第二个循环中,我想进行减法运算,并在每次执行此操作时更新计数器,直到达到负数为止。
到目前为止,这是我的程序:
Include Irvine32.inc
.data
intarray dword 100, -30, 25, 14, 35, -92, 82, 134, 193,
99, -24, 1, -5, 30, 35, 81, 94, 143
.code
main PROC
mov EDI,OFFSET intarray ; EDI = address of intarray
mov ECX,LENGTHOF intarray ; initialize loop counter/ to know the number of elements in the array
mov EAX,0 ; sum = 0
L1: ; this first loop L1 gets the sum of values in the array.
add EAX,[EDI] ; add an integer
add EDI,TYPE intarray ; point to the next element
loop L1 ; loop through until ECX = 0
L2: ; this second loop L2 will compute the average.
; My logic to this loop is to subtract the size from the sum
; continuously until it becomes a negative number.
; the count of how many times this is done will be the average.
mov ECX,0 ; loop counter
add EBX,EAX
sub EBX,LENGTHOF intarray
loop L2
call dumpregs
INVOKE ExitProcess,0
main ENDP
END main
非常感谢您提供任何提示和建议来帮助我解决此问题。