回复:怎样实现64位循环左移?(转)

小西门

  • 帖子

    58
  • 精华

    0
  • 被关注

    5

论坛等级:游民

注册时间:2011-10-23

普通 普通 如何晋级?

发布于 2011-10-24 17:02:36

89楼

S7-300/400只有32位的循环移位指令,和32位加CC1的循环移位指令。下面是我编的程序,MD10和MD14组成64位数据,MD10在高32位。
在I0.0的上升沿,分别将MD10和MD14循环左移1位,然后交换它们的最低位M13.0和M17.0的值,就能实现64位数据的循环左移1位。
A I 0.0
FN M 1.0
JCN _001 //不是I0.0的上升沿则跳转
L MD 10
RLD 1 //双字左移一位
T MD 10
L MD 14
RLD 1 //双字左移一位
T MD 14
A M 13.0
= M 1.1 //暂存M13.0
A M 17.0
S M 13.0 //以下程序交换M13.0和M17.0的值
AN M 17.0
R M 13.0
A M 1.1
S M 17.0
AN M 1.1
R M 17.0
_001: NOP 0
此程序已用仿真验证,下图中的修改数值是移位之前MD10和MD14的值,状态值是循环左移4位后的值。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54765条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。