У меня возникли проблемы с добавлением массива, но по введенным индексам. Например, пользователь вводит 4 в качестве начального и 6 в качестве конечного массива, поэтому мне придется перебрать массив [4] в массив [6] и добавить числа включительно. Я не уверен, смогу ли я использовать свой массив в .data в моей процедуре ArraySum. Должен ли я как-то впихнуть его в процедуру?
Для этого я использую внешнюю библиотеку Кипа Ирвина.
Мой код здесь:
TITLE Assignment 7
INCLUDE Irvine32.inc
.data
str1 BYTE "The array sum is: ",0
start BYTE "Enter the Starting Index: ",0
endinx BYTE "Enter the Ending Index: ",0
array DWORD 4, 6, 2, 5, 6, 7, 8, 4
sum DWORD ?
j DWORD ?
k DWORD ?
.code
main PROC
mov esi, OFFSET array
mov ecx, LENGTHOF array
mov edx, OFFSET start
call WriteString
call ReadInt
mov j, eax
mov esi, j
mov edx, OFFSET endinx
call WriteString
call ReadInt
mov k, eax
mov ecx, k
call ArraySum
mov sum,eax
call WriteInt
main ENDP
;---------------------------------------------------
ArraySum PROC
;sums an array falling within j..k inclusive
;---------------------------------------------------
push esi
push ecx
mov eax, 0
L1:
add eax, array[esi]
add esi, TYPE DWORD
loop L1
pop ecx
pop esi
ret
ArraySum ENDP
END main