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
中的零位。您的代码符合您的预期,但不是出于正确的原因。
我正尝试为 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
中的零位。您的代码符合您的预期,但不是出于正确的原因。