PIC程序集 - 将寄存器作为参数传递

时间:2017-09-26 23:40:29

标签: assembly pic

我试图为PIC16F设备执行此操作

clrf BIT
bsf REGISTER,BIT

给出了编译错误。

然而,这样做

clrf BIT
movf BIT,W
bsf REGISTER,W

没有编译错误。

我做得对,还是有聪明的方法来实现它?

1 个答案:

答案 0 :(得分:2)

这些代码都不能满足您的需求。位号不允许来自寄存器。它必须是硬编码的数字。

在第一种情况下,汇编程序正确地给出了错误。为什么第二种情况会聚集呢?简单地W实际上并不是一个寄存器名称,它是用于控制具有方向位的指令的目的地的伪装数字零。因此代码有效地是:

clrf BIT
movf BIT,W
bsf REGISTER,0

巧合的是,您向变量BIT写入零,然后清除REGISTER中的位数零。您的代码符合您的预期,但不是出于正确的原因。