Assembly PIC16F84A说明BSF-装配

Assembly PIC16F84A说明BSF-装配,assembly,pic,Assembly,Pic,我正在使用指令bsf PORTB,COUNT将某个位设置为1。在本说明中,采用了COUNT的地址,我需要采用COUNT的内容,例如6或7,我怎么做?我不熟悉此汇编代码在您的示例中,BSF的第一个操作数是操作的目标地址PORTB。第二个操作数是由常数指定的要设置的位数(0到7) 汇编程序将地址标签计数解释为一个常数,这不是您想要做的 当第二个寄存器包含位号时,一种解决方案是为位号生成位掩码,然后使用该掩码按位或目标寄存器 要生成位掩码,请加载一个带1的寄存器,然后将其向左移位位数。因此,对于位0,

我正在使用指令
bsf PORTB,COUNT
将某个位设置为1。在本说明中,采用了
COUNT
的地址,我需要采用
COUNT
的内容,例如6或7,我怎么做?我不熟悉此汇编代码

在您的示例中,BSF的第一个操作数是操作的目标地址PORTB。第二个操作数是由常数指定的要设置的位数(0到7)

汇编程序将地址标签计数解释为一个常数,这不是您想要做的

当第二个寄存器包含位号时,一种解决方案是为位号生成位掩码,然后使用该掩码按位或目标寄存器


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

我不在我的系统中;这是(非常)模糊的记忆。看看这是否有效:
Mov[COUNT],W0
然后再
BSF W0,PORTB
,没有任何承诺。有更聪明的人请插话