【问题标题】:How to implement a logical shift (to the left) by 8 bits?如何实现 8 位的逻辑移位(向左)?
【发布时间】:2013-03-26 23:54:02
【问题描述】:

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

例如,

0000 0000 1111 1111 -> 1111 1111 0000 0000

【问题讨论】:

  • 您使用什么语言?这是在组装吗?你在用C吗?去?红宝石?不知道更多,就不可能说怎么做。
  • @martinclayton - 是的,想通了。应该在原始问题中。

标签: binary lc3


【解决方案1】:

现在了解到您在谈论 LC-3,我发现 LC-3b Miroarchitecture 和 Instruction Set 上的此演示文稿被引用。

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

如果您了解binary arithmetic,您将能够以简单的方式做到这一点。

【讨论】:

  • RyPope - 你说得对,它没有执行逻辑移位的指令。这就是为什么他必须自己实施它。但它确实具有实现逻辑左移和右移所需的所有基本指令。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 2014-12-04
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2022-11-15
    • 1970-01-01
    相关资源
    最近更新 更多