前几天因为想研究字符串比较指令,所以弄来一段程序研究(FC),程序如下:
//************************************************************
L P##S1 // Pointer S1为STRING【254】
LAR1 // 将指针传送到第一个寄存器
L P##S2 // Pointer S2为String[254]
LAR2 // 将指针传送到第二个寄存器
L W [AR1,P#0.0] // 得到第一个字符串的DB号
T #w_Temp // 将第一个字符串DB号放到L区
OPN DB [#w_Temp] // 打开S1对应的DB
L D [AR1,P#2.0] // 装载指向字符串的指针
LAR1
L W [AR2,P#0.0] // 得到第二个字符串的DB号
T #w_Temp // 将第二个字符串DB号放到L区
OPN DI [#w_Temp] // 打开S2对应的DB
L D [AR2,P#2.0] // 装载指向字符串的指针
OD DW#16#1000000 // Pointer-Area ID DI
LAR2
SET
SAVE // BIE := 1
L B [AR1,P#1.0] // 因为第二个BYTE中存放的是实际字符串数
+ 1 // 指针偏移一个BYTE
LOP: T #y_Loop // Loopl循环次数
L B [AR1,P#1.0] // Zeichen adressiert durch AR1
L B [AR2,P#1.0] // Zeichen adressiert durch AR2
<>I
JC RESE
+AR1 P#1.0
+AR2 P#1.0
L #y_Loop
LOOP LOP
S #RET_VAL // 字符串相等
JC ENDE
RESE: R #RET_VAL // 字符串不相等
BE
//************************************************************
我不明白的是为什么字符串已经传送到FC块内了,S1,S2为字符串变量,那为什么还要打开它们两个对应的DB块呢?直接将S1,S2所占用的L区每个BYTE,每个BYTE比较不就OK了吗?