数字下方 2 的第一个幂

First power of 2 below a number

以下代码片段是学生尝试在 PIC 程序集中编写查找 -table。这 代码应该是 return 数字 N 下面 2 的第一个幂。所以对于值 10 tha 答案 应该是 8,7 应该是 4。

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

我怎么能用一个子例程重写上面的代码,这个子例程使用除了 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您可以添加适当的评论。