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