PIC中檔單片機彙編指令詳解(2)

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寄存器中,不會影響原寄存器的值

相關文章
相關標籤/搜索