关于间接寻址

已锁定

BEER2003

  • 帖子

    139
  • 精华

    0
  • 被关注

    4

论坛等级:游士

注册时间:2003-09-12

普通 普通 如何晋级?

关于间接寻址

843

5

2011-08-08 19:23:54

前几天因为想研究字符串比较指令,所以弄来一段程序研究(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了吗?

关于间接寻址 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54717条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。