恭喜,你发布的帖子
发布于 2023-02-28 17:17:50
3楼
以下是经过加工的代码:
SET
SAVE // BIE setzen
L P##IN1 // 输入1,指针起始地址(p#dbn.dbn.0 输入是如何转换成地址数据的?
P##IN1是间接寻址指针。这个32位的指针的每一个位的物理意义是固定的,你需要看指针的说明
LAR1 // in Adre?register 1 ablegen 加载到AR1
L W [AR1,P#0.0] // DB-Nr. aus Lokaldaten IN1 读取DB块号所在的地址?W是什么意思?输入如何转换的?
W是字长度,他是一个word,这句话的意思是读取AR1这里保存的db中的起始地址,P#0.0指的是偏移量是0.0的位置开始
T #数据源1的DB编号 // zwischenspeichern
OPN DB [#数据源1的DB编号] // Quell-DB, falls vorhanden 打开DB块
L D [AR1,P#2.0] // Pointer auf String IN1 laden D又是什么?doubleword?
LAR1 // ins Adre?register 1 ACCU1装载到AR1
T #地址寄存器IN1
L B [AR1,P#1.0] // L?nge String 1 这是读取的什么?从哪里读的数据长度?
这里是读取一个字符串,字符串的开始有一个特殊字符表示字符串开始,第二个字节是字符串的长度,这里只是取了字符串的长度信息给了下面的T指令对应的变量。
T #IN1的字符长度
L P##IN2 // Pointer 输入2,指针起始地址(p#dbn.dbn.0)下面跟上面差不多
LAR2 // in Adre?register 2 ablegen
L W [AR2,P#0.0] // DB-Nr. aus Lokaldaten IN1
T #数据源2的DB编号 // zwischenspeichern
OPN DB [#数据源2的DB编号] // Quell-DB, falls vorhanden
L D [AR2,P#2.0] // Pointer auf String IN2 laden
LAR2
T #地址寄存器IN2 // zwischenspeichern
L B [AR2,P#1.0] // res. L?nge String 2
T #IN2的字符长度
L P##RET_VAL // Pointer 返回值接入位置,也是指针起始地址
LAR2 // in Adre?register 2 ablegen
L W [AR2,P#0.0] // DB-Nr. aus Lokaldaten RET_VAL
T #w_Temp // zwischenspeichern 润滑标记
OPN DI [#w_Temp] // Quell-DB, falls vorhanden 源数据库(如果可用)
L D [AR2,P#2.0] // Pointer auf String RET_VAL
OD DW#16#1000000 // Pointer-Bereichskennung DI
LAR2 // ins Adre?register 2
L B [AR2,P#0.0] // res. L?nge Ziel
T #目标保存长度
前辈,恳请赐教!
请填写推广理由:
分享
只看
楼主