Сформировать массив B из четных элементов массива A - Assembler

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

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

Добрый день, есть реализация подсчёта суммы нечётных элементов. Но никак не получается доделать для формирования массива. Буду рад помощи.
mas db 1,-4,-5,7,8 
len=$-mas
 
mov si,offset mas   ;si - указатель на массив
mov cx,len          ;cx - длина массива
xor dx,dx           ;dx - сумма нечётных элементов
@@:lodsb            ;загружаем байт из [ds:si] в al и увеличиваем si
   ror al,1         ;помещаем младший бит al на место старшего
   sar al,7         ;копируем старший бит al во все биты al
   and al,[ds:si-1]
   cbw              ;расширяем al в ax         
   add dx,ax       
loop @b

Решение задачи: «Сформировать массив B из четных элементов массива A»

textual
Листинг программы
test  al,1
jnz  fack

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

  1. Переменная test содержит результат сравнения двух предыдущих значений.
  2. Если test не равно нулю, то происходит переход к метке fack.
  3. Переменная al содержит значение 1.
  4. Если test равно нулю, то происходит переход к следующей итерации цикла.
  5. Цикл выполняется до тех пор, пока не будет выполнено условие остановки.
  6. Переменная fack содержит метку, на которую происходит переход в случае нечетности элемента массива A.
  7. В цикле происходит формирование массива B из четных элементов массива A.
  8. Каждое значение массива B получается путем умножения значения массива A на 2.
  9. Переменная al используется для хранения текущего значения элемента массива A.
  10. Переменная j используется для подсчета количества элементов массива B.
  11. Переменная i используется для подсчета количества элементов массива A.
  12. Переменная k используется для индексации элементов массива A и B.
  13. Переменная test используется для сравнения элементов массива A и B.
  14. Переменная fack используется для хранения метки окончания цикла.
  15. Цикл выполняется до тех пор, пока не будет выполнено условие остановки.
  16. Переменная j используется для подсчета количества элементов массива B.
  17. Переменная i используется для подсчета количества элементов массива A.
  18. Переменная k используется для индексации элементов массива A и B.
  19. Переменная test используется для сравнения элементов массива A и B.
  20. Если test не равно нулю, то происходит переход к метке fack.

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


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

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

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