PIC中檔單片機(jī)匯編指令詳解(1)
語(yǔ)法形式:NOP
本文引用地址:http://m.butianyuan.cn/article/201611/318563.htm操作數(shù):無(wú)
執(zhí)行時(shí)間:一個(gè)指令周期
執(zhí)行過(guò)程:除了消耗一個(gè)指令周期之外,無(wú)任何其他影響,所以通常被用來(lái)作為延時(shí)使用
狀態(tài)標(biāo)志影響:無(wú)
說(shuō)明:指令操作沒(méi)有任何操作數(shù)參與,也不影響任何寄存器的內(nèi)容和狀態(tài),所以通常都是被作為延時(shí)使用的。
指令范例:BSF PORTB,0 ;PORTB的第0位輸出高電平(1)
NOP ;延時(shí),使電平穩(wěn)定
MOVWF 將W寄存器的內(nèi)容傳送到數(shù)據(jù)寄存器
語(yǔ)法形式:MOVWF f
操作數(shù):f為數(shù)據(jù)寄存器的低7位地址(0x00~0x7F)
執(zhí)行時(shí)間:一個(gè)指令周期
執(zhí)行過(guò)程:把W寄存器的內(nèi)容傳送到f數(shù)據(jù)寄存器,W寄存器的內(nèi)容保持不變,類似于Copy
狀態(tài)標(biāo)志影響:無(wú)
說(shuō)明:該指令是對(duì)數(shù)據(jù)寄存器賦值的主要方式
指令范例:
MOVLW 0x55 ;W寄存器賦值
MOVWF Data ;W寄存器值傳送給Data
;此時(shí)Data=0x55
CLRW W寄存器內(nèi)容清0
語(yǔ)法形式:CLRW
操作數(shù):無(wú)
執(zhí)行時(shí)間:一個(gè)指令周期
執(zhí)行過(guò)程:0x00→W
1→Z
狀態(tài)標(biāo)志影響:Z
說(shuō)明:該指令對(duì)W寄存器內(nèi)容清零,并置位0標(biāo)志Z
另外使用MOVLW 0x00也可以使W寄存器內(nèi)容為0,但是這條指令不影響0標(biāo)志Z
指令范例:CLRW ;W=0,Z=1
CLRF 數(shù)據(jù)寄存器內(nèi)容清零
語(yǔ)法形式:CLRF f
操作數(shù):f為數(shù)據(jù)寄存器的低7位地址(0x00~0x7F)
執(zhí)行時(shí)間:一個(gè)指令周期
執(zhí)行過(guò)程:0x00→f
1→Z
狀態(tài)標(biāo)志影響:Z
說(shuō)明:指令對(duì)數(shù)據(jù)寄存器清零,并置位0標(biāo)志Z
指令范例:CLRF TRISB ;端口B所有I/O引腳設(shè)為輸出
SUBWF 將數(shù)據(jù)寄存器的內(nèi)容減去W寄存器內(nèi)容
語(yǔ)法形式:SUBWF f,d
操作數(shù):f為數(shù)據(jù)寄存器的低7位地址(0x00~0x7F)
d為目的寄存器的低7位地址(0x00~0x7F)
當(dāng)d=f時(shí),結(jié)果放在f數(shù)據(jù)寄存器,W寄存器內(nèi)容不變
當(dāng)d=W時(shí),結(jié)果放在W寄存器中,數(shù)據(jù)寄存器f內(nèi)容不變
執(zhí)行時(shí)間:一個(gè)指令周期
執(zhí)行過(guò)程:【f】-【W(wǎng)】→d
狀態(tài)標(biāo)志影響:Z DC C
說(shuō)明:要特別注意W寄存器在這條指令中是減數(shù)
當(dāng)【f】=【W(wǎng)】時(shí),相減的結(jié)果為0,則Z=1
當(dāng)【f】>【W(wǎng)】時(shí),沒(méi)有借位發(fā)生,則C=1
當(dāng)【f】<【W(wǎng)】時(shí),有借位發(fā)生,則C=0
實(shí)際上在PIC單片機(jī)中這條指令是通過(guò)先對(duì)W寄存器的內(nèi)容求補(bǔ)碼,然后與被減數(shù)相加,所以在判斷是否有借位時(shí)和其他單片機(jī)不同,請(qǐng)注意
指令范例:
MOVLW 0x23 ;W=0x23
MOVWF tmp ;tmp=0x23
MOVLW 0x32 ;W=0x32
SUBWF tmp,W ;tmp-W將結(jié)果存入W中,W=0xF1,tmp=0x23
;過(guò)程:tmp=0x23,W求補(bǔ)碼為0xCD,所以0x23+0xCD=0xF1,又因tmp
評(píng)論