PIC中檔單片機(jī)匯編指令詳解(7)
語(yǔ)法形式:GOTO m
本文引用地址:http://m.butianyuan.cn/article/201611/318562.htm操作數(shù):m為11位立即數(shù)指定的目標(biāo)地址
執(zhí)行時(shí)間:2個(gè)指令周期
執(zhí)行過(guò)程:
m→PC【10:0】
PCLATH【4:3】→PC【12:11】
狀態(tài)標(biāo)志影響:無(wú)
說(shuō)明:程序無(wú)條件立即強(qiáng)行跳轉(zhuǎn)到目的地址處繼續(xù)執(zhí)行。目的地址由本指令內(nèi)含的11位地址碼和特殊寄存器PCLATH中的【4:3】一起構(gòu)成完整的13位地址。
指令范例:
ORG 0x000 ;偽指令指定程序的起始地址
GOTO Main ;程序跳轉(zhuǎn)到標(biāo)號(hào)指定的位置處繼續(xù)執(zhí)行
MOVLW W寄存器賦立即數(shù)
語(yǔ)法形式:MOVLW k
操作數(shù):k為8位立即數(shù)
執(zhí)行時(shí)間:一個(gè)指令周期
執(zhí)行過(guò)程:k→W
狀態(tài)標(biāo)志影響:無(wú)
說(shuō)明:該指令對(duì)W寄存器賦一個(gè)初值。任何其他數(shù)據(jù)寄存器如果要賦一個(gè)立即數(shù)值,必須通過(guò)W寄存器傳送。
指令范例:
MOVLW 0x55 ;【W(wǎng)】=0x55
MOVWF Tmp ;【Tmp】=【W(wǎng)】=0x55
ADDLW W寄存器和8位立即數(shù)相加
語(yǔ)法形式:ADDLW k
操作數(shù):k為8位立即數(shù)
執(zhí)行時(shí)間:一個(gè)指令周期
執(zhí)行過(guò)程:【W(wǎng)】+k→W
狀態(tài)標(biāo)志影響:Z DC C
說(shuō)明:W寄存器的值和8位立即數(shù)相加,結(jié)果放入W寄存器內(nèi)
指令范例:
MOVLW 0xAA ;W=0xAA
ADDLW 0x11 ;W=0xAA+0x11=0xBB
SUBLW 立即數(shù)減去W寄存器
語(yǔ)法形式:SUBLW k
操作數(shù):k為8位立即數(shù)
執(zhí)行時(shí)間:一個(gè)指令周期
執(zhí)行過(guò)程:k-【W(wǎng)】→W
狀態(tài)標(biāo)志影響:Z DC C
說(shuō)明:必須注意W寄存器在這條指令中是減數(shù)
如果k=W,相減結(jié)果為0,則Z=1
如果k>W,沒有借位發(fā)生,則C=1
如果k 在PIC單片機(jī)內(nèi)部這條減法指令的執(zhí)行是先對(duì)W寄存器求補(bǔ)碼,然后和被減數(shù)k相加,所以在判斷是否有借位標(biāo)志時(shí)要千萬(wàn)小心 指令范例: MOVLW 0x23 ;W=0x23 SUBLW 0x32 ;W=0x32-0x23=0x0f,k>W所以C=1 IORLW W寄存器和立即數(shù)做邏輯或操作 語(yǔ)法形式:IORLW k 操作數(shù):k為8位立即數(shù) 執(zhí)行時(shí)間:一個(gè)指令周期 執(zhí)行過(guò)程:【W(wǎng)】|k→W 狀態(tài)標(biāo)志影響:Z 說(shuō)明:W寄存器和8位立即數(shù)相或,結(jié)果放入W寄存器內(nèi)。按照邏輯或有1出1的法則,此指令可以把W寄存器的任意位設(shè)置成數(shù)據(jù)1 指令范例: IORLW b‘00001111’ ;W寄存器低4位置1 ANDLW W寄存器和立即數(shù)做邏輯與操作 語(yǔ)法形式:ANDLW k 操作數(shù):k為8位立即數(shù) 執(zhí)行時(shí)間:一個(gè)指令周期 執(zhí)行過(guò)程:【W(wǎng)】&k→W 狀態(tài)標(biāo)志影響:Z 說(shuō)明:W寄存器和8位立即數(shù)相與,結(jié)果放入W寄存器內(nèi)。按照邏輯與有0出0的法則,可以把W寄存器的任意位置清0 指令范例: ANDLW b‘00001111’ ;W寄存器高4位清0 XORLW W寄存器和立即數(shù)做邏輯異或操作 語(yǔ)法形式:XORLW k 操作數(shù):k為8位立即數(shù) 執(zhí)行時(shí)間:一個(gè)指令周期 執(zhí)行過(guò)程:【W(wǎng)】^k→W 狀態(tài)標(biāo)志影響:Z 說(shuō)明:W寄存器和8位立即數(shù)異或,結(jié)果放入W寄存器內(nèi)。按照邏輯異或的法則,任何數(shù)和1異或,結(jié)果為其反碼;任何數(shù)和其自身異或,結(jié)果為0。所以該指令可以把W寄存器的任意位數(shù)反轉(zhuǎn),或者判斷W寄存器的內(nèi)容是否為特定值 指令范例: 例1:任意數(shù)據(jù)按位取反 XORLW b‘11111111’ ;取W寄存器8位反碼 例2:判斷W寄存器內(nèi)容是否為特定值 XORLW 0x34 ;判斷W=0x34? BTFSC STATUS,Z ;W不等于0x34,則跳過(guò)下條指令 GOTO W34 ;W等于0x34,轉(zhuǎn)去執(zhí)行相關(guān)操作
評(píng)論