我正试图确定如何使用LC-3指令集将一个16位(两字节)字的最后8位(即字节)移到左边。如何实现8位逻辑移位(向左)?
例如,
0000 0000 1111 1111 -> 1111 1111 0000 0000
我正试图确定如何使用LC-3指令集将一个16位(两字节)字的最后8位(即字节)移到左边。如何实现8位逻辑移位(向左)?
例如,
0000 0000 1111 1111 -> 1111 1111 0000 0000
现在理解你所谈论的LC-3,我发现LC-3b Miroarchitecture和引用的Instruction Set的介绍。您需要执行logical shift。具体来说是logical shift left。有很多方法可以做到这一点。
如果您了解binary arithmetic,您将可以直接进行此操作。
是的先生我谈论的LC - 3。非常感谢您 – 2013-03-27 00:13:18
LC3没有用于转换的任何操作码 – RyPope 2013-03-27 00:13:27
RyPope - 您是正确的,它没有执行逻辑转换的说明。这就是为什么他必须自己实施它。但它确实具有执行逻辑左移和右移所需的所有基本指令。 – 2013-03-27 00:22:33
要完成左移,您只需将值添加到自身。创建一个简单的循环来完成这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
您正在使用什么语言
?这是在组装?你在用C吗?走?红宝石? 不知道更多,不可能说如何做到这一点。 – 2013-03-26 23:59:10
@martinclayton - 是的,想通了。应该在原来的问题。 – 2013-03-27 00:03:51
是的,这是程序集 – 2013-03-27 00:08:51