MW型整数的绝对值指令有吗?
刘玉蓉
发布于2014-10-23 17:58
24
0
标签:
16位整数的绝对值指令有吗?
我知道32位浮点数有绝对值指令的,但是MW却没有找到。
佳答案
16位整数的绝对值指令有吗?
没有16位整数的绝对值指令。可以自己编写,设A为一16位整数,其高位为符号位。负数用补码表示(高位是符号位,其余位为数字的原码取反+1 )
求A的绝对值方法:
1、判断A是否大于对于0,即为正数,还是为负数。
2、如为正数,绝对值就是其本身;
3、如为负数,即已知负数A,应用NEGI 对整数求补码(16 位)指令。
NEGI 对整数求补码(16 位):
使用对整数求补码指令( NEGI),可以对累加器 1 低字中的 16 位数值求补码。
求补码指令为逐位转换,即“0”变为“1”,“1”变为“0”;然后对累加器中的内容加“1”。转换结果保存在累加器 1 的低字中。求补码指令相当于该数乘以“-1”。
例如16位整数FFFFH表示为-1,其取反后加1后得1.即-1乘以“-1”得1.
随手写了一段,未加实际运行,仅供参考:
L MW10//取16位整数
L 0//取常数0
>=I
JC M001//若 RLO = 1,则跳转,即如大于等于0(正数)跳到M001
L MW10
NEGI//如为负数,则乘以-1,即取绝对值。
M001:T MW10//保存结果。
相关文档:
《用于S7-300 和S7-400 的语句表(STL)编程手册》下载:
https://www2.ad.siemens.com.cn/download/Upload/AS/manual/1008[1].pdf