试题详情
简答题如何在多例兼容功能块中找到变量地址?
  • 在多例兼容功能块中,为块参数和静态本地数据加载与地址寄存器AR2有关的绝对地址。如果要在情景数据块中找到变量的绝对地址,则必须把域内指针(只是AR2的地址)加载到变量地址。
    样例:
    TAR2//将地址寄存器加载到累加器AC1(偏移量)
    UDDW#16#00FF_FFFF//关闭区域ID
    LP##variable//加载变量地址
    +D//增加偏移量和变量地址
    LAR1//保存地址寄存器AR1中的结果
    这样可在AR1中获得绝对地址以进行进一步处理。
    当功能块作为本地实例调用时,总要使用该方法。比如,在一个功能块中创建可做为类型“FB”的静态变量的功能块。这样所调用的情景数据块的数据偏移量就存储到情景数据块中。单个实例的偏移量在AR2中。如果不调用作为本地实例的功能块,则可以结束计算。值‘0’就在地址寄存器中。
    注意事项:如果改变程序中的地址寄存器AR2,那么也改变了变量的偏移量地址。因此就不能保证再对变量进行正确访问。在这种情况下,必须预先保存AR2,并在对程序动作完之后将其复位为初始状态。
    样例:
    TAR2//在累加器中加载偏移量地址
    T#save//比如,静态本地数据域0中的变量
    LDID0//地址绝对是由DI加载的bedsLAR2//核对
  • 关注下方微信公众号,在线模考后查看

热门试题