Перенос чисел из одного массива в другой по условию - Assembler

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

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

Есть такое задание. Создать массив из 28 чисел. В каждом из этих 28 чисел проверить 0, 2 и 5 бит. Если эти три бита равны нулю, то записываем эти числа во второй массив. Как проверить биты - знаю, но как сделать цикл для проверки - не знаю. Если не ошибаюсь,то нужен примерно вот такой цикл. Помогите, пожалуйста. upd. Картинка не добавляется

Решение задачи: «Перенос чисел из одного массива в другой по условию»

textual
Листинг программы
     push ds
     pop es
     mov si,адрес_массива_1
     mov di,адрес_массива_2
     mov cx,28
a1: lodsb
     test al,00100101b
     jnz a2
     stosb
a2: loop a1

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

  1. push ds — отправляет в стек регистр ds
  2. pop es — извлекает из стека регистр es
  3. mov si,адрес_массива_1 — перемещает в регистр si адрес первого элемента массива 1
  4. mov di,адрес_массива_2 — перемещает в регистр di адрес первого элемента массива 2
  5. mov cx,28 — устанавливает в регистре cx значение 28
  6. lodsb — загружает в al байт из памяти по адресу si, и увеличивает si на 1
  7. test al,00100101b — проверяет бит 3 (2^3=8) и бит 1 (2^0=1) регистра al. Если они равны 1, то выполняется следующая инструкция (jnz).
  8. jnz a2 — если бит 3 и бит 1 регистра al равны 1, то выполняется цикл a2.
  9. stosb — записывает в память по адресу di байт из регистра al, и увеличивает di на 1
  10. loop a1 — выполняет инструкцию a1 до тех пор, пока не будет выполнено условие цикла (jnz).

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


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

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

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