寻址方式
操作数是指令的操作或运算对象。所谓寻址方式,是指指令得到操作数的方式,可以直接或间接给出。可用作STEP7指令操作对象的有常数,S7状态字中的状态位,S7的各种寄存器、数据块,功能块FB、FC和系统功能块SFB、SFC以及S7的各存储区中的单元。S7有立即寻址、存储器直接寻址、存储器间接寻址和寄存器间接寻址四种寻址方式。
1)立即寻址
立即寻址是对常数或常量的寻址方式。操作数本身直接包含在指令中。立即寻址示例见表2。
表2 立即寻址示例
2)直接寻址
直接寻址包括对寄存器和存储器的直接寻址。在直接寻址的指令中,直接给出操作数的存储单元地址。直接寻址示例见表3。
表3 直接寻址示例
3)存储器间接寻址
在存储器间接寻址的指令中,给出一个存储器,该存储器的内容是操作数所在存储单元的地址,该地址又被称为地址指针。存储器间接寻址方式的优点是,当程序执行时能改变操作数的存储器地址。存储器间接寻址示例见表4。
表4 存储器间接寻址示例
4)寄存器间接寻址
在S7中有两个地址寄存器,它们是AR1和AR2。通过地址寄存器,可以对各存储区的存储器内容实现寄存器间接寻址。地址寄存器的内容加上偏移量形成地址指针,该指针指向数值所在的存储单元。
地址寄存器存储的地址指针有两种格式,其长度均为双字。其中,种地址指针格式包括被寻址数值所在存储单元地址的字节编号和位编号。至于对哪个存储区寻址,则必须在指令中明确地直接给出。这种指针格式适用于在确定的存储区内寻址,即区内寄存器间接寻址。而第二种地址指针格式中还包含了数值所在存储区的说明位(存储区域标志位),可通过改变这些位实现跨区寻址,这种指针格式用于区域间寄存器间接寻址