2014-12-07 81 views
0

所以我有一个词,我想循环并测试最左边的位。我有我的话,我把它传递给我的子程序,我知道如何建立一个循环,我只是不知道如何测试单词中最左边的位。LC3循环并测试一个字中的最左位

感谢所有帮助

回答

0

要做到这一点,最好的办法是位掩码 - 执行按位与您要检查的单词,并在您希望测试的任何位置有1位掩码之间。即以二进制形式:

my word: 11 
bitmask: 10 
     & == 
      10 

你可以看到左侧的1丢失。所以,做一个16位的号码类似的东西:

0x0230 & 0x8000 = 0x0000 
0xC020 & 0x8000 = 0x8000 != 0x0000 

这里要注意的重要一点是,如果该位是不存在的,并返回一个0,如果该位出现时,它返回别的东西。不管它是什么,只是它不是零。

0

不确定它是否适用于您的特定任务,但是一个简单的方法可能会执行逻辑/算术左移。这可以简单地通过将单词添加到它自己来完成(等于乘以2,从而将所有的位移到左边的1“位置),完成后,条件代码将被设置(假设您正在使用GPR ),并且可以通过检查移位字是正的还是零(因此最左边的位是0)或负的(因此最左边的位是1)来测试最左边的位是1还是0。按照这种方法循环整个单词,你就可以确定你的单词中每一位的值。希望这有助于你。