算术运算包括ADD,SUB,MUL,DIV(二进制加、减、乘、除)指令,源操作数可取所有的数据类型,目标操作数可取KnY , KnM , KnS , T , C , D , V, 和Z,,32 位乘除指令中V 和Z 不能用个目标操作数。 每个数据的最高位为符号位(0 为正,1 为负),所有的运算均为代数运算。在32 位运算中被指定的字编程元件为低位字,下一个字编程为高位字。为了避免错误,建议指定操作元件时采用偶数元件号。如果目标元件与源元件相同,为避免每个扫描周期都执行一次指令,就采用脉冲执行方式。 如果运算结果为0,零标志M8020 置1;运算结果超过32767(16 位运算)或2147483647(32 位运算),进位标志M8022 置1; 运算结果小于 —32768(16 位运算)或 —2147483648(32 位运算),借位标志M8021 置1。 如果目标操作数(如KnM)的位数小于运算结果,将只保存运算结果的低位。例如运算结果为二进制11001(十进制数25),指定的目标操作数为K1Y4 (由 Y4 ~ Y7 组成的4位二进制数),实际上只能保存低位的二进制数1001(十进制数9)! 令M8023 为ON,可用算术运算指令作32 位浮点数运算。 加法指令A D D : 加法指令ADD(Addition)将源元件的二进制数相加,结果送到指定的目标元件。 实际例子分析: 减法指令: 减法指令SUB(Su btraction)将[S1]指定的元件中的数减去[S2]指定的元件中的数,结果送到[D]指定的目标元件。 下面是一个实际例子: 乘法指令: 16 位乘法指令MUL(Mu ltiplication)将源元件中的二进制数相乘,结果(32 位)送到指定的目标元件。32 位乘法的结果为 64 痊。目标位元件(如 KnM)的位数如果小于运算结果的位数,只能保存结果的低位。 16 位运算 32 位运算: 除法指令: 除法指令DIV(Division)用[S1]除以[S2],商送到目标元件,余数送到[D]的下一个元件。若除数为 0 则出错,不执行该指令。若位元件被指定为目标元件,不能获得余数,商和余数的最高位为符号位。 16 位运算 加1 指令INC(Increment)和减1 指令DEC(Decrement)的操作数均可取 KnY , KnM , KnS , T , C , D , V, 和Z。它们不影响零标志、借位标志和进位标志。 自加1 指令: 实例分析: 自减1 指令: