Я хотел бы знать, как сделать следующее.
У меня есть массив, где я должен суммировать числа (легко)
но поворот в том, что мне нужно иметь вызов функции для этого,
что получить это params через конкретные регистры. Как мне это реализовать?
В этом случае функция должна получить массив (смещение) через ESI, а длину - через ECX.
пожалуйста, просветите меня
РЕДАКТИРОВАТЬ:
тем временем я наколдовал это. Не знаю, сработает ли это, поскольку мой MASM-компилятор просто сломался без причины
.data
intarray DWORD 10000h,20000h,30000h,40000h
.code
szummer proc uses esi ecx,
ptrArray:PTR DWORD, ;points to the array
szArray: Dword ;array size
mov esi, ptrArray ;address of the array
mov ecx, szArray ;szize
mov eax, 0 ;set to 0
AS1:
add eax, [esi] ;add each int to sum
add esi, 4 ;point to next int
loop AS1 ;reapet for array size
ret;
szummer endp
main proc
mov ecx, OFFSET intarray
mov esi, LENGHTOF intarray
INVOKE ArraySum,ecx,esi
invoke ExitProcess,0
main endp
end main