在直接寻址方式中,直接使用存储器或寄存器的元件名称和地址编号,根据这个地址可以立即找到该数据。
间接寻址方式是指数据存放在存储器或寄存器中,在指令中只出现所需数据所在单元的内存地址的地址。存储单位地址的地址又称为地址指针。这种间接寻址方式与计算机的间接寻址方式相同。间接寻址在处理内存连续地址中的数据时非常方便,而且可以缩短程序所生成的代码长度,使编程更加灵活。
可以用指针进行间接寻址的存储区有输入继电器(I)、输出继电器(Q)、通用辅助继电器(M)、变量存储器(V)、顺序控制继电器(S)、定时器(T)和计数器(C)。其中T和C仅仅是当前值可以进行间接寻址,而对独立的位值和模拟量值不能进行间接寻址。
使用间接寻址方式存取数据方法与C语言中的指针应用基本相同,其过程如下。
1.建立指针
使用间接寻址对某个存储器单元读、写时,首先要建立地址指针。指针为双字长,是所要访问的存储单元的32位的物理地址,可作为指针的存储区有变量存储器(V)、局部变量存储器(L)和累加器(AC1、AC2、AC3)。必须用双字传送指令(MOVD),将所要访问的存储器单元的地址装入用来作为指针的存储器单元或寄存器,装入的是地址而不是数据本身。格式如下:
(https://www.xing528.com)
其中:“&”为地址符号,它与单元编号结合使用表示所对应单元的32位物理地址;VB100只是个直接地址编号,并不是它的物理地址。指令中的第二个地址数据长度必须是双字长,如:VD、LD和AC等。
2.用指针来存取数据
在操作数的前面加“*”表示该操作数为一个指针。如图2-9所示,AC1为指针,用来存放要访问的操作数的地址。在这个例子中,存于VB200、VB201中的数据被传送到AC0中去。
3.修改指针
连续存储数据时,可以通过修改指针很容易存取其紧接的数据。简单的数学运算指令,如加法、减法、自增和自减等指令可以用来修改指针。在修改指针时,要记住访问数据的长度:存取字节时,指针加1;存取字时,指针加2;存取双字时,指针加4。图2-9说明如何建立指针,如何存取数据及修改指针。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
