寻址方式是指在执行程序过程中,处理器 根据指令中所给的地址信息来寻找操作数的存放地址的方式。简单来说,就是确定本条指令的数据地址以及下一条要执行的指令地址的方法。
寻址方式主要分为以下几类:
直接寻址:
在指令中直接使用存储器或寄存器地址编号,直接到指定的区域读取或写入数据。例如,I1.5、QB0、VW100、VD100等。
间接寻址:
数据存放在存储器或寄存器中,在指令中只出现所需数据所在单元的内存地址,即指令给出的是存放操作数地址的存储单元的地址。例如,在S7-200SMART PLC中,只允许使用指针对I、Q、M、L、V、S、T(仅当前值)、C(仅当前值)存储区域进行间接寻址。
立即寻址:
指令中给出的地址码直接表示操作数本身,即操作数直接在指令中给出。例如,将立即数0x1234赋值给寄存器R1。
寄存器寻址:
操作数存放在寄存器中,指令中直接给出寄存器的编号。例如,将寄存器R1的内容加到寄存器R2中。
相对寻址:
指令中给出的地址码是相对于当前指令的地址进行偏移,用于计算下一条指令的地址。例如,跳转到下一条指令的地址为当前指令地址加10。
基址加变址寻址:
操作数的地址由基址寄存器和变址寄存器相加得到。例如,基址寄存器的内容加上变址寄存器的内容得到操作数的地址。
堆栈存取方式:
操作数或指令字写入或读出通过堆栈进行,指令中给出堆栈指针的地址。例如,将数据压入堆栈或从堆栈中弹出数据。
I/O端口寻址:
用于访问外部设备,指令中直接给出I/O端口的编号。例如,读入或写入I/O端口的数据。
这些寻址方式在不同的计算机体系结构和操作系统中可能有所不同,但基本原理是相同的。了解这些寻址方式有助于更好地理解计算机系统的工作原理和编程技巧。