Wil*_*nes 6 assembly bit-shift bitwise-operators lc3
我需要做的是使用LC-3组件实现按位左移和按位右移.基本上,每个位都必须在移位方向上移动一个空间,零填充所创建的空白空间.
例子:
右移:
01001001
00100100?
Run Code Online (Sandbox Code Playgroud)
左移:
01001001
?10010010
Run Code Online (Sandbox Code Playgroud)
通过获取二进制字符串并将其添加到自身,我已成功实现了左移.
我很难理解如何进行正确的转变.任何想法将不胜感激.我有AND,NOT,ADD操作,数据移动操作,七个寄存器来存储值和整个存储器范围.我只需要一些基本的想法如何实现它.
假设您设置为R2只设置一个位.然后,如果你AND使用另一个寄存器和分支Z条件,你正在测试是否设置了该位.如果是,则要在"结果"寄存器中设置前一位.
如果您将单位寄存器移到一个位置并重复循环,那么您应该拥有所需的.
(道歉,如果这是模糊的;因为这可能是家庭作业,我试图避免给你答案)
编辑:
因此,假设您的输入为01001011.您的输出为00000000,输入掩码为00000010,输出掩码为00000001.您执行AND并发现它非零,因此您将输出掩码添加到输出.然后将两个掩码移过来获得00000100和00000010.
在下一次循环时,AND为零,因此您不添加任何内容,依此类推.当移动掩码使其为零时,循环终止.