繁体   English   中英

LC3位计数器

[英]LC3 Bit Counter

我试图弄清楚如何在LC3汇编语言中实现位计数器。 例如:输入“ 00001100001000001”,输出“ 000000000000100”,我将计算位字符串中的位数并以二进制形式输出该数值。 我知道如何一次给定一位,但是我不知道如何一次只能分析16位字符串中的一位。 谢谢。

您可以用几种不同的方法来计算LC3中存储的值的位数。

  • 您可以使用位移并计算末端“掉落”的位
  • 您可以使用位掩码来检查值中的每个位
  • 我敢肯定还有其他方法,但是它们不是很有效

就个人而言,我将使用位掩码方法,因为它既快速又有效,并且我不必担心将代码陷入困境。

一点掩码如下所示:

B_MASK  .FILL   b1000000000000000
        .FILL   b0100000000000000
        .FILL   b0010000000000000
        .FILL   b0001000000000000
        .FILL   b0000100000000000
        .FILL   b0000010000000000
        .FILL   b0000001000000000
        .FILL   b0000000100000000
        .FILL   b0000000010000000
        .FILL   b0000000001000000
        .FILL   b0000000000100000
        .FILL   b0000000000010000
        .FILL   b0000000000001000
        .FILL   b0000000000000100
        .FILL   b0000000000000010
        .FILL   b0000000000000001

现在,您要做的就是创建一个循环,将每个掩码值与您存储的值进行“与”运算。 如果对它们进行“与”运算后得到正数,则只需将1加到位计数器,然后对其余的每个掩码值重复该过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM