菜鸟:
下面的一段程序读不懂,恳请高手指点,谢谢!
L 16
LA15: T #loopcounter
SET
R #h_temp_bit_1
//Lade Tempor鋜e Adresse von Variable Temp_Dint_1 (dort liegen die saved Pos)
L P##temp_word_1
L #address_counter
+D
//Lade das Adressregister 1 mit Inhalt aus Akku 1
LAR1
L P##temp_word_3
L #address_counter
+D
LAR2
A L [AR2,P#0.0]
S #h_temp_bit_1
L P##temp_word_2
L #address_counter
+D
LAR2
//If Saved Pos = 1 , Actual Pos = 0 and Set Pos = 0 then Override
A L [AR1,P#0.0]
AN L [AR2,P#0.0]
AN #h_temp_bit_1
JCN OVR1
S #MAN_OVERRIDE_ACTIVE
L #address_counter
INC 1
T #OVERRIDE_POSITION
JC end
OVR1: NOP 0
L #address_counter
INC 1
T #address_counter
L #loopcounter
LOOP LA15
end: NOP 0
大虾:
你*好把问题的范围缩小点。
菜鸟:
问题:AR1存放的应该是一个整数的地址,L[AR1,P#0.0]代表什么呢?
大虾:
ar1指向临时变量temp_word_1的地址(比如l10.0)加上address_counter(比如p#6.0 即l#48)
l[ar1,p#0.0]指的是l16.0
菜鸟:
A L[AR1,P#0.0]是什么意思呢?
大虾:
ar1指向临时变量temp_word_1的地址(比如l10.0)加上address_counter(比如p#6.0 即l#48)
l[ar1,p#0.0]指的是l16.0
那就是a l16.0
你把程序贴全了,包括输入输出以及临时变量,就能分析出来了
菜鸟:
完整的程序:
L #SAVED_POSITION
L #ACTUAL_POSITION
==I
JC end
L #SAVED_POSITION
T #temp_word_1
L #ACTUAL_POSITION
T #temp_word_2
L #SET_POSITION
T #temp_word_3
L 0
T #address_counter
L 16
LA15: T #loopcounter
SET
R #h_temp_bit_1
//Lade Tempor鋜e Adresse von Variable Temp_Dint_1 (dort liegen die saved Pos)
L P##temp_word_1
L #address_counter
+D
//Lade das Adressregister 1 mit Inhalt aus Akku 1
LAR1
L P##temp_word_3
L #address_counter
+D
LAR2
A L [AR2,P#0.0]
S #h_temp_bit_1
L P##temp_word_2
L #address_counter
+D
LAR2
//If Saved Pos = 1 , Actual Pos = 0 and Set Pos = 0 then Override
A L [AR1,P#0.0]
AN L [AR2,P#0.0]
AN #h_temp_bit_1
JCN OVR1
S #MAN_OVERRIDE_ACTIVE
L #address_counter
INC 1
T #OVERRIDE_POSITION
JC end
OVR1: NOP 0
L #address_counter
INC 1
T #address_counter
L #loopcounter
LOOP LA15
end: NOP 0
A #GOTO_OVERRIDE
JCN Got1
L #OVERRIDE_POSITION
T #DISPLAY_No
SET
R #GOTO_OVERRIDE
Got1: NOP 0
L #OVERRIDE_POSITION
L #DISPLAY_No
==I
JCN OVR2
SET
S #OVERRIDED
OVR2: NOP 0
大虾:
我说的是输入和输出以及temp
菜鸟:
A L [AR1,P#0.0]:读取临时变量L[AR1,P#0.0],偏移量为0