LC3循环并测试一个字中的大部分位

时间:2014-12-07 22:50:53

标签: lc3

所以我有一个词,我想循环并测试最左边的位。我接受了我的话,我将它传递给我的子程序,我知道如何构建一个循环,我只是不确定如何测试单词中最左边的位。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是使用位屏蔽 - 在要检查的字之间执行按位AND,并在要测试的任何位置执行1位掩码。即二进制:

my word:   11
bitmask:   10
         & ==
           10

你可以看到左侧的1号掉出来了。所以在16位数字上做类似的事情:

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

这里需要注意的重要一点是,如果该位不存在,则AND返回0,如果该位存在,则返回其他内容。无论它是什么,只是它不是零。

答案 1 :(得分:0)

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