Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 数字下2的一次幂_Assembly_Bit Manipulation_Pic - Fatal编程技术网

Assembly 数字下2的一次幂

Assembly 数字下2的一次幂,assembly,bit-manipulation,pic,Assembly,Bit Manipulation,Pic,以下代码段是一名学生尝试在PIC汇编中编写查找表的代码。这个 代码应该返回数字N下2的一次幂。所以对于值10,答案是 应该是8,对于7,应该是4 nop nop retlw 8 Nop Nop Nop retlw 4 Nop retlw 2 Nop retlw 0 lesspow subwf PCL, F 我怎么能用一个子程序重写上面的代码,这个子程序使用除add和add之外的任何指令 减去 这是你的家庭作业: lesspow: movwf temp clrc r

以下代码段是一名学生尝试在PIC汇编中编写查找表的代码。这个 代码应该返回数字N下2的一次幂。所以对于值10,答案是 应该是8,对于7,应该是4

nop
nop
retlw 8
Nop
Nop
Nop
retlw 4
Nop
retlw 2
Nop
retlw 0
lesspow subwf PCL, F

我怎么能用一个子程序重写上面的代码,这个子程序使用除add和add之外的任何指令 减去

这是你的家庭作业:

lesspow:
    movwf   temp
    clrc
    rrf     temp,F
    iorwf   temp,W
    clrc
    rrf     temp,F
    iorwf   temp,W
    clrc
    rrf     temp,F
    iorwf   temp,W
    clrc
    rrf     temp,F
    iorwf   temp,W
    clrc
    rrf     temp,F
    iorwf   temp,W
    clrc
    rrf     temp,F
    iorwf   temp,W
    clrc
    rrf     temp,F
    iorwf   temp,W
    movwf   temp
    rrf     temp,F
    xorwf   temp,W
    return

w您可以添加适当的注释。

如果输入已经是2的幂怎么办?对于输入=8,结果是8还是4?如果是8,那么基本上就是隔离最高的集合位。如果PIC可以计算前导零,这可能会有所帮助。否则,您可以循环清除最低设置位(
x&=x-1
),直到它变为零,然后返回上一个
x
。假设您可以实现
x-1
,而不使用
sub
指令。如果它是2的幂,它将返回自身。。。。你能帮我查一下密码吗。。。。非常感谢你。。。。但是为什么我不能添加适当的注释呢?我没有得到它…我有一个问题,什么是“irowf”指令。。。。。非常感谢。again@Dan:未注释的代码转储和对算法的解释基本上永远都不是堆栈溢出的好答案;它对未来的读者帮助不大。这也基本上与中的回答准则相反,如果您关心这些准则的话。如果你认为这是一个值得回答的有趣问题,那就好好回答吧,我的意思是。@PeterCordes,原来的海报问题就是同一类示例代码。在我看来,这个答案和那个答案一样好。如果你认为这个答案应该被删除,那就这么说吧,我马上就去做。@Dan1138:我想如果我必须在未注释的工作代码和删除代码之间做出选择,我想我们应该保留它。如果我知道PIC ISA,我大概可以知道它在做什么。(但这不是我熟悉的ISA之一,它的助记符比一些更神秘;我想我看到了清晰的进位标志,并作为它的一部分向右旋转……)。但理想情况下,添加1或2个句子来描述算法将是这个答案的最佳选择。谢谢大家,我感谢你们的所有努力。。多谢各位