TIAv17环境下再次学习练习STL-82RRD循环右移双字(32位)

标签:
西门子tiastl编程rrd指令 |
分类: 西门子软硬件 |
继续学习TIA环境下STL编程,本篇学习RRD 循环右移双字(32
位)。
RRD(循环右移双字)逐位向右循环移动 ACCU 1
的整个内容。循环移位指令空出的位由 ACCU 1 中移出位的信号状态填充。最后移出的位被装载到状态位 CC 1 中。而地址<数目>或
ACCU 2-L-L 中的数值则指定要循环移位的位数目。
RRD
<数目>:地址<数目>指定循环移位的数目。允许的数值范围为 0 - 32。当<数目>大于 0
时,将状态字的位 CC 0 和 OV 复位为
0。当<数目>等于 0 时,则将此循环移位指令视为 NOP 操作。
RRD:循环移位的数目由 ACCU 2-L-L
中的数值指定。可能的数值范围为 0 - 255。当 ACCU 2-L-L的数值大于 0 时,复位状态字的位为 0。
在前面练习的基础上添加STL程序段。
十进制11转换成32位是0000,0000,0000,0000,0000,0000,0000,1011,循环右移第一次结果是1000,0000,0000,0000,0000,0000,0000,0101;循环右移第二次结果是1100,0000,0000,0000,0000,0000,0000,0010;循环右移第三次结果是0110,0000,0000,0000,0000,0000,0000,0001,最后一次移出的数是0,所以CC1=0,最终结果十进制是1610612737.
十进制-11转换成32位是0000,0000,0000,0000,1000,0000,0000,1011,反码是0000,0000,0000,0000,1111,1111,1111,0100,补码是0000,0000,0000,0000,1111,1111,1111,0101,循环右移第一次结果是1000,0000,0000,0000,0111,1111,1111,1010;循环右移第二次结果是0100,0000,0000,0000,0011,1111,1111,1101;循环右移第三次结果是1010,0000,0000,0000,0001,1111,1111,1110;最后一次移出的数是1,CC1=1,最高位1,还原成反码是1010,0000,0000,0000,0001,1111,1111,1101;还原成源码是1101,1111,1111,1111,1110,0000,0000,0010,对应十进制数是-1610604546