指令说明:
DNEG为32位连续执行型补码指令,是将操作数[D+1,D]的数据内容中的32个数据位按位取反(0→1,1→0)后再加一,运算的结果传送到原先操作数[D+1,D]中。
因为连续执行型指令则在每一个扫描周期都执行运算,必须要脉冲指令触发条件下使用DNEG指令,务必引起注意。
处理的数值范围:-2147483648 ~ +2147483647
操作数:
D:KnY, KnM, KnS,T,C,D,Z,V,LV,DT
指令格式:[DNEG D ]
编程示例:
控制器上电,M8002瞬间导通一次,DMOV指令执行,将常数50000传送到D1D0,当X0的上升沿脉冲触点触发时,DNEG指令执行,将D1D0里面的32个数据位按位取反后加一,补码后的D1D0的数据为-50000,是原来的负数。

D1D0=50000时,执行DNEG指令,D1D0的数据位变化
|
D1的16个数据为高位 |
D0的16个数据为低位 | ||||||||||||||||||||||||||||||
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
D1D0的数据按位取反,它们的数据变化
|
D1的16个数据为高位 |
D0的16个数据为低位 | ||||||||||||||||||||||||||||||
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
D1D0取反后的数据再加一,它们的数据变化
|
D1的16个数据为高位 |
D0的16个数据为低位 | ||||||||||||||||||||||||||||||
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
D1D0的数据经过取反加一运算后,D1D0= -50000。