DECF 數據寄存器的內容遞減1語法
語法形式:DECF f,d 數據
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)時間
d爲目的寄存器的低7位地址(0x00~0x7F)
當d=f時,結果放在f數據寄存器,f數據寄存器自減1
當d=W時,結果放在W寄存器中,W寄存器內容自減1
執行時間:一個指令週期
執行過程:【f】-1→d
狀態標誌影響:Z
說明:該指令對數據寄存器的內容作減1運算。若是減1後的結果爲0,則置位0標誌寄存器Z
指令範例:
CLRF Count ;Count=0x00
DECF Count,f ;Count=0x00,f=0xFF
DECF f,W ;f=0xFF,W=0xFE
INCF 數據寄存器的內容遞增1
語法形式:INCF f,d
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)
d爲目的寄存器的低7位地址(0x00~0x7F)
當d=f時,結果放在f數據寄存器,f數據寄存器自增1
當d=W時,結果放在W寄存器中,W寄存器內容自增1
執行時間:一個指令週期
執行過程:【f】+1→d
狀態標誌影響:Z
說明:該指令對數據寄存器的內容增長1。若是增長後的結果爲0,則置位0標誌寄存器Z
指令範例:
CLRF Count ;Count=0x00
INCF Count,f ;Count=0x00,f=0x01
INCF f,W ;f=0x01,W=0x02
IORWF 數據寄存器f和W寄存器作邏輯或操做
語法形式:IORWF f,d
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)
d爲目的寄存器的低7位地址(0x00~0x7F)
當d=f時,結果放在f數據寄存器,W寄存器的內容不變
當d=W時,結果放在W寄存器中,f數據寄存器的內容不變
執行時間:一個指令週期
執行過程:【f】|【W】→d
狀態標誌影響:Z
說明:數據寄存器內容和W寄存器的內容邏輯或,結果按照d的指定位置存放,按照邏輯或有1出1的規則,使用該命令能夠將任意位設置爲1
指令範例:
MOVLW b’00001111’ ;將W寄存器的低4位設置爲1
IORWF PORTB,f ;將PORTB的低4位設置爲1,不影響高4位
ANDWF 數據寄存器f和W寄存器作邏輯與操做
語法形式:ANDWF f,d
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)
d爲目的寄存器的低7位地址(0x00~0x7F)
當d=f時,結果放在f數據寄存器,W寄存器的內容不變
當d=W時,結果放在W寄存器中,f數據寄存器的內容不變
執行時間:一個指令週期
執行過程:【f】&【W】→d
狀態標誌影響:Z
說明:數據寄存器內容和W寄存器的內容邏輯與,結果按照d的指定位置存放。按照邏輯與有0出0的規則,使用該命令能夠將任意位設置爲0。利用其影響標誌Z的特性,能夠判斷寄存器任意位的組合是否爲全0。
指令範例:
例1:寄存器任意位清零
MOVLW b’00001111’ ;W寄存器高4位清0(取決於0的組合)
ANDWF PORTB,f ;PORTB的高4位清0,低4位保持不變
例2:判斷寄存器任意位組合是否全0
MOVLW b’00001111’ ;W寄存器的低4位置1(取決於1的組合)
ANDWF PORTC,W ;只要PORTC的低4位全0,則Z標誌寄存器就置1
;此指令的操做結果放在W寄存器中,不會影響原寄存器的值
XORWF 數據寄存器內容和W寄存器內容作邏輯異或操做
語法形式:XORWF f,d
操做數:f爲數據寄存器的低7位地址(0x00~0x7F)
d爲目的寄存器的低7位地址(0x00~0x7F)
當d=f時,結果放在f數據寄存器,W寄存器的內容不變
當d=W時,結果放在W寄存器中,f數據寄存器的內容不變
執行時間:一個指令週期
執行過程:【f】^【W】→d
狀態標誌影響:Z
說明:數據寄存器內容和W寄存器的內容邏輯異或,結果按照d的指定位置存放。按照邏輯異或的規則,任何數(0或1)和1異或,結果爲反碼;任何數和其自己異或,結果爲0。因此此指令能夠把寄存器的任意位數據反轉(0變1,1變0),或者判斷寄存器的內容是否爲一特定值。
指令範例:
例1:寄存器任意位數據反轉
MOVLW b’00000011’ ;W寄存器低2位置1
XORWF PORTB,f ;PORTB的高6位不變,低2位數據反轉
例2:判斷寄存器的內容是否是特定值
MOVLW 0xAA ;W=0xAA(能夠是任意值)
XORWF PORTC,W ;若是PORTC=0xAA,則Z標誌就爲1
;此指令的操做結果放在W寄存器中,不會影響原寄存器的值