2014-10-19 130 views
0

我正在使用指令bsf PORTB,COUNT将某位设置为1。在这个指令中,COUNT的地址被采用,我需要把COUNT的内容作为例子6或7,我该怎么做?我是这个汇编代码的新手PIC16F84A指令BSF - 汇编

+0

我不在我的系统;这是来自(非常)朦胧的记忆。看看它是否有效:'Mov [COUNT],W0'然后'BSF W0,PORTB'再次,没有任何承诺。聪明的人请加入 – 2014-10-19 07:37:39

回答

1

BSF的第一个操作数是操作的目标地址,在你的情况PORTB中。第二个操作数是由常数指定的位数(0到7)。

汇编程序将地址标号COUNT解释为常量,这不是您打算执行的操作。

第二个寄存器包含位编号时的一种解决方案是为位编号生成位掩码,然后将目标寄存器与该掩码按位或运算。

要生成位掩码,请将寄存器的值加1,然后将其移位左边的位数。因此,对于位0,您根本不会移位(00000001),对于位7,您会左移7次(导致10000000)。掩码可以预先计算,存储在内存中,并根据需要通过位编号索引。