2017-09-26 142 views
0

我试图为PIC16F设备PIC汇编 - 通过寄存器作为参数

clrf BIT 
bsf REGISTER,BIT 

这给编译错误做到这一点。

但是,这样做

clrf BIT 
movf BIT,W 
bsf REGISTER,W 

没有给出编译错误。

我做得对吗,还是有一个聪明的方法来完成它?

+0

如何声明'BIT'和'REGISTER'变量? –

+0

我在某处读到“bsf REGISTER,BIT”会得到BIT的地址,而不是它的值,但不知道它是否为真 –

+1

再次阅读! 'BSF'指令后面跟随8位存储器页地址参数,并且在页增加字节的3位大小位地址参数后。 –

回答

2

这些位代码都不会做你想要的。位号不允许来自寄存器。它必须是一个硬编号码。

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

clrf BIT 
movf BIT,W 
bsf REGISTER,0 

巧合的是,你在REGISTER写一个零到变量BIT然后清除位数字为零。你的代码符合你的期望,但不是出于正确的原因。