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