Перенос чисел из одного массива в другой по условию - 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
Объяснение кода листинга программы
- push ds — отправляет в стек регистр ds
- pop es — извлекает из стека регистр es
- mov si,адрес_массива_1 — перемещает в регистр si адрес первого элемента массива 1
- mov di,адрес_массива_2 — перемещает в регистр di адрес первого элемента массива 2
- mov cx,28 — устанавливает в регистре cx значение 28
- lodsb — загружает в al байт из памяти по адресу si, и увеличивает si на 1
- test al,00100101b — проверяет бит 3 (2^3=8) и бит 1 (2^0=1) регистра al. Если они равны 1, то выполняется следующая инструкция (jnz).
- jnz a2 — если бит 3 и бит 1 регистра al равны 1, то выполняется цикл a2.
- stosb — записывает в память по адресу di байт из регистра al, и увеличивает di на 1
- loop a1 — выполняет инструкцию a1 до тех пор, пока не будет выполнено условие цикла (jnz).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д