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

PIC assembly - passing a register as argument

我正尝试为 PIC16F 设备执行此操作

clrf BIT
bsf REGISTER,BIT

编译出错。

但是,这样做

clrf BIT
movf BIT,W
bsf REGISTER,W

没有编译错误。

我做的对吗,或者有没有聪明的方法来完成它?

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

在第一种情况下,assembler 正确给出了一个错误。为什么第二种情况assemble呢?简单地说 W 并不是真正的寄存器名称,它是伪装的数字零,用于通过方向位控制指令的目的地。所以有效的代码是:

clrf BIT
movf BIT,W
bsf REGISTER,0

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