FX3U/5U/Q/R 都一样:负 × 正 = 负;负 × 负 = 正;正 × 正 = 正
一、指令要点(FX 系列)
MUL(FNC22,16 位源 × 16 位源)
MUL D0 D1 D2
D0、D1:16 位有符号数(范围 -32768 ~ +32767)
结果是 32 位,自动存入:D2 (低 16bit)、D3 (高 16bit)
示例:D0=K-5,D1=K8 → 结果 D3D2 = K-40ManualsLib
DMUL(FNC22,32 位源 × 32 位源)
DMUL D0 D2 D4
(D1,D0)、(D3,D2):32 位有符号数(-2147483648 ~ 2147483647)
结果是 64 位,占用:D4、D5、D6、D7 四个 D 寄存器
适合工程量、温差、偏差换算(正负量程)
浮点数负数相乘:EMUL(FNC122),REAL 实数,同样支持正负
二、新手注意
MUL 的结果占 2 个 D,DMUL 占 4 个 D,不要重叠地址!比如写
MUL D0 D1 D3,结果写到 D3、D4;如果你后面还要用 D3 做别的数,直接被冲掉。16 位寄存器本身存负数没问题,但超过 ±32767 就溢出变乱负数,这种不是乘法错了,是源数据超范围。
三、简单例子
X0 ON: MUL K-10 K-20 D10 → (-10) × (-20) = +200 存入D11 D10 MUL K-10 K20 D20 → (-10) × 20 = -200
四、补充区分
MUL、DMUL:有符号(默认,支持负数)
MUL_U / DMUL_U:无符号乘法,只能正数,负数算出来会乱,不要混用(FX5U、iQ-R 才有_U 后缀)

