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

循环和移位指令详解

时间:2023-06-26 理论教育 版权反馈
【摘要】:循环与移位指令见表6-8。2)16位指令占5个程序步,32位指令占9个程序步。3)用连续指令执行时,循环移位操作每个周期执行一次。n1指定位元件的长度,n2指定移位位数,n1和n2的关系及范围因机型不同而有差异,一般为n2≤n1≤1024。

循环和移位指令详解

循环与移位指令(FNC30~FNC39)见表6-8。

表6-8 循环与移位指令

978-7-111-40557-3-Chapter06-62.jpg

1.循环移位指令

右、左循环移位指令ROR、(D)ROR(P)和ROL、(D)ROL(P)编号分别为FNC30和FNC31。执行这两条指令时,各位数据向右(或向左)循环移动n位,最后一次移出来的那一位同时存入进位标志M8022中,如图6-51所示。

X000从OFF到ON每变化一次,则移位n位,最终位被存入进位标志中。

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

带进位的循环右、左移位指令RCR(D)、RCR(P)和RCL(D)、RCL(P)编号分别为FNC32和FNC33。执行这两条指令时,各位数据连同进位(M8022)向右(或向左)循环移动n位,如图6-52所示。

X000从OFF到ON每变化一次,则进行n位移位。

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

978-7-111-40557-3-Chapter06-63.jpg

图6-51 循环移位指令

978-7-111-40557-3-Chapter06-64.jpg

图6-52 带进位的循环移位指令

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

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

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

3.位右移和位左移指令

位右、左移指令SFTR(P)和SFTL(P)的编号分别为FNC34和FNC35,它们使位元件中的状态成组地向右(或向左)移动。n1指定位元件的长度n2指定移位位数,n1和n2的关系及范围因机型不同而有差异,一般为n2≤n1≤1024。位右、左移指令见表6-9。

表6-9 位右、左移指令

978-7-111-40557-3-Chapter06-65.jpg

两条指令使位软元件中的状态向右/向左移位,如图6-53和图6-54所示。

978-7-111-40557-3-Chapter06-66.jpg

图6-53 位右移指令执行

978-7-111-40557-3-Chapter06-67.jpg(www.xing528.com)

图6-54 位左移指令执行

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

1)源操作数可取X、Y、M、S,目标操作数可取Y、M、S。

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

4.字右移和字左移指令

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

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

1)源操作数可取KnX、KnY、KnM、KnS、T、C、D,目标操作数可取KnY、KnM、KnS、T、C、D。

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

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

【例6-22】 (见图6-55)

978-7-111-40557-3-Chapter06-68.jpg

图6-55 字右、左移指令

5.移位写入和读出指令

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

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

1)目标操作数可取KnY、KnM、KnS、T、C、D,源操数可取所有的数据类型。

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

移位控制示例如图6-56所示。

【例6-23】 登记产品编号时,为了能实现依次入库,物品按照先入先出的原则出库,图6-56所示为输出当前应取出产品编号的梯形图。产品编号是4位以下十六进制数值,最大库存量在99点以下。

来自X000~X017的产品编号被传送到D256。D257作为指针,D258~D356的99点作为产品编号保存用数据寄存器。对应于出库要求,先入产品编号被输出至D357中。应该取出的产品的编号以4位十六进制数方式输出到Y000~Y017中。

978-7-111-40557-3-Chapter06-69.jpg

图6-56 移位控制示例

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

我要反馈