发布于 2015-01-31 08:52:57
7楼
按照Zane版移位的提示和思路,试着写了一下,应该能满足楼主要求。当然也有其它方法,有兴趣的朋友也可以写点代码。
L 0
T MW 104 //将计数器清零
L MD 100 //装载当前20个bool量的状态,(20个bool量从第0位开始,向高位连续排列)
T LD 22 //将20个bool量的状态暂存到临时变量中(主要用于循环体内的移位运算)
L 20 //装载循环次数(20次)
NEXT: T LW 20 //将循环次数暂存到临时变量
L L#1 //装载长整数1(其实就是二进制数第0位为1)
L LD 22 //装载bool量的状态
AD //双字的与操作(ACCU1&ACCU2)取第0位的状态
==D //判断与的结果(ACCU1的内容)第0位是否等于1
JCN M001 //如果第0位是1,往下执行;如果第0位是0,跳转到M001
L MW 104 //装载当前计数器的累计值
+ 1 //计数器自加1
T MW 104 //存储计数器当前值(累计bool量个数)
L 4 //装载常数4
>=I //判断计数器当前值是否大于等于4
= M 106.0 //将当前的逻辑结果RLO赋给M106.0(输出)
JC OUT //如果计数器当前值大于等于4,跳转到OUT离开循环体,否则往下执行
M001: L LD 22 //装载bool量的状态到ACCU1
SRD 1 //ACCU1里面的内容右移一位,为判断下一个位做准备
T LD 22 //暂存右移一位后的bool量的状态
L LW 20 //装载当前的循环次数
LOOP NEXT //跳转到NEXT标签,循环次数减1,至0时,离开循环往下执行
OUT: NOP 0
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”