2017-09-26 61 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然後清除位數字爲零。你的代碼符合你的期望,但不是出於正確的原因。