首页 理论教育 移位指令的相关链接

移位指令的相关链接

时间:2023-06-18 理论教育 版权反馈
【摘要】:移位指令分为左、 右移位。移位指令中, 被移位的数据是无符号的, 移位次数N 与移位数据长度有关。移位指令对移出位自动补0。 双字左、 右移位指令。表3-6-9字循环左、 右移位指令格式字循环左移位 和字循环右移位 指令把输入字 左移或右移N 位后, 输出到字。图3-6-8寄存器移位指令的执行情况 左移位; 右移位寄存器移位指令的编程实例如图3 -6 -9 所示。

移位指令的相关链接

移位指令分为左、 右移位。 循环左、 右移位, 以及寄存器移位指令3 大类。 左、 右移位和循环左、 右移位指令按移位数据的长度又分为字节型、 字型、 双字型3 种。

1. 左、 右移位指令

左、 右移位指令在使能端输入有效时, 将输入的字节、 字或双字(IN) 左、 右移N 位后(右、 左端补0), 将结果输出到所指定的存储单元(OUT), 最后一次移出位保存在特殊存储器中(SM1.1 =1)。 移位指令中, 被移位的数据是无符号的, 移位次数N 与移位数据长度有关。

(1) 字节左、 右移位指令。 字节左、 右移位指令格式如表3 -6 -5 所示。

表3-6-5 字节左、 右移位指令格式

字节左移位(SLB) 和右移位(SRB) 指令把输入字节(IN) 左移或右移N 位后, 输出到字节(OUT)。 移位指令对移出位自动补0。

(2) 字左、 右移位指令。 字左、 右移位指令格式如表3 -6 -6 所示。

表3-6-6 字左、 右移位指令格式

字左移位(SLW) 和右移位(SRW) 指令把输入字(IN) 左移或右移N 位后, 输出到字(OUT)。

(3) 双字左、 右移位指令。 双字左、 右移位指令格式如表3 -6 -7 所示。

表3-6-7 双字左、 右移位指令格式

双字左移位(SLD) 和右移位(SRD) 指令把输入双字(IN) 左移或右移N 位后, 输出到双字(OUT)。

2. 循环左、 右移位指令

循环左、 右移位指令在使能端输入有效时, 字节、 字或双字数据(IN) 循环左、 右移N 位后(右、 左端补0), 将结果输出到所指定的存储单元(OUT), 并将最后一次移出位送特殊存储器(SM1.1 =1)。

(1) 字节循环左、 右移位指令。 字节循环左、 右移位指令格式如表3 -6 -8 所示。

表3-6-8 字节循环左、 右移位指令格式

字节循环左移位(RLB) 和字节循环右移位(RRB) 指令把输入字节(IN) 左移或右移N 位后, 输出到字节(OUT)。

(2) 字循环左、 右移位指令。 字循环左、 右移位指令格式如表3 -6 -9 所示。

表3-6-9 字循环左、 右移位指令格式

字循环左移位(RLW) 和字循环右移位(RRW) 指令把输入字(IN) 左移或右移N 位后, 输出到字(OUT)。

(3) 双字循环左、 右移位指令。 双字循环左、 右移位指令格式如表3 -6 -10 所示。

表3-6-10 双字循环左、 右移位指令格式(www.xing528.com)

双字循环左移位(RLD) 和双字循环右移位(RRD) 指令把输入双字(IN) 左移或右移N 位后, 输出到双字(OUT)。

字循环右移位和字左移位指令的应用实例及指令执行过程如图3 -6 -7 所示。

图3-6-7 字循环右移位和字左移位指令的应用实例及指令执行过程

(a) 梯形图; (b) 语句表; (c) 字循环右移位指令的执行过程; (d) 字左移位指令的执行过程

3. 寄存器移位指令

寄存器移位指令是一个移位长度可指定的移位指令。 指令执行时, DATA 位的值移入移位寄存器。 寄存器移位指令格式如表3 -6 -11 所示。

在表3 -6 -11 中, S_BIT 为移位寄存器的最低位, N 为移位寄存器的长度(1 ~64)。每次使能端有效时, 整个移位寄存器移动1 位。 N 为正值时, 左移位(由低位到高位),DATA 的值从S_BIT 移入, 移出位进入特殊存储器(SM1.1 =1); N 为负值时右移位(由高位到低位), S_BIT 移出到特殊存储器(SM1.1 =1), 高端补充DATA 移入位的值。 最高位的计算方法为: [N 的绝对值-1 + (S_BIT 的位号)] /8, 余数即是最高位的位号, 商与S_BIT 的字节号之和即是最高位的字节号。 移位寄存器最多移位长度为64 位。

表3-6-11 寄存器移位指令格式

当S_BIT 为V20.5, N= +14 (左移位) 和N= -14 (右移位) 时, 寄存器移位指令的执行情况如图3 -6 -8 所示。

图3-6-8 寄存器移位指令的执行情况

(a) 左移位; (b) 右移位

寄存器移位指令的编程实例如图3 -6 -9 所示。

图3-6-9 寄存器移位指令的编程实例

(a) 梯形图; (b) 语句表; (c) 时序图; (d) 移位过程

4. 任务扩展

有一组指示灯HL1 ~HL8, 要求按下启动按钮后, 能左右单灯循环显示, 用一个开关控制循环的启动和停止, 另一个开关控制循环方向, 循环移动周期为1 s。 指示灯循环显示控制梯形图如图3 -6 -10 所示。

图3-6-10 指示灯循环显示控制梯形图

思考与练习

1. 用数据传送指令编写一段梯形图, 使3 台电动机相隔10 s 依次启动。

2. 分析寄存器移位指令和左、 右移位指令的区别。

3. 编写出将IB0 字节的高低4 位数据交换, 然后送入定时器T38 作为定时器预置值的梯形图。

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

我要反馈