Найти сумму всех элементов массива - Assembler
Формулировка задачи:
Собственно задание найти сумму всех элементов массива, на форуме находил много похожего , но почему-то ничего не работает должным образом
массив { 5, -2, 5, 4, -5, -9, 0 , 1, -9, 7}; т.е. в результате сложения должно получится -3
вот код по идее должен работать корректно
и еще вопрос по среднему арифметическому и сравнению его, но это после суммы если разберусь как она работает возможно вопрос отпадет..
__asm { lea esi, mass //все равно что mov esi, offset mass xor eax, eax // обнуляем регистр mov ebx,eax mov ecx, 10 // счетчик цикла start: mov bx, [esi] //записываем в bx число лежащее в индексе esi add eax,ebx // складываем inc esi // увеличиваем индекс loop start mov sum, eax // записываем P.S. не совсем уверен что должно быть источником для записи в переменную при bx результат 2 , при остальных большие числа }
Решение задачи: «Найти сумму всех элементов массива»
textual
Листинг программы
mov esi, mass xor ebx, ebx mov ecx, 10 start: lodsd add ebx, eax loop start mov eax,ebx mov sum, eax
Объяснение кода листинга программы
- mov esi, mass — в данном коде это означает, что содержимое переменной
mass
копируется в регистр ESI. - xor ebx, ebx — это значит, что содержимое регистра EBX устанавливается в ноль.
- mov ecx, 10 — в данном случае, в регистр ECX записывается число 10.
- lodsd — это команда, которая загружает одно 32-битное значение из памяти в регистр EAX.
- add ebx, eax — это значит, что содержимое регистра EBX увеличивается на значение из регистра EAX.
- loop start — это команда, которая выполняет цикл до тех пор, пока значение в регистре ECX больше нуля.
- mov eax,ebx — это значит, что содержимое регистра EBX копируется в регистр EAX.
- mov sum, eax — это значит, что содержимое регистра EAX копируется в переменную
sum
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д