所以我正在研究LC3中的一个程序,我遇到了屏蔽问题。我很好地创造了一个适当长度的所有1的面具,精细地将所有东西移动到适当的区域,但是在我完成AND比较之后,我不能为我的生活转移到右边。你如何在LC3中转右?我在迭代比较中看到了一些东西,但我不知道如何比较不同位置的位,并且在相同的位置比较它们,我最终还是必须将一个位置向右移动。我错过了什么吗?
答案 0 :(得分: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;
}
答案 1 :(得分:0)
你可能根本不需要在这种情况下进行右移 - 只需在将其向左移动之前保存起始区域,然后将其从内存中恢复。