1、寄存器间接寻址:

S7-300/400有两个地址寄存器AR1和AR2,可以用它们对各存储区的地址作寄存器间接寻址。地址寄存器的地址值加上地址偏移量,形成地址指针,后者指向数据所在的存储单元。

在下图中是地址寄存器间接寻址的双字地址指针的格式,其中第0~2位(xxx)位被寻址地址中位的编号(0~7),第3~18位为被寻址地址的字节的编号,第24~26位(rrr)为被寻址地址的区域标识号(见下表)。第31位x=0为区域内的间接寻址,为1区域间的间接寻址。如果要用寄存器指针访问一个字节、字或双字,必须保证指针的位地址编号为0.

什么叫做寄存器间接寻址?你明白寄存器间接寻址吗(1)

什么叫做寄存器间接寻址?你明白寄存器间接寻址吗(2)

2、与地址寄存器有关的指令

可以不经过累加器1,直接将操作数装入或传送出地址寄存器AR1和AR2(见下表),或从AR1和AR2将数据传送出来。也可以将两个寄存器的内容直接交换,指令TAR1‹D›和TAR2‹D›的目的区为双字MD、LD、DBD、DID。下面应用举例:

什么叫做寄存器间接寻址?你明白寄存器间接寻址吗(3)

什么叫做寄存器间接寻址?你明白寄存器间接寻址吗(4)

AR1指令将地址寄存器AR1的内容加上作为地址偏移量的累加器1的低字的内容,或加上指令中16位常数(-32768~ 32767),结果在AR1中。 AR2指令具有类似的功能。

16位有符号整数首先被扩充24位,其符号位不变,然后与AR1中的低24位有效数字相加。地址寄存器中的存储区标识符rrr(第24~26位),保持不变。

什么叫做寄存器间接寻址?你明白寄存器间接寻址吗(5)

3、寄存器区域内间接寻址

区域内间接寻址的地址指针格式与存储器间接寻址的相同,包括被寻址数值所在的存储单元的字节地址和位地址,存储区的类型在指令中给出,这种指针格式适用于在某一存储区内寻址,第24~26位和第31位应为0。下面是区域内间接寻址的例子。如下图:

什么叫做寄存器间接寻址?你明白寄存器间接寻址吗(6)

4、寄存器区域间的间接寻址

区域间的间接寻址的地址指针格式的第24~26位还包含了说明地址所在存储区的区域标识符rrr,下面是区域间间接寻址的例子

什么叫做寄存器间接寻址?你明白寄存器间接寻址吗(7)

,