GOTO 程序無條件跳轉到指定的地址語法
語法形式:GOTO m程序
操做數:m爲11位當即數指定的目標地址數據
執行時間:2個指令週期時間
執行過程:
m→PC【10:0】
PCLATH【4:3】→PC【12:11】
狀態標誌影響:無
說明:程序無條件當即強行跳轉到目的地址處繼續執行。目的地址由本指令內含的11位地址碼和特殊寄存器PCLATH中的【4:3】一塊兒構成完整的13位地址。
指令範例:
ORG 0x000 ;僞指令指定程序的起始地址
GOTO Main ;程序跳轉到標號指定的位置處繼續執行
MOVLW W寄存器賦當即數
語法形式:MOVLW k
操做數:k爲8位當即數
執行時間:一個指令週期
執行過程:k→W
狀態標誌影響:無
說明:該指令對W寄存器賦一個初值。任何其餘數據寄存器若是要賦一個當即數值,必須經過W寄存器傳送。
指令範例:
MOVLW 0x55 ;【W】=0x55
MOVWF Tmp ;【Tmp】=【W】=0x55
ADDLW W寄存器和8位當即數相加
語法形式:ADDLW k
操做數:k爲8位當即數
執行時間:一個指令週期
執行過程:【W】+k→W
狀態標誌影響:Z DC C
說明:W寄存器的值和8位當即數相加,結果放入W寄存器內
指令範例:
MOVLW 0xAA ;W=0xAA
ADDLW 0x11 ;W=0xAA+0x11=0xBB
SUBLW 當即數減去W寄存器
語法形式:SUBLW k
操做數:k爲8位當即數
執行時間:一個指令週期
執行過程:k-【W】→W
狀態標誌影響:Z DC C
說明:必須注意W寄存器在這條指令中是減數
若是k=W,相減結果爲0,則Z=1
若是k>W,沒有借位發生,則C=1
若是k<W,有借位發生,則C=0
在PIC單片機內部這條減法指令的執行是先對W寄存器求補碼,而後和被減數k相加,因此在判斷是否有借位標誌時要千萬當心
指令範例:
MOVLW 0x23 ;W=0x23
SUBLW 0x32 ;W=0x32-0x23=0x0f,k>W因此C=1
IORLW W寄存器和當即數作邏輯或操做
語法形式:IORLW k
操做數:k爲8位當即數
執行時間:一個指令週期
執行過程:【W】|k→W
狀態標誌影響:Z
說明:W寄存器和8位當即數相或,結果放入W寄存器內。按照邏輯或有1出1的法則,此指令能夠把W寄存器的任意位設置成數據1
指令範例:
IORLW b‘00001111’ ;W寄存器低4位置1
ANDLW W寄存器和當即數作邏輯與操做
語法形式:ANDLW k
操做數:k爲8位當即數
執行時間:一個指令週期
執行過程:【W】&k→W
狀態標誌影響:Z
說明:W寄存器和8位當即數相與,結果放入W寄存器內。按照邏輯與有0出0的法則,能夠把W寄存器的任意位置清0
指令範例:
ANDLW b‘00001111’ ;W寄存器高4位清0
XORLW W寄存器和當即數作邏輯異或操做
語法形式:XORLW k
操做數:k爲8位當即數
執行時間:一個指令週期
執行過程:【W】^k→W
狀態標誌影響:Z
說明:W寄存器和8位當即數異或,結果放入W寄存器內。按照邏輯異或的法則,任何數和1異或,結果爲其反碼;任何數和其自身異或,結果爲0。因此該指令能夠把W寄存器的任意位數反轉,或者判斷W寄存器的內容是否爲特定值
指令範例:
例1:任意數據按位取反
XORLW b‘11111111’ ;取W寄存器8位反碼
例2:判斷W寄存器內容是否爲特定值
XORLW 0x34 ;判斷W=0x34?
BTFSC STATUS,Z ;W不等於0x34,則跳過下條指令
GOTO W34 ;W等於0x34,轉去執行相關操做