左移和右移指令的功能是將輸人數據IN左移或右移N位,其結果送到OUT中。
使用移位指令時應注意以下問題。
1)左移和右移指令中,字節操作是無符號的;對於(yu) 字和雙字操作,當使用有符號數據類型時,符號位也將被移動。
2)在移位時,存放被移位數據的編程元件的移出端與(yu) 特殊繼電器人SM1.1相連,移出位送入SM1.1,另一端補0。
3)移位次數N為(wei) 字節型數據.它與(yu) 移位數據的長度有關(guan) 。如果N小於(yu) 實際的數據長度,則執行N次移位;如果N大於(yu) 數據長度,則執行移位的次數等於(yu) 實際數據長度的位數。
4)左、右移位指令對特殊繼電器的影響是,結果為(wei) 零時置位SM1.0、結果溢出時置位SM1.1。
5)運行時出現不正常狀態量位SM4.3.ENO=0。
移位指令包括字節、字、雙字移位指令,其指令格式類似。這裏僅(jin) 介紹字節移位指令。字節移位指令包括字節左移指令SLB和字節右移指令SPB.指令格式如圖5-32所示,其中N≤8。
圖5-32 字節移位指令的指令格式
當EN有效時,字節移位指令將字節型數據IN左移或右移N位後,送到OUT中。在語句表中,OUT和IN為(wei) 同一存儲(chu) 單元。
對於(yu) 字移位指令、雙字移位指令,隻是把字節移位指令中表示數據類型的“B”改為(wei) “W”或“DW (D)”,N值取相應數據類型的長度即可。
【例5-15】 利用移位指令將ACO字數據的高8位右移到低8位,輸出給QB0.程序如圖5-33所示。
圖5-33 邏輯運算指令應用示例