Как реализовать логический сдвиг (влево) на 8 бит?
Я пытаюсь определить, как сдвинуть последние 8 бит (т.е. байт) 16-битного (двухбайтового) слова влево, используя набор инструкций LC-3.
Например,
0000 0000 1111 1111 -> 1111 1111 0000 0000
2 ответа
Решение
Теперь, когда вы поняли, что вы говорите о LC-3, я обнаружил, что в Miroarchitecture LC-3b есть ссылка на этот набор инструкций.
Вам необходимо реализовать логический сдвиг. Конкретно логический сдвиг влево. Есть несколько способов сделать это.
Если вы понимаете двоичную арифметику, вы сможете сделать это простым способом.
Чтобы сделать сдвиг влево, все, что вам нужно сделать, это добавить значение к себе. Создайте простой цикл, чтобы сделать это 8 раз.
Что-то вроде
LD R1, count
loop
LD R0, word
ADD R0, R0, R0 ;Left Shift
ADD R1, R1, -1 ;Decrement shift counter
BRp loop ;We still have shifts, go back to loop
HALT
count .fill #8