我想在HACK汇编中进行位旋转(nand2tetris)。例如:11110000变为:11100001我该怎么做呢?我看到普通汇编有这样做的rol语法,但我找不到一个用于HACK汇编
inb24sb21#
这个答案在本质上是苏格拉底式的,因为Nand2Tetris的目的是学习东西,如果你自己弄清楚了,你会学到更多。HACK中没有ROL指令,所以你必须从你现有的东西中构建它。这里有一些问题要问自己:
如果需要对小于完整字(16位)的值执行ROL,我建议您解决完整字的问题,然后调整它以处理所需的位长度。
aor9mmx12#
首先检查msb。如果a〈0,则Nand 2 Tetris使用2的补码,msb = 1,否则(a〉= 0)msb = 0保留msb 0或1并且,左移意味着乘以2,a * 2 -〉D = D + D或D = D + M丢弃溢出最后,添加保持MSB值…
2条答案
按热度按时间inb24sb21#
这个答案在本质上是苏格拉底式的,因为Nand2Tetris的目的是学习东西,如果你自己弄清楚了,你会学到更多。
HACK中没有ROL指令,所以你必须从你现有的东西中构建它。这里有一些问题要问自己:
如果需要对小于完整字(16位)的值执行ROL,我建议您解决完整字的问题,然后调整它以处理所需的位长度。
aor9mmx12#
首先检查msb。如果a〈0,则Nand 2 Tetris使用2的补码,msb = 1,否则(a〉= 0)msb = 0
保留msb 0或1
并且,左移意味着乘以2,a * 2 -〉D = D + D或D = D + M丢弃溢出
最后,添加保持MSB值…