Сумма четных отрицательных элементов массива, имеющих нечетные индексы - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д