如何通过8位实现逻辑移位(向左)?

时间:2013-03-26 23:54:03

标签: binary lc3

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

例如,

0000 0000 1111 1111 -> 1111 1111 0000 0000

2 个答案:

答案 0 :(得分:1)

现在明白你在谈论LC-3,我发现了LC-3b Miroarchitecture以及Instruction Set引用的这个演示文稿。

您需要实施logical shift。特别是logical shift left。有很多方法可以做到这一点。

如果您理解binary arithmetic,您将能够以直截了当的方式做到这一点。

答案 1 :(得分:1)

要进行左移,您只需将值添加到自身。创建一个简单的循环来执行此操作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