quote:以下是引用youhm在2013-12-20 21:29:27的发言:
TEMP0的数据类型是个错误,类型不匹配编译是不会通过的
LAR1 P##TEMP0; 和 LAR1 MD 200;
完全不是一回事,前者是把TEMP0的开始地址装载到地址寄存器AR1,后者是把MD200里保存的值装载到地址寄存器,如果MD200里保存的数字不符合地址规范,CPU停机是很正常的事儿。
LAR1 P#M200.0才是等同的。
前边的那个是能运行的,我测试时给改错了,现在更正了。你说的LAR1 P#M200.0是正确的,
但是根据你的说法我把FC2程序改成如下:
L #ADDRESS
SLD 3
T #ADDRESS_1
L ID [#ADDRESS_1]
LAR1
T #OUT //输出应该是个指针
OB1:
CALL FC 2
ADDRESS:=0
OUT :=MD200
LAR1 MD 200
L D [AR1,P#0.0]
T MD 300
这样系统报错,难道这样传递指针参数不可以么?只能用pointer类型参数么?