PIC中檔單片機彙編指令詳解(7)-完

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,轉去執行相關操做

相關文章
相關標籤/搜索