2014-10-19 372 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)。掩碼可以預先計算,存儲在內存中,並根據需要通過位編號索引。