Найти сумму всех элементов массива - 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

Объяснение кода листинга программы

  1. mov esi, mass — в данном коде это означает, что содержимое переменной mass копируется в регистр ESI.
  2. xor ebx, ebx — это значит, что содержимое регистра EBX устанавливается в ноль.
  3. mov ecx, 10 — в данном случае, в регистр ECX записывается число 10.
  4. lodsd — это команда, которая загружает одно 32-битное значение из памяти в регистр EAX.
  5. add ebx, eax — это значит, что содержимое регистра EBX увеличивается на значение из регистра EAX.
  6. loop start — это команда, которая выполняет цикл до тех пор, пока значение в регистре ECX больше нуля.
  7. mov eax,ebx — это значит, что содержимое регистра EBX копируется в регистр EAX.
  8. mov sum, eax — это значит, что содержимое регистра EAX копируется в переменную sum.

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


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

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

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