在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

            作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
            INCFSZ f數(shù)據(jù)寄存器內容遞增1,并作判0標志
            語法形式:INCFSZ 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
            說明:該指令首先對數(shù)據(jù)寄存器的內容做加1操作,結果按照d的指示保存到相應的地方,然后對Z進行判0操作(分支跳轉控制):如果加1之后的結果非0,也就是Z=0,程序將會按照順序執(zhí)行下一條指令,使用1個指令周期;如果加1之后結果為0,也就是Z=1,那么程序將會跳過INCFSZ指令之后的第一條指令,開始執(zhí)行第二條指令,使用2個指令周期。該指令常用于計數(shù)次數(shù)和循環(huán)次數(shù)的控制。
            指令范例:
            MOVLW 0xC0 ;循環(huán)計數(shù)數(shù)據(jù)賦初值
            MOVWF Count ;此時循環(huán)計數(shù)器初值Count=0xC0
            Loop:INCFSZ Count,f ;Count內容加1,放回Count中,并進行Z標志判斷
            GOTO Loop ;如果加1之后的結果不為0,則循環(huán)執(zhí)行Loop的內 容,總共循環(huán)次數(shù)為0x00-0xC0=0x40次
            NOP ;結果為0,則跳到這條指令
            RRF 數(shù)據(jù)寄存器內容帶進位的循環(huán)右移
            語法形式:RRF 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í)行過程:

            狀態(tài)標志影響:C
            說明:該指令把C進位寄存器(借位寄存器)和數(shù)據(jù)寄存器的8位數(shù)據(jù)結合在一起做9位的循環(huán)右移1位的操作。操作的結果是把C移到數(shù)據(jù)寄存器的最高位,原數(shù)據(jù)寄存器的最低位放到C中。
            指令范例:
            例1:實現(xiàn)數(shù)據(jù)寄存器自身8位的循環(huán)右移
            RRF Data,W ;數(shù)據(jù)寄存器Data的內容右移1位,結果放入W寄存器,Data本身 的內容不變,但是最低位已經(jīng)移到C中
            RRF Data,f ;再次進行右移,結果寫入Data自身。這時上一條指令移入C中的最低位現(xiàn)在已經(jīng)變成Data的最高位,實現(xiàn)了最低位變最高位,最高位變成第二高位的目的
            例2:實現(xiàn)數(shù)據(jù)寄存器算數(shù)右移(除2操作)
            BCF STATUS,C ;確保C=0
            RRF Data,f ;數(shù)據(jù)寄存器右移1位,最高位現(xiàn)在為0,結果放入自身
            RLF 數(shù)據(jù)寄存器內容進行帶進位的循環(huán)左移操作
            語法形式:RLF 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í)行過程:

            狀態(tài)標志影響:C
            說明:該指令將C和8位數(shù)據(jù)寄存器的數(shù)據(jù)結合起來進行9位的循環(huán)左移操作,結果放入d指定的位置。操作結果是把C移到數(shù)據(jù)寄存器的最低位,將原數(shù)據(jù)寄存器的最高位移入C中。
            指令范例:
            例1:實現(xiàn)數(shù)據(jù)寄存器的8位內容循環(huán)左移
            RLF Data,W ;Data的內容左移1位放入W寄存器中,Data的內容不變,Data的 最高位放入C中
            RLF Data,f ;Data的內容經(jīng)操作后放回自身,C的內容(經(jīng)上步操作后變成了原Data的最高位)放入Data的最低位。
            例2:實現(xiàn)數(shù)據(jù)寄存器的算數(shù)左移(結果乘以2)
            BCF STATUS,C ;確保C=0
            RLF Data,f ;數(shù)據(jù)寄存器Data左移1位,最低位補充為0,實現(xiàn)乘以2
            SWAPF 數(shù)據(jù)寄存器高低半字節(jié)內容進行交換
            語法形式:SWAPF 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<3:0>】←→【f<7:4>】
            狀態(tài)標志影響:無
            說明:該指令實現(xiàn)把數(shù)據(jù)寄存器的高低半字節(jié)的內容進行交換,結果放入d指定的地址。該指令在中斷服務程序退出前恢復W寄存器的內容的過程中起著不可或缺的作用。不影響狀態(tài)寄存器。
            指令范例:
            SWAPF w_temp,f ;w_temp的高低半字節(jié)內容交換,結果放回w_temp本身
            SWAPF w_temp,W ;w_temp的高低半字節(jié)內容再次交換,但是結果放入W寄存器中,在不影響狀態(tài)寄存器的前提下,實現(xiàn)了把w_temp的原內容復制到W寄存器中。



            評論


            技術專區(qū)

            關閉