新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC中檔單片機匯編指令詳解(7)

        PIC中檔單片機匯編指令詳解(7)

        作者: 時間:2016-11-19 來源:網絡 收藏
        GOTO 程序無條件跳轉到指定的地址

        語法形式:GOTO m

        本文引用地址:http://www.104case.com/article/201611/318562.htm

        操作數: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

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



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 全南县| 济阳县| 女性| 太湖县| 麻江县| 丘北县| 武邑县| 乐业县| 兴海县| 宁远县| 曲靖市| 肥城市| 河间市| 东至县| 寻乌县| 徐州市| 浦县| 郁南县| 固始县| 鹰潭市| 铁力市| 新和县| 项城市| 桐柏县| 明溪县| 锡林浩特市| 庆城县| 美姑县| 卢湾区| 罗城| 巴东县| 黄骅市| 涪陵区| 阳信县| 万山特区| 山丹县| 法库县| 永安市| 新建县| 曲松县| 前郭尔|