以下理解純屬惡搞,例子使用搜狗輸入法輸入,全角還是半角的懶得理了!
第一條當然是NOP,
NOP 垃圾指令
操作數:垃圾當然不用說最好是沒有的就好!
指令編碼:00 0000 0xx0 0000 這個全是0啦,還要xx
執行時間:清理垃圾也要一個指令的
執行過程:掃垃圾,除了清理外其他什么都沒變
狀態標志:垃圾當然無視
說明:這個垃圾除了用來浪費時間外什么也實現不了,一般用來延時
指令例子: BSF PORTB,0 ; PORTB 端口0輸出高電平
NOP ;丟個垃圾浪費下時間讓IO輸出穩定
第二條應該是MOVWF
MOVWF 拆開 解釋一下先,
MOV就是寄存器縮寫的意思,
W就是一個叫W的SB老爸給它起的名字,
F==??發(fa的縮寫?),發送或者傳送的意思,
整個串起來就是把W寄存器里面的數傳到數據寄存器。
語法形式:MOVWF f
操作數:f是數據寄存器的低7位地址(0x00-0x7f)
指令編碼:00 0000 1fff ffff (要反反復復)
執行時間:一個指令周期
執行過程:把W那個SB的數傳送到數據寄存器 里面,W那個SB是不會變的
狀態標志影響:無
說明:一般是給數據寄存器賦值(給別人做嫁妝啦)
指令例子: MOVLW 0x55 ;W那個SB在吃飯
MOVWF Data ;W那個SB給人家添飯
;Data = 0x55
第三條 MOVF 寄存器發送
把數據寄存器的數傳到目的寄存器
語法形式: MOVF f,d
操作數: f是數據寄存器的低7位地址(0x00-0x7f)
d=w,這d真虛偽,把W添的飯又退回去了!
d=f,這d真壞,把飯又拿回來,還看看碗里的飯是不是沒了!
指令編碼: 00 1000 dfff ffff (是人都討厭的d竟然還要定了得反反復復)
執行時間: 一個指令周期 (還好只用了一個,要不然跑不了非得被人家敲死)
執行過程; [f] -d (連數據寄存器都要給d給惡搞了)
狀態標志影響: Z (搞成這樣子要是Z還沒被影響的絕對是個SB)
說明: 這個指令通過W寄存器把數據寄存器的數傳到別的地方,或者對數據寄存器判0操作,如果發現是0就會把標志Z置位。(這家伙夠壞的吧,先把W那個SB當跳板把數據寄存器的飯搞到別的地方去,還要看看碗里是否有飯,沒飯的話就大呼小叫的!)
指令例子: 例1 ;數據傳送
MOVF Var1,w ;Var1把飯添給W那個SB
MOVWF Var2 ;W那個SB只能當傳飯的傳送給Var2
;Var2 = Var1 (不用說這碗飯是不變的)
例2 ;數據判0(看看這個飯碗里面有沒有飯)
MOVF Var3,f ;Var3的數被傳送給自身(Var3添完飯后給自己)
BTFSC STATUS,Z ;如果Var3不等于0就會跳到下一指令(自己給自己添飯就這樣的)
GOTO Var3Zero ;如果Var3等于0就轉做相關操作(自己添不到飯肯定要干別的了)
第四條 CLRW W寄存器的數清0(W這個SB的飯被搶了)
CLR就是清除的縮寫,W。。。。。。這個SB又被搞了。。。。。。無語中
語法形式: CLRW
操作數: 無(飯都被搶了還吃個毛啊)
指令編碼: 00 0001 0000 0011 (被搶了還幺幺的叫)
執行時間: 一個指令周期(搶的速度也不慢啊)
執行過程: 0x00 - W (飯就這樣被搶了)
1 - W (要是不叫才怪了)
狀態標志影響:Z (W叫得也不小,把Z給驚動了)
說明:該指令對W寄存器清0,同時置位0標志Z,另外有一條指令movlw 0x00也可以使W寄存器清0,
但不影響任何狀態。(看來W的飯被搶也要看看誰搶的,l去搶的話連聲都不干吭一聲)
指令例子: CLRW ;W=0(W的飯沒了)
第五條 CLRF 數據寄存器的數清0 (看來連傳送過程也會被搶)
語法形式:CLRF f
操作數: f是數據寄存器的低7位地址(0x00-0x7f)指令編碼: 00 0001 1fff ffff (叫了兩下就拂拂褲子就走了)
執行時間: 一個指令周期 (搶的速度)
執行過程: 0x00 - f (f被搶,還叫兩聲)
1 - Z (結果還是把Z驚動)
狀態標志影響:Z (還是這個家伙被驚動)
說明: 該指令對數據寄存器清0,同時置位0標志Z(f在傳送過程中被搶,同時Z被驚動)
指令例子: CLRF TRISB ;端口B的所有I/O引腳設為輸出模式(因為飯在傳送中被搶了,結果全部挨餓)
第六條 ADDWF 數據寄存器的數和W寄存器相加
(傳送中的飯和W的飯不滿要求服務員加飯)
語法形式: ADDWF f,d (這次被搞的是f和d)
操作數: f是數據寄存器的低7位地址(0x00-0x7f)
d=f,結果放在數據寄存器內,W的數不變(飯加進f的碗里,W碗里的飯沒變)
d=w,結果放在W寄存器里,數據寄存器的數不變(飯加進W碗里去了,f碗里不變)
指令編碼: 00 0111 dfff ffff (都是叫飯的)
執行時間: 一個指令周期(加飯的效率也夠快的)
執行過程: [f] + [W] -d
狀態標志影響:Z DC C (加飯要求驚動了睡覺的家伙和服務員還有煮飯的家伙)
說明:數據寄存器的數和W寄存器相加,結果按照d指定的目的地存數
(送飯的和W要求加飯,結果按照d指定放在哪個碗里面)
指令例子: MOVLW 0x55 ;W=0x55,假定 Sum=0xaa (W碗里有小半碗飯,假定sun碗里有大半碗)
ADDWF Sum,f ;W不變,Sum=0xff (W碗里沒加成,Sum加滿了)
|