首页 理论教育 循环与移位指令详解

循环与移位指令详解

时间:2023-07-02 理论教育 版权反馈
【摘要】:循环与移位指令如表4-8所示。表4-8 循环与移位指令1.循环移位指令右、左循环移位指令ROR和ROL编号分别为FNC30和FNC31。图4-32 带进位右、左循环移位指令的使用这两条指令的执行基本上与ROL和ROR相同,只是在执行RCL、RCR时,标志位M8022不再表示向左或向右移出的最后一位的状态,而是作为循环移位单元中的一位处理。2)16位操作指令占5个程序步,32位操作指令占9个程序步。

循环与移位指令详解

循环与移位指令(FNC30~FNC39)如表4-8所示。

表4-8 循环与移位指令

978-7-111-38047-4-Chapter04-38.jpg

1.循环移位指令

右、左循环移位指令(D)ROR(P)和(D)ROL(P)编号分别为FNC30和FNC31。功能是将指定的元件[D.]中的数据向右(右循环)或向左(左循环)循环移动n位,每次最后移出来的那一位再循环送入最高位(右循环)或最低位(左循环)的同时也存入进位标志位M8022中,如图4-31a所示,假设D10中的数据为HFF00,执行这条循环右移指令的示意图如图4-31b所示。ROL指令的执行类似于ROR,只是移位方向相反。

978-7-111-38047-4-Chapter04-39.jpg

图4-31 右、左循环移位指令的使用

a)右、左循环移位示例 b)循环右移指令执行过程示意图

2.带进位的循环移位指令

带进位的循环右、左移位指令(D)RCR(P)和(D)RCL(P)编号分别为FNC32和FNC33。指令功能是将指定元件[D.]中的数据连同进位标志位M8022一起(16位指令时一共17位),按照指令给定的值向右循环(RCR)或向左循环(RCL)移动n位,在循环中移出的位进入进位标志,后者又被送回到目标操作数的另一端,如图4-32所示。

978-7-111-38047-4-Chapter04-40.jpg

图4-32 带进位右、左循环移位指令的使用

这两条指令的执行基本上与ROL和ROR相同,只是在执行RCL、RCR时,标志位M8022不再表示向左或向右移出的最后一位的状态,而是作为循环移位单元中的一位处理。

使用ROR、ROL、RCR、RCL指令时应该注意:

1)目标操作数可取Kn Y、Kn M、Kn S、T、C、D、V和Z,目标元件中指定位元件的组合只有在K4(16位指令)和K8(32位指令)时有效。

2)16位操作指令占5个程序步,32位操作指令占9个程序步。

3)用连续指令执行时,循环移位操作每个周期执行一次。

3.位元件右移和左移指令

位右、左移指令SFTR(P)和SFTL(P)的编号分别为FNC34和FNC35。其功能是把n1个目标位元件中的数据成组地向右(SFTR)或向左(SFTL)移动n2位。n2个源位元件中的数据被补充到空出的目标位元件中。

示例及使用:n1指定为位元件的长度,n2指定为移位的位数,n1和n2的关系及范围因机型不同而有差异,一般为n2≤n1≤1024。位右移指令的使用如图4-33所示。

使用位右移和位左移指令时应注意:

1)源操作数可取X、Y、M、S,目标操作数可取Y、M、S。(www.xing528.com)

2)只有16位操作,占9个程序步。

4.字右移和字左移指令

字右移和字左移指令WSFR(P)和WS-FL(P)指令编号分别为FNC36和FNC37。字右移和字左移指令以字为单位,其工作的过程与位的移位相似,是将n1个字右移或左移n2个字。

978-7-111-38047-4-Chapter04-41.jpg

图4-33 位右移指令的使用

使用字右移和字左移指令时应注意:

1)源操作数可取Kn X、Kn Y、Kn M、Kn S、T、C和D,目标操作数可取Kn Y、Kn M、Kn S、T、C和D。

2)字移位指令只有16位操作,占用9个程序步。

3)n1和n2的关系为n2≤n1≤512。

5.先入先出写入和读出指令

978-7-111-38047-4-Chapter04-42.jpg

图4-34 先入先出写入指令的使用

先入先出写入指令和先入先出读出指令SFWR(P)和SFRD(P)的编号分别为FNC38和FNC39。

先入先出写入指令SFWR的使用如图4-34所示,当X0由OFF变为ON时,SFWR执行,D0中的数据写入D2,而D1变成指针,其值为1(D1必须先清0);当X0再次由OFF变为ON时,D0中的数据写入D3,D1变为2,依次类推,D0中的数据依次写入数据寄存器。D0中的数据从右边的D2顺序存入,源的数据写入的次数放在D1中,当D1中的数达到n-1后不再执行上述操作,同时进位标志M8022置1。

先入先出读出指令SFRD的使用如图4-35所示,当X0由OFF变为ON时,D2中的数据送到D20,同时指针D1的值减去1,D3~D9的数据向右移一个字,数据总是从D2读出,指针D1为0时,不再执行上述操作且M8020置1。

使用SFWR和SFRD指令时应注意:

1)目标操作数可取Kn Y、Kn M、Kn S、T、C和D,源的操作数可取所有的数据类型。

2)指令只有16位运算,占7个程序步。

978-7-111-38047-4-Chapter04-43.jpg

图4-35 先入先出读出指令的使用

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈