Как в слове заменить определенную комбинацию?

Рейтинг: 1Ответов: 2Опубликовано: 24.03.2015

Есть задание:
Заменить в заданном слове комбинации 1011 на комбинации 1101.

Понятно, что будет цикл.

Как я могу обратится к младшим 4 разрядам 8-разрядного регистра (к примеру, Al)?
Как мне затем выполнить замену значений?

Ответы

▲ 2Принят
  1. Для обращения к младшим разрядам нужно выполнить операцию and с маской 1111 в бинарном представлении.
  2. Замену значений можно выполнить операцией xor с маской 0110 (т.к. мы знаем, что на этом месте у числа находится 1011).
▲ 1

Если выровнено по 4 бита, то можно без циклов сделать 4 проверки, если по любому смещению, то сохраняем оригинал, устанавливаем маску в 110(bin), делаем цикл до 12(dec), проверяем при and $0f(hex) на равенство 1011(bin), при равенстве ксорим маску с оригиналом, потом сдвигаем с помощью shr, например, а маску с помощью shl и зацикливаем.