我正在尝试确定如何使用LC-3指令集将16位(双字节)字的最后8位(即字节)向左移位。
例如,
0000 0000 1111 1111 -> 1111 1111 0000 0000
答案 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