(1)加法指令ADD (D)ADD(P)指令的編號為FNC20。它是將指定的源元件中的二進製數相加結果送到指定的目標元件中去。如圖1所示,當X0為ON時,執行(D10)+(D12)→(D14)。
圖1 加法指令的使用
(2)減法指令SUB (D)SUB(P)指令的編號為(wei) FNC21。它是將[S1.]指定元件中的內(nei) 容以二進製形式減去[S2.]指定元件的內(nei) 容,其結果存入由[D.]指定的元件中。如圖2所示,當X0為(wei) ON時,執行(D10)—(D12)→(D14)。
圖2 減法指令的使用
使用加法和減法指令時應該注意:
1) 操作數可取所有數據類型,目標操作數可取KnY、KnM、KnS、T、C、D、V和Z.。
2) 16位運算占7個(ge) 程序步,32位運算占13個(ge) 程序步。
3)數據為(wei) 有符號二進製數,最高位為(wei) 符號位(0為(wei) 正,1為(wei) 負)。
4)加法指令有三個(ge) 標誌:零標誌(M8020)、借位標誌(M8021)和進位標誌(M8022)。當運算結果超過32767(16位運算)或2147483647(32位運算)則進位標誌置1;當運算結果小於(yu) -32767(16位運算)或-2147483647(32位運算),借位標誌就會(hui) 置1。
(3)乘法指令MUL (D) MUL (P)指令的編號為(wei) FNC22。數據均為(wei) 有符號數。如圖3所示,當X0為(wei) ON時,將二進製16位數[S1.]、[S2.]相乘,結果送[D.]中。D為(wei) 32位,即(D0)×(D2)→(D5,D4)(16位乘法);當X1為(wei) ON時,(D1,D0)×(D3,D2)→(D7,D6,D5,D4)(32位乘法)。
圖3 乘法指令的使用
(4)除法指令DIV (D) DIV (P)指令的編號為(wei) 為(wei) FNC23。其功能是將[S1.]指定為(wei) 被除數,[S2.]指定為(wei) 除數,將除得的結果送到[D.]指定的目標元件中,餘(yu) 數送到[D.]的下一個(ge) 元件中。如圖4所示,當X0為(wei) ON時(D0)÷(D2)→(D4)商,(D5)餘(yu) 數(16位除法);當X1為(wei) ON時(D1,D0)÷(D3,D2)→(D5,D4)商,(D7,D6)餘(yu) 數(32位除法)。
圖4 除法指令的使用
使用乘法和除法指令時應注意:
1)源操作數可取所有數據類型,目標操作數可取KnY、KnM、KnS、T、C、D、V和Z.,要注意Z隻有16位乘法時能用,32位不可用。
2)16位運算占7程序步,32位運算為(wei) 13程序步。
3)32位乘法運算中,如用位元件作目標,則隻能得到乘積的低32位,高32位將丟(diu) 失,這種情況下應先將數據移入字元件再運算;除法運算中將位元件指定為(wei) [D.],則無法得到餘(yu) 數,除數為(wei) 0時發生運算錯誤。
4)積、商和餘(yu) 數的最高位為(wei) 符號位。
(5)加1和減1指令 加1指令(D) INC (P)的編號為(wei) FNC24;減1指令 (D) DEC (P)的編號為(wei) FNC25。INC和DEC指令分別是當條件滿足則將指定元件的內(nei) 容加1或減1。如圖5所示,當X0為(wei) ON時,(D10)+1→(D10);當X1為(wei) ON時,(D11)+1→(D11)。若指令是連續指令,則每個(ge) 掃描周期均作一次加1或減1運算。
圖5 加1和減1指令的使用
使用加1和減1指令時應注意:
1)指令的操作數可為(wei) KnY、KnM、KnS、T、C、D、V、Z;。
2)當進行16位操作時為(wei) 3個(ge) 程序步,32位操作時為(wei) 5個(ge) 程序步。
3)在INC運算時,如數據為(wei) 16位,則由+32767再加1變為(wei) -32768,但標誌不置位;同樣,32位運算由+2147483647再加1就變為(wei) -2147483648時,標誌也不置位。
4)在DEC運算時,16位運算-32768減1變為(wei) +32767,且標誌不置位;32位運算由-2147483648減1變為(wei) =2147483647,標誌也不置位。
2.邏輯輯運算類指令
(1)邏輯與(yu) 指令WAND (D)WAND(P)指令的編號為(wei) FNC26。是將兩(liang) 個(ge) 源操作數按位進行與(yu) 操作,結果送指定元件。
(2)邏輯或指令WOR (D) WOR (P)指令的編號為(wei) FNC27。它是對二個(ge) 源操作數按位進行或運算,結果送指定元件。如圖4-48所示,當X1有效時,(D10)∨(D12)→(D14)
(3)邏輯異或指令WXOR (D) WXOR (P)指令的編號為(wei) FNC28。它是對源操作數位進行邏輯異或運算。
(4)求補指令NEG (D) NEG (P)指令的編號為(wei) FNC29。其功能是將[D.]指定的元件內(nei) 容的各位先取反再加1,將其結果再存入原來的元件中。
WAND、WOR、WXOR和NEG指令的使用如圖6所示。
圖6 邏輯運算指令的使用
使用邏輯運算指令時應該注意:
1)WAND、WOR和WXOR指令的[S1.]和[S2.]均可取所有的數據類型,而目標操作數可取KnY、KnM、KnS、T、C、D、V和Z。
2)NEG指令隻有目標操作數,其可取KnY、KnM、KnS、T、C、D、V和Z。
3)WAND、WOR、WXOR指令16位運算占7個(ge) 程序步,32位為(wei) 13個(ge) 程序步,而NEG分別占3步和5步。