如何实现8位的逻辑移位(向左)



我正在尝试确定如何使用LC-3指令集将16位(两个字节)字的最后8位(即字节)向左移动。

例如,

0000 0000 1111 1111 -> 1111 1111 0000 0000

要做左移,你所要做的就是将值添加到自身。创建一个简单的循环,重复执行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

现在明白你说的是LC-3,我找到了LC-3b微架构和这个关于指令集的演讲参考。

您需要实现逻辑转换。具体来说,这是一个合乎逻辑的左移。有许多方法可以做到这一点。

如果你懂二进制算术,你就能用一种简单的方法来做。

最新更新