新聞中心

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

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

作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
ADDWF W寄存器內容和f數(shù)據(jù)寄存器內容相加

語法形式:ADDWF f,d

本文引用地址:http://m.butianyuan.cn/article/201611/318558.htm

操作數(shù):f為數(shù)據(jù)寄存器的低7位地址(0x00~0x7F)

d為目的寄存器的低7位地址(0x00~0x7F)

當d=f時,結果放在f數(shù)據(jù)寄存器,W寄存器的內容不變

當d=W時,結果放在W寄存器中,f數(shù)據(jù)寄存器的內容不變

執(zhí)行時間:一個指令周期

執(zhí)行過程:【f】+【W(wǎng)】→d

狀態(tài)標志影響:Z DC C

說明:數(shù)據(jù)寄存器內容和W寄存器內容相加,結果放入d指定的地方

指令范例:

MOVLW 0x55 ;W=0x55,假定Sum=0xAA

ADDWF Sum,f ;W不變,Sum=0xFF

MOVF 傳送f數(shù)據(jù)寄存器的內容到目的寄存器

語法形式:MOVF f,d

操作數(shù):f為數(shù)據(jù)寄存器的低7位地址(0x00~0x7F)

d為目的寄存器的低7位地址(0x00~0x7F)

當d=f時,把數(shù)據(jù)寄存器的內容放回自己本身,目的用于判斷數(shù)據(jù)寄存器的內容是否為0。

當d=W時,結果放在W寄存器中,將數(shù)據(jù)寄存器f的內容傳送至W寄存器

執(zhí)行時間:一個指令周期

執(zhí)行過程:【f】→d

狀態(tài)標志影響:Z

說明:將數(shù)據(jù)寄存器的內容傳送至它處,或者對f數(shù)據(jù)寄存器的內容做判0操作,如果傳送的數(shù)據(jù)是0,則置位Z標志。

指令范例:

例1:數(shù)據(jù)傳送

MOVF Var1,W ;Var1內容傳送至W寄存器

MOVWF Var2 ;W寄存器內容傳送至Var2,此時Var1=Var2

例2:數(shù)據(jù)判0

MOVF Var3,f ;Var3寄存器內容被送往自身,其他寄存器內容不變,但是影 響Z標志

BTFSC STATUS,Z ;如果Var3不等于0,則跳過下一條指令

GOTO Var3Zero ;如果Var3等于0,則轉向其他操作

COMF f數(shù)據(jù)寄存器內容取反

語法形式:COMF f,d

操作數(shù):f為數(shù)據(jù)寄存器的低7位地址(0x00~0x7F)

d為目的寄存器的低7位地址(0x00~0x7F)

當d=f時,結果放在f數(shù)據(jù)寄存器,W寄存器的內容不變

當d=W時,結果放在W寄存器中,f數(shù)據(jù)寄存器的內容不變

執(zhí)行時間:一個指令周期

執(zhí)行過程:!【f】→d

狀態(tài)標志影響:Z

說明:求數(shù)據(jù)寄存器內容的反碼,求一個數(shù)的補碼可以使用這個指令完成(按位求反再加一)

指令范例:

COMF num,f ;對num變量取反碼

INCF num,f ;反碼加1就是其補碼

DECFSZ 數(shù)據(jù)寄存器內容遞減1,并作判0標志

語法形式:DECFSZ f,d

操作數(shù):f為數(shù)據(jù)寄存器的低7位地址(0x00~0x7F)

d為目的寄存器的低7位地址(0x00~0x7F)

當d=f時,結果放在f數(shù)據(jù)寄存器,W寄存器的內容不變

當d=W時,結果放在W寄存器中,f數(shù)據(jù)寄存器的內容不變

執(zhí)行時間:一個指令周期或兩個指令周期

執(zhí)行過程:【f】-1→d

狀態(tài)標志影響:Z

說明:該指令將首先將f數(shù)據(jù)寄存器的內容做減1運算,結果放到d指定的目的地址內,同時它還會對Z標志進行判0操作(進行分支跳轉控制);如果f數(shù)據(jù)寄存器減1后結果非0,那么Z=0,程序將順序執(zhí)行下一條指令,本次指令操作耗費一個指令周期;如果結果為0,那么Z=1,此時程序將會跳過緊跟其后的第一條指令,去執(zhí)行緊跟其后的第二條指令,本次指令操作耗費兩個指令周期。該指令常用于計數(shù)次數(shù)或者循環(huán)次數(shù)的控制。

指令范例:

MOVLW 0x10 ;準備給循環(huán)計數(shù)器賦初值

MOVWF Count ;此時循環(huán)計數(shù)器Count=0x10

Loop:DECFSZ Count,f ;Count遞減1,結果放入Count中,并進行Z標志判 GOTO Loop ;斷,如果遞減后結果不為0,繼續(xù)執(zhí)行Loop操作, ;總共循環(huán)0x10(16進制)次。

NOP ;如果遞減后結果為0,就跳到這條指令



評論


技術專區(qū)

關閉