addarray: pusha mov edi, 0; инициализировать счетчик для 0 mov esi, 0; инициализировать аккумулятор к 0 mov ecx, 0; обнулить ecx и edx mov edx, 0
mov ebx, [ebp] ;moves starting location of array1 into ebx
mov edi, [ebp+12] ;move quantity into edi
fld qword [ebx]
add_loop: addebx, 8 fld qword [ebx]; Второй вход теперь находится в регистре с плавающей запятой, в частности st0.
fadd ;The first input is added to the second input and the sum
;replaces the second input in st0
inc esi ;increment counter
cmp edi, esi ;compare to see if all values have been added
jz add_done
jmp add_loop
add_done: call print_nl mov eax, summessage; Настройка для отображения сообщения вызова print_string; Dr,Библиотека Картера
add ebx, 8 ;increment to not overwrite any values
fstp qword [ebx] ;Copy contents of st0 to space currently on top of the system stack
mov ecx, [ebx]
mov edx, [ebx+4]