N>3 的任意位数的循环移位

已锁定

我心依旧555

  • 帖子

    769
  • 精华

    9
  • 被关注

    34

论坛等级:奇侠

注册时间:2009-09-12

普通 普通 如何晋级?

N>3 的任意位数的循环移位

1772

2

2011-04-06 15:03:59

//以下是循环左移位的程序
L 1 //移位的位数
T #bSNum
L 8 //需要移位的地址总数
T #bNum
//保存移出的位
L P#M 110.0 //需要移位起始地址
LAR1
T #dwAdd
LAR2 P##wReg
L #bNum
DEC 1
TAR1
+D
LAR1
L #bSNum //循环初始化
cyc1: T #bTemp
A [AR1,P#0.0]
= [AR2,P#0.0]
TAR2
+ 1
LAR2
TAR1
L L#1
-D
LAR1
L #bTemp
LOOP cyc1

//循环左移位
L #dwAdd
LAR1
LAR2
L #bNum
DEC 1
TAR1
+D
LAR1
L #bNum
L #bSNum
-I
L 1
-I
TAR2
+D
LAR2
L #bNum
L #bSNum
-I
cyc2: T #bTemp //循环初始化
A [AR2,P#0.0]
= [AR1,P#0.0]
TAR1
L L#1
-D
LAR1
TAR2
L L#1
-D
LAR2
L #bTemp
LOOP cyc2
//装入移出的位
LAR2 #dwAdd //装入起始地址
LAR1 P##wReg //装入绶存的起始地址
L #bSNum
DEC 1
TAR2
+D
LAR2
L #bSNum //循环初始化
cyc3: T #bTemp
A [AR1,P#0.0]
= [AR2,P#0.0]
TAR1
+ 1
LAR1
TAR2
L L#1
-D
LAR2
L #bTemp
LOOP cyc3
注意:未考虑数据的有效性、扫描周期(最大128地址时移位100多位时出错了),指令还可以更加简洁,相信还有更加高效的算法.
对于局部变量如果通过指针间接访问未定义的变量不知道会不会破坏数据区,关系到wReg变量的定义。
N>3 的任意位数的循环移位 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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