2013-10-24 75 views
-1

任何人都可以向我展開按位AND操作如何工作? 我有以下代碼:PIC彙編程序和按位與

CLRF LATC & 0x7F 
MOVWF LATC & 0x7F 

什麼是使用& 0x7F的目的是什麼?這個改變是什麼?

更新:我知道一般的按位操作是如何工作的,我知道「CLRF LATC」應該將LATC寄存器清零。但是LATC寄存器的「CLRF LATC & 0x7F」是什麼?零都只是最後一點?

+0

http://en.wikipedia.org/wiki/Bitwise_AND#AND –

回答

1

該操作已由彙編程序執行,因此「MOVWF 0x193 & 0x7F」(例如)與「MOVWF 0x13」(因爲0x193 & 0x7F = 0x13)相同。

之所以這樣做是以下之一:

對於較大的PIC內存被存入銀行。要寫入地址0x193,您必須切換到bank#3(地址0x180-0x1FF)並寫入地址0x13(而不是地址0x193)。

這個「銀行相對」地址是通過將絕對地址和數字0x7F進行AND來計算的。因爲象「LATC」這樣的符號可能被定義爲絕對地址(0x193)而不是相對地址(0x13),所以你需要這種形式的指令。