Что мне нужно сделать, чтобы реализовать как побитовый сдвиг влево, так и побитовый сдвиг вправо с использованием LC -3 Сборка. По сути, каждый бит должен быть перемещен на один пробел в направлении сдвига, а ноль заполняет образовавшееся пустое пространство.
Примеры:
Сдвиг вправо:
01001001
00100100→
Сдвиг влево:
01001001
←10010010
Я успешно реализовал сдвиг влево, взяв двоичную строку и добавив ее саму к себе.
Я не знаю, как выполнить сдвиг вправо. Мы будем очень признательны за любые мысли. У меня есть операции И, НЕ, ДОБАВИТЬ, операции перемещения данных, семь регистров для хранения значений и весь диапазон памяти. Мне просто нужны некоторые основные идеи, как это может быть реализовано.
Если вам нужен справочник по набору инструкций LC-3, он есть здесь.