2013-03-26 41 views
0

我正试图确定如何使用LC-3指令集将一个16位(两字节)字的最后8位(即字节)移到左边。如何实现8位逻辑移位(向左)?

例如,

0000 0000 1111 1111 -> 1111 1111 0000 0000 
+0

?这是在组装?你在用C吗?走?红宝石? 不知道更多,不可能说如何做到这一点。 – 2013-03-26 23:59:10

+0

@martinclayton - 是的,想通了。应该在原来的问题。 – 2013-03-27 00:03:51

+0

是的,这是程序集 – 2013-03-27 00:08:51

回答

1

现在理解你所谈论的LC-3,我发现LC-3b Miroarchitecture和引用的Instruction Set的介绍。您需要执行logical shift。具体来说是logical shift left。有很多方法可以做到这一点。

如果您了解binary arithmetic,您将可以直接进行此操作。

+0

是的先生我谈论的LC - 3。非常感谢您 – 2013-03-27 00:13:18

+0

LC3没有用于转换的任何操作码 – RyPope 2013-03-27 00:13:27

+0

RyPope - 您是正确的,它没有执行逻辑转换的说明。这就是为什么他必须自己实施它。但它确实具有执行逻辑左移和右移所需的所有基本指令。 – 2013-03-27 00:22:33

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 
您正在使用什么语言