不使用TNW / TNB命令,访问CPU 945的地址255以上的数据字

问题:
如何访问CPU 945内,地址在255以上的数据字?n

解答:
在以下样例程序中,从DB10的数据双字“DD1000”中,把一个INFO载入并保存到数据双字“DD2”>中*)。
然后把INFO从数据双字“DD2”传递到数据双字“DD500”中**)。n

:MBR

E3800

DB地址列表的起始点

:LRW

+10

起始地址DB 10

:SLD

4

扩展到20位地址

:T

MD

14

存放在MD14

:

:L

KF

+2000

载入数值1000的两倍

:+D

20位地址DB10 + 地址DD1000

:T

MD

10

:LDI

A1

载入accu1及DD1000的内容

:

:A

DB

10

:T

DD

2

*) DB10.DD1000内容 -> DD2

:

:L

MD

14

载入20位起始地址DB10

:L

KF

+1000

载入数值500的两倍

:+D

20位地址DB10 + 地址DD500

:L

DD

2

载入DD2内容

:TAK

accu1与accu2交换

:TDI

A2

**) DB10.DD2内容 -> DD500

:

背景:
使用“SLD 4”命令创建CPU 945的20位地址:
为了把块的起始地址存放到块的地址列表中,在CPU 945中每个条目只有16位可用。因此,只能保存块地址的16最高有效位。安排块的存放,使得最低的4位总为0。例如,如果“A004”代表地址列表中的一个块,则实际的20位地址为“A0040”,或者对于列表中的“B10A”,实际有效的地址是“B10A0”。“SLD 4”命令所作的无非是把地址的0-15位移动到4-20位,而把0-3位填充为0.

绝对地址的载入/传递功能
绝对地址的载入/传递功能把BR列表的内容作为基本地址。使用LDI/TDI寻址的内存地址是基本地址列表的内容,加上数据块中相对地值的参数值的两倍。加倍的原因是:内存区域使用字节寻址,但参数指示引用的却是字寻址。

注意事项:
也请注意关于CPU945的同一主题,其FAQ位于条目ID: 43576-“在DB/DX中访问地址大于255的数据字”。

关键字:
间接寻址

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc339937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论