1.算術(shù)運算指令
(1)加法指令add (d)add(p)指令的編號為fnc20。它是將指定的源元件中的二進(jìn)制數(shù)相加結(jié)果送到指定的目標(biāo)元件中去。如圖1所示,當(dāng)x0為on時,執(zhí)行(d10)+(d12)→(d14)。
圖1 加法指令的使用
(2)減法指令sub (d)sub(p)指令的編號為fnc21。它是將[s1.]指定元件中的內(nèi)容以二進(jìn)制形式減去[s2.]指定元件的內(nèi)容,其結(jié)果存入由[d.]指定的元件中。如圖2所示,當(dāng)x0為on時,執(zhí)行(d10)—(d12)→(d14)。
圖2 減法指令的使用
使用加法和減法指令時應(yīng)該注意:
1) 操作數(shù)可取所有數(shù)據(jù)類型,目標(biāo)操作數(shù)可取kny、knm、kns、t、c、d、v和z.。
2) 16位運算占7個程序步,32位運算占13個程序步。
3)數(shù)據(jù)為有符號二進(jìn)制數(shù),最高位為符號位(0為正,1為負(fù))。
4)加法指令有三個標(biāo)志:零標(biāo)志(m8020)、借位標(biāo)志(m8021)和進(jìn)位標(biāo)志(m8022)。當(dāng)運算結(jié)果超過32767(16位運算)或2147483647(32位運算)則進(jìn)位標(biāo)志置1;當(dāng)運算結(jié)果小于-32767(16位運算)或-2147483647(32位運算),借位標(biāo)志就會置1。
(3)乘法指令mul (d) mul (p)指令的編號為fnc22。數(shù)據(jù)均為有符號數(shù)。如圖3所示,當(dāng)x0為on時,將二進(jìn)制16位數(shù)[s1.]、[s2.]相乘,結(jié)果送[d.]中。d為32位,即(d0)×(d2)→(d5,d4)(16位乘法);當(dāng)x1為on時,(d1,d0)×(d3,d2)→(d7,d6,d5,d4)(32位乘法)。
圖3 乘法指令的使用
(4)除法指令div (d) div (p)指令的編號為為fnc23。其功能是將[s1.]指定為被除數(shù),[s2.]指定為除數(shù),將除得的結(jié)果送到[d.]指定的目標(biāo)元件中,余數(shù)送到[d.]的下一個元件中。如圖4所示,當(dāng)x0為on時(d0)÷(d2)→(d4)商,(d5)余數(shù)(16位除法);當(dāng)x1為on時(d1,d0)÷(d3,d2)→(d5,d4)商,(d7,d6)余數(shù)(32位除法)。
圖4 除法指令的使用
使用乘法和除法指令時應(yīng)注意:
1)源操作數(shù)可取所有數(shù)據(jù)類型,目標(biāo)操作數(shù)可取kny、knm、kns、t、c、d、v和z.,要注意z只有16位乘法時能用,32位不可用。
2)16位運算占7程序步,32位運算為13程序步。
3)32位乘法運算中,如用位元件作目標(biāo),則只能得到乘積的低32位,高32位將丟失,這種情況下應(yīng)先將數(shù)據(jù)移入字元件再運算;除法運算中將位元件指定為[d.],則無法得到余數(shù),除數(shù)為0時發(fā)生運算錯誤。www.diangon.com
4)積、商和余數(shù)的最高位為符號位。
(5)加1和減1指令 加1指令(d) inc (p)的編號為fnc24;減1指令 (d) dec (p)的編號為fnc25。inc和dec指令分別是當(dāng)條件滿足則將指定元件的內(nèi)容加1或減1。如圖5所示,當(dāng)x0為on時,(d10)+1→(d10);當(dāng)x1為on時,(d11)+1→(d11)。若指令是連續(xù)指令,則每個掃描周期均作一次加1或減1運算。
圖5 加1和減1指令的使用
使用加1和減1指令時應(yīng)注意:
1)指令的操作數(shù)可為kny、knm、kns、t、c、d、v、z;。
2)當(dāng)進(jìn)行16位操作時為3個程序步,32位操作時為5個程序步。
3)在inc運算時,如數(shù)據(jù)為16位,則由+32767再加1變?yōu)?32768,但標(biāo)志不置位;同樣,32位運算由+2147483647再加1就變?yōu)?2147483648時,標(biāo)志也不置位。
4)在dec運算時,16位運算-32768減1變?yōu)?32767,且標(biāo)志不置位;32位運算由-2147483648減1變?yōu)?2147483647,標(biāo)志也不置位。
2.邏輯輯運算類指令
(1)邏輯與指令wand (d)wand(p)指令的編號為fnc26。是將兩個源操作數(shù)按位進(jìn)行與操作,結(jié)果送指定元件。
(2)邏輯或指令wor (d) wor (p)指令的編號為fnc27。它是對二個源操作數(shù)按位進(jìn)行或運算,結(jié)果送指定元件。如圖4-48所示,當(dāng)x1有效時,(d10)∨(d12)→(d14)
(3)邏輯異或指令wxor (d) wxor (p)指令的編號為fnc28。它是對源操作數(shù)位進(jìn)行邏輯異或運算。
(4)求補指令neg (d) neg (p)指令的編號為fnc29。其功能是將[d.]指定的元件內(nèi)容的各位先取反再加1,將其結(jié)果再存入原來的元件中。
wand、wor、wxor和neg指令的使用如圖6所示。
圖6 邏輯運算指令的使用
使用邏輯運算指令時應(yīng)該注意:
1)wand、wor和wxor指令的[s1.]和[s2.]均可取所有的數(shù)據(jù)類型,而目標(biāo)操作數(shù)可取kny、knm、kns、t、c、d、v和z。
2)neg指令只有目標(biāo)操作數(shù),其可取kny、knm、kns、t、c、d、v和z。
3)wand、wor、wxor指令16位運算占7個程序步,32位為13個程序步,而neg分別占3步和5步。
















