【问题标题】:Right shift using iteration in LC3在 LC3 中使用迭代右移
【发布时间】:2012-10-05 04:09:13
【问题描述】:

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

【问题讨论】:

    标签: logic bit-manipulation mask lc3


    【解决方案1】:

    要模拟右移,你只需要制作两个掩码,一个用于源位,一个用于目标位:

    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;
    }
    

    【讨论】:

      【解决方案2】:

      在这种情况下,您可能根本不需要进行右移 - 只需在左移之前保存起始字段,然后再从内存中恢复它。

      【讨论】:

        猜你喜欢
        • 2012-04-22
        • 2016-03-10
        • 1970-01-01
        • 2015-11-28
        • 2016-03-28
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 2016-03-13
        相关资源
        最近更新 更多