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指令配合接口实现先入先出的控制。所谓先入先出,可以想象产品储存到仓库的库位中,按照入库的顺序排列好,在取货时根据入库的先后顺序优先拿取先入的产品。如以下梯形图实例: