[masm32] Записать в массив2 только те элементы из массива1, которые больше суммы чётных элементов массива1 - Assembler
Формулировка задачи:
Здравствуйте.
Я тут попробовал написать функцию на masm32, которая сначала вычисляет сумму четных элементов массива1, а потом записывает в массив2 только те элементы из массива1, которые больше суммы четных элементов. Проблема в том, что у меня программа компилируется, но крашится после вызова моей функции.
Можете помочь мне найти ошибки в моем коде?
Part2 proc FirstArray:DWORD, Number:DWORD, ResultArray:DWORD
pushad
mov esi, [FirstArray]
mov ecx, [Number]
xor ebx,ebx
m1:
mov EDX, [esi+ecx*4-4]
test EDX,1
jnz m3
add ebx,EDX
jmp m3
m3:
dec ecx
jcxz m2
loop m1
m2:
mov esi, [ResultArray]
mov edi, [FirstArray]
mov ecx, [Number]
m4:
mov edx, [edi+ecx*4]
cmp edx, ebx ; IF (FirstArray> Sum)
jg m5
dec ecx
jcxz Exit
loop m4
m5:
mov edx, [edi+ecx*4-4]
mov [esi + ecx*4-4], edx
jmp m4
Exit:
popad
ret
Part2 endpРешение задачи: «[masm32] Записать в массив2 только те элементы из массива1, которые больше суммы чётных элементов массива1»
textual
Листинг программы
.data? Result dd 100 dup(?) LenResult dd ? ....... .code ........... invoke Process, ADDR Array, [N], ADDR Result, ADDR LenResult .........