发布于 2006-02-20 09:51:25
0楼
1、直接寻址就是利用绝对地址或者符号寻址,是最基本的寻址方式。
2、间接寻址包括存储器和寄存器间接寻址。其中存储器最常用的是指针寻址,指针寻址就是赋予存储器一个指针值,可以方便的在程序运行中实现变址。
a、指针间接寻址例子
L P#8.7 把指针值装载到累加器1
T I[MD2] 把指针值传送到MD2
A I[MD2] 查询I8.7的信号状态
= Q[MD2] 给输出位Q8.7赋值
b、寄存器间接寻址是利用地址寄存器(AR1、AR2)来实现变址。
分为内部寻址,如下,指针不包含指示存储区域。
L P#8.7 把指针值装载到累加器1
LAR1 把指针从累加器1装载到AR1
A I[AR1,P#0.0] 查询I8.7的信号状态
= Q[AR1,P#1.1] 给输出位Q10.0赋值
还有交叉寻址
指针中包含指示存储区域的信息(例子中为 I 和 Q)。
L P#I8.7 把指针值及存储区域标识装载到累加器1
LAR1 把存储区域I 和地址8.7装载到AR1
L P#Q8.7 把指针值和地址标识符装载到累加器1
LAR2 把存储区域Q和地址8.7装载到AR2
A [AR1,P#0.0] 查询输入位I8.7的信号状态
= [AR2,P#1.1] 给输出位Q10.0赋值
综上,直接寻址就是简单的寻址方式,间接寻址是高级寻址方式,可以方便更改地址。
举例,我想将一个模拟量数值每隔一段时间写入DB中的字里面,又不能覆盖,这就需要间接寻址,第一次写入DBW0,第二次写入DBW2中,依此类推...间接寻址可以方便的实现,只要更改指针的数值即可,具体需要你在运用中灵活使用。