Сумма четных отрицательных элементов массива, имеющих нечетные индексы - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите с реализацией программы на masm32 .486 Уже набросал небольшой код , но в нем есть конечно же огромные недостатки в виде переходов JS , jp, jnp - которые я использовал не по назначению и хотел бы попросить совета как их исправить, заранее благодарен за помощь.
.data 
massiv dd 1,2,-4,-3,-5,-6,-4,-2,-1,-2 ; массив
 
.code
 
xor eax,eax
xor esi,esi
xor ecx,ecx
 
na4alo:
cmp ecx,11
jge result
inc ecx ; в ecx 1 = индекс
mov eax,massiv[esi] ; в eax 1-ый элемент массива .
cmp eax,eax
jp otricTest ; если четный прыгает на OtricTest  
add esi,4 ; else следующий элемент и
jmp na4alo ; прыгаем на начало

otricTest:
cmp eax,eax
js Index ; если отрицательный прыгаем и проверяем index на нечетность
add esi,4 ; else следующий элемент и
jmp na4alo ; прыгаем на начало

Index: ; тест на нечет индекс
cmp eax,eax
jnp PlusRez ; если и индекс нечет - добавляем в результат 
add esi,4 ; else следующий элемент и
jmp na4alo ; прыгаем на начало
 
PlusRez:
add ebx,eax
cmp ecx,10 ; если 10-ый элемент то заканчиваем программу выводя ebx в результат.
jge result ; если больше или равен
add esi,4 ; если проверили не весь массив - прыгаем в начало с новым элементом.
jmp na4alo ; 

; Меняем имя регистра на имя в котором находится ваш результат
    result:
    mov Result,ebx
 
PUSH Result ; вывода результата на экран.
Упс, не написал суть программы. В массиве нахожу сумму отрицательных Четных элементов массива с нечетными индексами.
Массив - massiv dd -2,-1,-3,-4,-5,6,-7,-8,-2,-4
xor eax,eax
xor esi,esi
xor ecx,ecx
xor ebx,ebx
 
na4alo:
cmp ecx,10
jge result
inc ecx ; в ecx 1 = индекс
mov eax,massiv[esi] ; в eax 1-ый элемент массива .
cmp eax,eax
jp otricTest ; если четный прыгает на OtricTest  
add esi,4 ; else следующий элемент и
jmp na4alo ; прыгаем на начало

otricTest:
cmp eax,0
jl Index ; если отрицательный элемент прыгаем и проверяем index на нечетность
add esi,4 ; else следующий элемент и
jmp na4alo ; прыгаем на начало

Index: ; тест на нечет индекс
cmp ecx,ecx
jnp PlusRez ; если и индекс нечет - добавляем в результат 
add esi,4 ; else следующий элемент и
jmp na4alo ; прыгаем на начало
 
PlusRez:
inc ebx
cmp ecx,10 ; если 10-ый элемент то заканчиваем программу выводя ebx в результат.
jge result ; если больше или равен
add esi,4 ; если проверили не весь массив - прыгаем в начало с новым элементом.
jmp na4alo ; 

; Меняем имя регистра на имя в котором находится ваш результат
    result:
    mov Result,ebx
Исправил немного код. В ответе должно быть 2-а, а выводит 0-ь :/

Решение задачи: «Сумма четных отрицательных элементов массива, имеющих нечетные индексы»

textual
Листинг программы
test eax, 1
jz otricTest

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы