В заданной конечной последовательности целых чисел найти сумму элементов кратных 7 - Assembler

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

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

В заданной конечной последовательности целых чисел найти сумму элементов кратных 7. Я ломаю голову, это же по сути массив я его создал
А потом задумался, как мне проверять все элементы на кратность 7, я просто не знаю помогите, это надо проверять по сути каждый элемент массива, а как это сделать в ассемблере?Все делается на ASM32

Решение задачи: «В заданной конечной последовательности целых чисел найти сумму элементов кратных 7»

textual
Листинг программы
mov ebx,7
mov ecx,<длина массива>
lea esi,Result
cld
M:lodsq
  mov edi,eax
  cdq
  div ebx
  test edx,edx
  jnz NoZ
  add Result,edi
  NoZ:loop M

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

  1. mov ebx,7 - в этой строке кода происходит перенос числа 7 в регистр ebx.
  2. mov ecx,<длина массива> - в эту строку кода происходит перенос длины массива в регистр ecx.
  3. lea esi,Result - в эту строку кода происходит загрузка адреса переменной Result в регистр esi.
  4. cld - в эту строку кода происходит установка флага направления в 1, что означает, что операции деления и остатка от деления будут выполняться в прямом порядке.
  5. M:lodsq - в эту строку кода происходит загрузка квадратного корня из числа, которое хранится в регистре ecx, в регистр edi.
  6. mov edi,eax - в эту строку кода происходит перенос значения регистра eax в регистр edi.
  7. cdq - в эту строку кода происходит преобразование значения регистра edi в двузначное целое число, при этом старший бит (единицы до 7-го бита) очищается.
  8. div ebx - в эту строку кода происходит деление значения регистра edi на число, которое хранится в регистре ebx. Результат деления сохраняется в регистре edx.
  9. test edx,edx - в эту строку кода происходит проверка, не равно ли значение регистра edx нулю.
  10. jnz NoZ - если значение регистра edx не равно нулю, то происходит переход к метке NoZ.
  11. add Result,edi - в эту строку кода происходит добавление значения регистра edi к значению переменной Result.
  12. NoZ:loop M - если значение регистра edx равно нулю, то происходит переход к началу цикла M. Список не содержит 20 элементов, поскольку в коде отсутствуют некоторые строки.

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


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

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

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