Сумма четных отрицательных элементов массива, имеющих нечетные индексы - Assembler
Формулировка задачи:
Помогите с реализацией программы на masm32 .486
Уже набросал небольшой код , но в нем есть конечно же огромные недостатки в виде переходов JS , jp, jnp - которые я использовал не по назначению и хотел бы попросить совета как их исправить, заранее благодарен за помощь.
Исправил немного код. В ответе должно быть 2-а, а выводит 0-ь :/
Листинг программы
- .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
Решение задачи: «Сумма четных отрицательных элементов массива, имеющих нечетные индексы»
textual
Листинг программы
- test eax, 1
- jz otricTest
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д