首先有个明显的错误, L 2 T MD50 MD50作为存放指针的存储区,你这样的编是不对的; L 2 SLD 3 T MD50 我写的程序,供参考:数据存在mw400开始的7个字里,用SFC20拷贝到DB1开始的7个字里,怎么做的目的是在比较的过程中,数值会被改变,所以增加了一道; CALL "BLKMOV" SRCBLK :=P#M 400.0 BYTE 14 RET_VAL:=MW440 DSTBLK :=P#DB1.DBX0.0 BYTE 14 OPN DB 1 LAR1 P#0.0 L 6 _001: T MW 200 L DBW [AR1,P#0.0] L DBW [AR1,P#2.0] <I JCN _002 TAK T DBW [AR1,P#2.0] _002: +AR1 P#2.0 L DBW [AR1,P#0.0] T MW 300 L MW 200 LOOP _001
这个程序当时是我写的,在模拟的时候发现DB块的数值会被改动,所以增加了一个SFC20,让输入的数据不发生变化;但是总觉的不是很好,后来又写了一个,与大家共同分享下: 7个数据存在DB2.DBW0开始的7个字里,取出的最大数存放在MW520里; 程序如下: OPN DB 2 LAR1 P#0.0 LAR2 P#2.0 L 6 _001: T MW 500 L DBW [AR1,P#0.0] L DBW [AR2,P#0.0] >I JC _002 CAR TAR1 AR2 _002: +AR2 P#2.0 L MW 500 LOOP _001 NOP 0 L DBW [AR1,P#0.0] T MW 520