|
以下理解純屬惡搞,例子使用搜狗輸入法輸入,全角還是半角的懶得理了!
第一條當(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加滿了)
|
|