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