5- 位右移【SFTR】Shift Right
SFTR指令是使指定位數長度的軟元件每次向右移動指定位數的指令。其執行效果如下圖所示:
該指令對于以D開始的n1位數據(移位寄存器的長度),往右移動n2位,移位后,原寄存器內的低n2位數據溢出,高n2位數據由S開始的n2位數據補充。
如果設定n2為K1,則每移動一次只移動一位。
6- 位左移【SFTL】Shift Left
SFTL指令是使指定位數長度的軟元件每次向左移動指定位數的指令。其執行效果如下圖所示:
該指令對于以D開始的n1位數據(移位寄存器的長度),往左移動n2位,移位后,原寄存器內的高n2位數據溢出,低n2位數據由S開始的n2位數據補充。
如果設定n2為K1,則每移動一次只移動一位。
7- 字右移【WSFR】Word Shift Right
WSFR指令是使n1個字長的字軟元件向右移動n2個字的指令。其執行效果如下圖所示:
該指令對于以D開始的n1個字軟元件往右移動n2個字,移位后,原最右側n2個字軟元件的數據溢出,左側n2個字軟元件數據由S開始的n2個字軟元件數據補充。
如果使用組合字元件作為傳送源和目標,需要指定相同的位數;若傳送源和目標軟元件重復則會發生運算錯誤。
8- 字左移【WSFL】Word Shift Left
WSFL指令是使n1個字長的字軟元件向左移動n2個字的指令。其執行效果如下圖所示:
該指令對于以D開始的n1個字軟元件往左移動n2個字,移位后,原最左側n2個字軟元件的數據溢出,右側n2個字軟元件數據由S開始的n2個字軟元件數據補充。
如果使用組合字元件作為傳送源和目標,需要指定相同的位數;若傳送源和目標軟元件重復則會發生運算錯誤。
9- 移位寫入【SFWR】Shift Register Write
SFWR指令是先入先出控制用的數據寫入指令。該指令將源數據寫入一個儲存區域中,等待其他指令調用。其執行效果如下圖所示:
該指令執行時,將源數據S的數值寫入到目標地址D+1中,同時D的數據加一;再次執行時將源數據S的數值寫入到目標地址D+2中,同時D的數據繼續加一。也就是說D內的數據記錄了已經儲存數據的個數,每次執行SFWR指令都會把S的數據填寫到緊接下來的空區域中。
當D內記錄的個數超過n-1時,不會繼續執行數據寫入。
10- 移位讀出【SFRD】Shift Register Read
SFRD指令是先入先出控制用的數據讀出指令。該指令將SFWR指令儲存好的數據一次讀出。其執行效果如下圖所示:
該指令執行時,將源數據S+1的數值寫入到目標地址D中,同時S的數據減一;再次執行時將源數據S+2的數值寫入到目標地址D中,同時S的數據繼續減一。也就是說S內的數據記錄了儲存數據的剩余個數,當S內記錄的個數為0時,不會繼續執行數據讀出。
SFWR指令和SFRD指令配合接口實現先入先出的控制。所謂先入先出,可以想象產品儲存到倉庫的庫位中,按照入庫的順序排列好,在取貨時根據入庫的先后順序優先拿取先入的產品。如以下梯形圖實例: