发表于:2014/4/9 23:35:11
#0楼
编写一个计算功能的函数FC3,输入首地址“In_Data”及连续浮点格式变量的个数"NO"后,输出几个变量的平均值"OUT_VAL"
OB1中调用函数FC3程序如下:
CALL FC 3
In_Data:=P#M100.0
NO:=4
OUT_VAL:=MD20
FC3接口参数
数据接口 名称 数据类型 地址
IN In_Data Pointer
IN NO INT
OUT OUT_VAL Real
TEMP BLOCK_NO INT 0.0
TEMP NO_TEMP INT 2.0.
TEMP ADD_TEMP REAL 4.0
L 0
T #ADD_TEMP
L P##In_Data
LAR1
L 0
L W[AR1,P#0.0]
==I
JC M1
T #BLOCK_NO
OPN DB[#BLOCK_NO]
M1: L D[AR1,P#2.0]
LAR1
L 0
L#NO
==I
JC END
NO: T #NO_TEMP
L D[AR1, P#0.0]
L #ADD_TEMP
+R
T #ADD_TEMP
+AR1 P#4.0
L #NO_TEMP
L #NO_TEMP
LOOP NO
L #ADD_TEMP
L #NO
DTR
/R
T #OUT_VAL
END: NOP 0
这段程序有几个地方看不懂
1. L 0
L W[AR1,P#0.0]
==I
通过这两句程序判断#In_Data是否为DB块,为什么?(程序提示是参考POINTER的数据格式)
2. T #BLOCK_NO
OPN DB[#BLOCK_NO]
程序提示是说如果判定其为DB块,则需要打开DB块,为什么要打开该DB块,对程序有什么用处?
3. M1: L D[AR1,P#2.0]
程序提示说是找出计算数据区的开始地址,POINTER数据中,后四个字节包含内部交叉指针,将P#100.0装载到AR1中。 为什么,本来给的不就是开始地址吗,为什么还要再去找开始地址?
OB1中调用函数FC3程序如下:
CALL FC 3
In_Data:=P#M100.0
NO:=4
OUT_VAL:=MD20
FC3接口参数
数据接口 名称 数据类型 地址
IN In_Data Pointer
IN NO INT
OUT OUT_VAL Real
TEMP BLOCK_NO INT 0.0
TEMP NO_TEMP INT 2.0.
TEMP ADD_TEMP REAL 4.0
L 0
T #ADD_TEMP
L P##In_Data
LAR1
L 0
L W[AR1,P#0.0]
==I
JC M1
T #BLOCK_NO
OPN DB[#BLOCK_NO]
M1: L D[AR1,P#2.0]
LAR1
L 0
L#NO
==I
JC END
NO: T #NO_TEMP
L D[AR1, P#0.0]
L #ADD_TEMP
+R
T #ADD_TEMP
+AR1 P#4.0
L #NO_TEMP
L #NO_TEMP
LOOP NO
L #ADD_TEMP
L #NO
DTR
/R
T #OUT_VAL
END: NOP 0
这段程序有几个地方看不懂
1. L 0
L W[AR1,P#0.0]
==I
通过这两句程序判断#In_Data是否为DB块,为什么?(程序提示是参考POINTER的数据格式)
2. T #BLOCK_NO
OPN DB[#BLOCK_NO]
程序提示是说如果判定其为DB块,则需要打开DB块,为什么要打开该DB块,对程序有什么用处?
3. M1: L D[AR1,P#2.0]
程序提示说是找出计算数据区的开始地址,POINTER数据中,后四个字节包含内部交叉指针,将P#100.0装载到AR1中。 为什么,本来给的不就是开始地址吗,为什么还要再去找开始地址?