;測試ArraySum過程
.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
.data
array DWORD 10000h,20000h,30000h,40000h,50000h
theSum DWORD ?
.code
main PROC
mov esi,OFFSET array ;ESI指向數組
mov ecx,LENGTHOF array ;ECX=數組計數器
call ArraySum ;計算和數
mov theSum,eax ;用EAX返回和數
INVOKE ExitProcess,0
main ENDP
;---------------------------------------------
;ArraySum
;計算32位整數數組之和
;接受:ESI=數組偏移量
; ECX=數組元素個數
;返回:EAX=數組元素之和
;---------------------------------------------
ArraySum PROC
push esi
push ecx ;保存esi以及ecx
mov eax,0
;設置和數爲零
L1:
add eax,[esi]
add esi,type DWORD ;由於數組定義爲DWORD 所以在遞增計數器的時候一次性增加四個字節但是爲了不出錯起見 使用了type運算符
loop L1 ;按照數組大小重複進行計算
pop esi
pop ecx ;寄存器數值復位
ret ;函數結束並返回
ArraySum ENDP ;過程結束標誌
END ;程序結束
017.數組求和函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.