所以我正在开发 LC3 中的一个程序,但我遇到了屏蔽问题。我可以创建一个适当长度的所有 1 的掩码,很好地将所有内容转移到适当的字段,但是一旦我完成 AND 比较,我就无法将事情转移回右侧。你如何在 LC3 中右移?我在迭代比较中看到了一些东西,但我不知道如何比较不同位置的位,并且要在相同位置比较它们,无论如何我最终都必须向右移动一个。我错过了什么吗?
问问题
2400 次
2 回答
0
要模拟右移,您只需要制作两个掩码,一个用于源位,一个用于目标位:
src_mask=0x04; // read from bit position 2
dst_mask=0x01; // write to bit position 0
while(src) { // or while src_mask, because that too will eventually go to zero
if (src & src_mask) dst+=dst_mask; // or dst|=dst_mask
src &= (~src_mask);
dst_mask=dst_mask+dst_mask;
src_mask=src_mask+src_mask;
}
于 2012-10-16T11:22:54.793 回答
0
在这种情况下,您可能根本不需要右移 - 只需在左移之前保存起始字段,然后再从内存中恢复它。
于 2012-10-17T18:23:45.270 回答