在C++和java写过的利用循环求整数数组之和,在汇编中也很容易实现。
现在创建一个专用于统计整数数组各个元素之和的子过程,如下arraysum子过程的设计规范,要求将数组开始位置的地址放入esi寄存器,将数组元素数量放入ecx,然后调用arraysum过程,就可以做数组元素合计,合计结果放在eax寄存器。
.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword
.data
thearray dword 1000h, 1000h, 1000h, 1000h, 1000h, 1000h, 1000h, 1000h
theresult dword 0
.code
main proc
push esi
push ecx
nop
mov esi, offset thearray ;数组首地址。
mov ecx, lengthof thearray ;数组的元素数量。
call arraysum
mov theresult, eax
pop ecx
pop esi
invoke ExitProcess,0
main endp
arraysum proc
mov eax, 0
L1: add eax, [esi]
add esi, type dword ;可以自动返回dword的字节数量:4,因为thearray是4字节数组。
loop L1
ret
arraysum endp
end main