L 0 //初始化临时变量#ADD_TEMP。 T #ADD_TEMP L P##In_Data //指向存储地址指针P#M100.0的首地 址,并装载到地址寄存器AR1中。 LAR1 L 0 //判断OB1中赋值的地址指针是否为数 据块(参考POINTER的数据格式)。 L W [AR1,P#0.0] ==I JC M1 T #BLOCK_NO OPN DB [#BLOCK_NO] //如果是DB块,打开指定的DB块。 M1: L D [AR1,P#2.0] //找出需要计算数据区的开始地址, POINTER数据中,后4个字节包含内部 交叉指针,将 LAR1 P#M100.0装载到AR1中。 L 0 L #NO //如果输入变量个数为0,结束FC3的 执行。如果不等于0作为循环执 ==I 行的次数(NO_TEMP)。 JC END NO: T #NO_TEMP //循环执行加运算,本例中循环执行的次 数为4。 L D [AR1,P#0.0] //装载MD100到累加器1中。 L #ADD_TEMP //与临时变量#ADD_TEMP相加后将计算结 +R 果再存储于#ADD_TEMP中。 T #ADD_TEMP +AR1 P#4.0 //地址寄存器加4,下一次于MD104相加。 L #NO_TEMP //LOOP 指令固定格式。 LOOP NO //跳回“NO”循环执行,执行完定义在变 量#NO_TEMP的次数后自动跳出循环程序。 L #ADD_TEMP //求平均值,装载运算结果到累加器1中。 L #NO DTR //将变量个数转变为浮点值便于运算。 /R T #OUT_VAL //输出运算结果。 END: NOP 0