找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4161|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

PIC的35條指令扭曲理解法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:127542 發(fā)表于 2016-6-21 16:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
以下理解純屬惡搞,例子使用搜狗輸入法輸入,全角還是半角的懶得理了!


第一條當(dāng)然是NOP,
NOP 垃圾指令
操作數(shù):垃圾當(dāng)然不用說(shuō)最好是沒(méi)有的就好!
指令編碼:00 0000 0xx0 0000   這個(gè)全是0啦,還要xx
執(zhí)行時(shí)間:清理垃圾也要一個(gè)指令的
執(zhí)行過(guò)程:掃垃圾,除了清理外其他什么都沒(méi)變
狀態(tài)標(biāo)志:垃圾當(dāng)然無(wú)視
說(shuō)明:這個(gè)垃圾除了用來(lái)浪費(fèi)時(shí)間外什么也實(shí)現(xiàn)不了,一般用來(lái)延時(shí)
指令例子:   BSF         PORTB,0      ;   PORTB  端口0輸出高電平
                       NOP                               ;丟個(gè)垃圾浪費(fèi)下時(shí)間讓IO輸出穩(wěn)定

第二條應(yīng)該是MOVWF

MOVWF          拆開 解釋一下先,
MOV就是寄存器縮寫的意思,
W就是一個(gè)叫W的SB老爸給它起的名字,
F==??發(fā)(fa的縮寫?),發(fā)送或者傳送的意思,
整個(gè)串起來(lái)就是把W寄存器里面的數(shù)傳到數(shù)據(jù)寄存器。

語(yǔ)法形式:MOVWF     f
操作數(shù):f是數(shù)據(jù)寄存器的低7位地址(0x00-0x7f)
指令編碼:00 0000 1fff ffff  (要反反復(fù)復(fù))

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

執(zhí)行過(guò)程:把W那個(gè)SB的數(shù)傳送到數(shù)據(jù)寄存器 里面,W那個(gè)SB是不會(huì)變的
狀態(tài)標(biāo)志影響:無(wú)
說(shuō)明:一般是給數(shù)據(jù)寄存器賦值(給別人做嫁妝啦)
指令例子:     MOVLW    0x55    ;W那個(gè)SB在吃飯 

             MOVWF    Data   �。籛那個(gè)SB給人家添飯
                        ;Data = 0x55  

第三條   MOVF   寄存器發(fā)送
把數(shù)據(jù)寄存器的數(shù)傳到目的寄存器
語(yǔ)法形式:    MOVF    f,d
操作數(shù):        f是數(shù)據(jù)寄存器的低7位地址(0x00-0x7f)
            d=w,這d真虛偽,把W添的飯又退回去了!
         d=f,這d真壞,把飯又拿回來(lái),還看看碗里的飯是不是沒(méi)了!
指令編碼:    00 1000 dfff ffff�。ㄊ侨硕加憛挼膁竟然還要定了得反反復(fù)復(fù))
執(zhí)行時(shí)間:    一個(gè)指令周期  (還好只用了一個(gè),要不然跑不了非得被人家敲死)
執(zhí)行過(guò)程;     [f] -d  (連數(shù)據(jù)寄存器都要給d給惡搞了)
狀態(tài)標(biāo)志影響:  Z      (搞成這樣子要是Z還沒(méi)被影響的絕對(duì)是個(gè)SB)
說(shuō)明:    這個(gè)指令通過(guò)W寄存器把數(shù)據(jù)寄存器的數(shù)傳到別的地方,或者對(duì)數(shù)據(jù)寄存器判0操作,如果發(fā)現(xiàn)是0就會(huì)把標(biāo)志Z置位。(這家伙夠壞的吧,先把W那個(gè)SB當(dāng)跳板把數(shù)據(jù)寄存器的飯搞到別的地方去,還要看看碗里是否有飯,沒(méi)飯的話就大呼小叫的�。�
指令例子:   例1                ��;數(shù)據(jù)傳送
            MOVF    Var1,w   ��;Var1把飯?zhí)斫oW那個(gè)SB
           MOVWF   Var2     ��;W那個(gè)SB只能當(dāng)傳飯的傳送給Var2
                       �。籚ar2 = Var1 (不用說(shuō)這碗飯是不變的)
        例2             �。粩�(shù)據(jù)判0(看看這個(gè)飯碗里面有沒(méi)有飯)
          MOVF    Var3,f     ;Var3的數(shù)被傳送給自身(Var3添完飯后給自己)
         BTFSC    STATUS,Z   ;如果Var3不等于0就會(huì)跳到下一指令(自己給自己添飯就這樣的)
        GOTO    Var3Zero   �。蝗绻鸙ar3等于0就轉(zhuǎn)做相關(guān)操作(自己添不到飯肯定要干別的了)


第四條    CLRW  W寄存器的數(shù)清0(W這個(gè)SB的飯被搶了)
CLR就是清除的縮寫,W。。。。。。這個(gè)SB又被搞了。。。。。。無(wú)語(yǔ)中
語(yǔ)法形式:   CLRW
操作數(shù):    無(wú)(飯都被搶了還吃個(gè)毛�。�
指令編碼:   00 0001 0000 0011 (被搶了還幺幺的叫)
執(zhí)行時(shí)間:   一個(gè)指令周期(搶的速度也不慢啊)
執(zhí)行過(guò)程:   0x00 - W  (飯就這樣被搶了)
       1 - W  (要是不叫才怪了)
狀態(tài)標(biāo)志影響:Z              (W叫得也不小,把Z給驚動(dòng)了)
說(shuō)明:該指令對(duì)W寄存器清0,同時(shí)置位0標(biāo)志Z,另外有一條指令movlw 0x00也可以使W寄存器清0,
   但不影響任何狀態(tài)。(看來(lái)W的飯被搶也要看看誰(shuí)搶的,l去搶的話連聲都不干吭一聲)
指令例子:    CLRW   ��;W=0(W的飯沒(méi)了)

第五條    CLRF     數(shù)據(jù)寄存器的數(shù)清0 (看來(lái)連傳送過(guò)程也會(huì)被搶)
語(yǔ)法形式:CLRF    f
操作數(shù):        f是數(shù)據(jù)寄存器的低7位地址(0x00-0x7f)指令編碼:    00 0001 1fff ffff  (叫了兩下就拂拂褲子就走了)
執(zhí)行時(shí)間:    一個(gè)指令周期 (搶的速度)
執(zhí)行過(guò)程:    0x00 - f        (f被搶,還叫兩聲)

            1 - Z   �。ńY(jié)果還是把Z驚動(dòng))
狀態(tài)標(biāo)志影響:Z       (還是這個(gè)家伙被驚動(dòng))
說(shuō)明:    該指令對(duì)數(shù)據(jù)寄存器清0,同時(shí)置位0標(biāo)志Z(f在傳送過(guò)程中被搶,同時(shí)Z被驚動(dòng))
指令例子:    CLRF    TRISB    ;端口B的所有I/O引腳設(shè)為輸出模式(因?yàn)轱堅(jiān)趥魉椭斜粨屃?結(jié)果全部挨餓)

第六條    ADDWF    數(shù)據(jù)寄存器的數(shù)和W寄存器相加
(傳送中的飯和W的飯不滿要求服務(wù)員加飯)
語(yǔ)法形式:    ADDWF    f,d    (這次被搞的是f和d)
操作數(shù):        f是數(shù)據(jù)寄存器的低7位地址(0x00-0x7f)
            d=f,結(jié)果放在數(shù)據(jù)寄存器內(nèi),W的數(shù)不變(飯加進(jìn)f的碗里,W碗里的飯沒(méi)變)

            d=w,結(jié)果放在W寄存器里,數(shù)據(jù)寄存器的數(shù)不變(飯加進(jìn)W碗里去了,f碗里不變)
指令編碼:    00 0111 dfff ffff  (都是叫飯的)
執(zhí)行時(shí)間:    一個(gè)指令周期(加飯的效率也夠快的)
執(zhí)行過(guò)程:    [f] + [W] -d
狀態(tài)標(biāo)志影響:Z  DC  C (加飯要求驚動(dòng)了睡覺的家伙和服務(wù)員還有煮飯的家伙)
說(shuō)明:數(shù)據(jù)寄存器的數(shù)和W寄存器相加,結(jié)果按照d指定的目的地存數(shù)
(送飯的和W要求加飯,結(jié)果按照d指定放在哪個(gè)碗里面)
指令例子:    MOVLW     0x55   �。籛=0x55,假定 Sum=0xaa�。╓碗里有小半碗飯,假定sun碗里有大半碗)  
            ADDWF    Sum,f  �。籛不變,Sum=0xff �。╓碗里沒(méi)加成,Sum加滿了)  







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表