0
我試圖爲PIC16F設備PIC彙編 - 通過寄存器作爲參數
clrf BIT
bsf REGISTER,BIT
這給編譯錯誤做到這一點。
但是,這樣做
clrf BIT
movf BIT,W
bsf REGISTER,W
沒有給出編譯錯誤。
我做得對嗎,還是有一個聰明的方法來完成它?
我試圖爲PIC16F設備PIC彙編 - 通過寄存器作爲參數
clrf BIT
bsf REGISTER,BIT
這給編譯錯誤做到這一點。
但是,這樣做
clrf BIT
movf BIT,W
bsf REGISTER,W
沒有給出編譯錯誤。
我做得對嗎,還是有一個聰明的方法來完成它?
這些位代碼都不會做你想要的。位號不允許來自寄存器。它必須是一個硬編號碼。
在第一種情況下,彙編器正確地給出錯誤。爲什麼第二個案例彙編呢?簡單地說,W
並不是一個真正的寄存器名稱,它是用於控制具有方向位的指令目的地的變相數字零。因此,代碼實際上是:
clrf BIT
movf BIT,W
bsf REGISTER,0
巧合的是,你在REGISTER
寫一個零到變量BIT
然後清除位數字爲零。你的代碼符合你的期望,但不是出於正確的原因。
如何聲明'BIT'和'REGISTER'變量? –
我在某處讀到「bsf REGISTER,BIT」會得到BIT的地址,而不是它的值,但不知道它是否爲真 –
再次閱讀! 'BSF'指令後面跟隨8位存儲器頁地址參數,並且在頁增加字節的3位大小位地址參數後。 –