首页 理论教育 实训十九:移位与循环移位指令仿真实验

实训十九:移位与循环移位指令仿真实验

时间:2023-06-20 理论教育 版权反馈
【摘要】:令MW38分别为0和20,观察移位的结果。移位位数大于16时,原有的数据被全部移出去了,MW42的各位均为符号位1,其值为16#FFFF。将移位次数分别修改为2、8和16,观察移位的结果。

实训十九:移位与循环移位指令仿真实验

1.移位指令概述

移位指令将累加器1的低字或累加器1的全部内容左移或右移若干位(见表3-12)。

无符号数(字或双字)移位后空出来的位填以0,有符号数(整数或双整数)右移后空出来的位填以符号位对应的二进制数,正数的符号位为0,负数的符号位为1。最后移出的位被装入状态字的CC1位。

3-12 移位指令

978-7-111-31641-1-Chapter03-122.jpg

2.有符号数右移指令

图3-83中的SHR_I指令将有符号16位整数右移4位。打开PLCSIM,将程序下载到仿真PLC,将仿真PLC切换到RUN-P模式。在PLCSIM中将-8000输入MW40,在变量表中设置MW40和MW42的显示格式为BIN(二进制),可以看到右移4位的效果(见图3-84)。右移4位相当于除以24,移位后的数为-500。右移后空出来的位用符号位1填充。

令MW38分别为0和20(移位位数大于16),观察移位的结果。移位位数大于16时,原有的数据被全部移出去了,MW42的各位均为符号位1,其值为16#FFFF。

978-7-111-31641-1-Chapter03-123.jpg

图3-83 有符号数右移指令

978-7-111-31641-1-Chapter03-124.jpg

图3-84 变量表

下面是用STEP 7转换图3-83中的程序得到的语句表程序。

978-7-111-31641-1-Chapter03-125.jpg

3.无符号数移位指令

图3-85是无符号字左移4位的移位指令,在PLCSIM中将50输入MW44。在变量表中设置MW44和MW46的显示格式为BIN(二进制),可以看到左移4位的效果(见图3-86)。左移4位相当于乘以24,移位后的数为800,左移后空出来的位添0。

将移位次数分别修改为2、8和16,观察移位的结果。(www.xing528.com)

将图3-85中的OUT的实参MW46改为MW44,观察程序运行的结果并解释原因。在I0.4的触点右边添加一个上升沿检测线圈,用I0.4的上升沿启动移位,观察程序运行的结果。

978-7-111-31641-1-Chapter03-126.jpg

图3-85 无符号数左移指令

978-7-111-31641-1-Chapter03-127.jpg

图3-86 变量表

4.循环移位指令

循环移位指令(见图3-87)将累加器1的整个内容逐位循环左移或循环右移若干位(见表3-13),即移出来的位又送回累加器1另一端空出来的位,最后移出的位装入状态字的CC1位。N为移位的位数,移位的结果保存在输出参数OUT指定的地址

3-13 循环移位指令

978-7-111-31641-1-Chapter03-128.jpg

在PLCSIM中输入MD50和MW48的十六进制数值,在变量表中设置MD50和MD54的显示格式为BIN(二进制),图3-87和图3-88给出了双字循环左移8位的例子。

978-7-111-31641-1-Chapter03-129.jpg

图3-87 循环左移指令

978-7-111-31641-1-Chapter03-130.jpg

图3-88 变量表

将移位次数分别修改为0、4、16和20,观察移位的结果。

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

我要反馈