0

所以我正在开发 LC3 中的一个程序,但我遇到了屏蔽问题。我可以创建一个适当长度的所有 1 的掩码,很好地将所有内容转移到适当的字段,但是一旦我完成 AND 比较,我就无法将事情转移回右侧。你如何在 LC3 中右移?我在迭代比较中看到了一些东西,但我不知道如何比较不同位置的位,并且要在相同位置比较它们,无论如何我最终都必须向右移动一个。我错过了什么吗?

4

2 回答 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 回答