西门子PLC中的数据如何寻址

如题所述

可以直接寻址,指令中直接给出操作数地址的寻址方式称为直接寻址。 

在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。

寻址对象为内部数据存储器,在指令中以直接地址表示; 特殊功能寄存器SFR,在指令中用寄存器名称表示。

扩展资料

在直接寻址中,指令操作数字段中存放的是操作数的16位偏移地址EA,即操作数的偏移地址EA和操作码一起存放在代码段中,而操作数可以存放在数据段,也可以存放在其它段,操作数的物理地址由其所在段的寄存器内容左移4位与指令中给出的偏移地址EA相加形成。

物理地址PH=(DS)*10H+EA(Disp)EA可以用符号或数值表示。如果用数值表示EA则必须用括号括起来,而且是在方括号前应给出段寄存器名,直接寻址的操作数可以是字或字节。

如果没有特殊说明,直接寻址的操作数一般在内存的数据段中,即隐含的段寄存器是DS。但是8086/8088也允许段超越,即允许使用CS,SS,ES作为段寄存器,此时需要在指令中特别标明,方法是在有关操作数的前面协商寄存器的名字,再加上冒号。如:MOV AX EX :[2000H]。

参考资料

百度百科--直接寻址

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-30

使用直接寻址,指令中直接给出操作数地址的寻址方式称为直接寻址。 直接寻址是指在指令中直接给出要访问的存储器或寄存器的名称和地址编号,直接存取数据。

直接寻址方式的操作数地址的16位偏移量(又称有效地址EA)直接包含在指令中,它紧跟在操作码之后,存放在代码段区域内。

如果指令前面无前缀指明在哪一段,则默认操作数存放在数据段寄存器DS中。它的地址为数据段寄存器DS加上这16位地址偏移量。如果存放操作数的存储区是在DS段以外的段中,则应在指令中指定段跨越前缀。用符号地址代替数值地址。

扩展资料:

立即寻址方式和直接寻址方式的书写格式的不同。在程序中,直接寻址的地址要写在括号“[]”内,立即地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量;直接寻址如:MOV AX [2000H]。

在直接寻址中,指令操作数字段中存放的是操作数的16位偏移地址EA,即操作数的偏移地址EA和操作码一起存放在代码段中,而操作数可以存放在数据段,也可以存放在其它段,操作数的物理地址由其所在段的寄存器内容左移4位与指令中给出的偏移地址EA相加形成。

参考资料:百度百科-直接寻址

本回答被网友采纳
第2个回答  推荐于2017-10-14

  1.直接寻址
    S7系列PLC的编程指令支持直接寻址与间接寻址两种寻址方式。
    直接寻址通过直接给出信号地址进行,它可以用于所有的编程元件(I、Q、M、SM、V、L、S、T、C、AC、HC等)。
    [例8-5]利用直接寻址的方式,将标志存储器MB10的内容一次性在QB2上输出的程序如图8-4.1所示。

  图中的MOV B在S7-200PLC中为字节移动指令,EN为启动条件,IN端为需要移动的数据地址,OUT端为移动目标位置地址,SMO.O为PLC内部的恒“1”信号。有关本指令的更具体说明可以详见PLC编程的有关章节。
  2.间接寻址
  S7-200的间接寻址方式中,操作数指定的是操作对象所存放的地址,而不具体指明操作对象。因此,间接寻址方式需要通过“地址指针”进行。
    所谓“地址指针”是间接寻址时专门用来存储地址的寄存器。在S7-200 PLC中,建立地址指针应注意以下几点:
    ①只能用变量V、局部变量L或累加器AC1、AC2、AC3作为地址指针(ACO不可使用)。
    ②建立地址指针,必须用双字的形式将间接寻址需要的存储器地址移动到地址指针中;存储器地址前加符号“&”进行标记,“&”表明移动的只是址,而不是该存储器的具体内容。
    ③间接寻j时,应在地址指针的前面加“*”标记,表示该操作数为间接寻址的地址指针。
    ④允许利用地址指针访问的存储器为I、Q、V、M、S以及定时器T、计数器C的当前值,但模拟量输入/输出AI/AQ、高速计数器HC、特殊标志SM以局部变量L不能通过地址指针进行访问。(www.dqjsw.com.cn
    ⑤S7-200的间接寻址不可以用于二进制位信号、高速计数器HC、局部变量L,如不可以对I0.2、Q0.2、HC1、LW2等使用间接寻址。

  [例1]以AC1(累加器1)作为地址指针,将变量存储器VB200~VB203中4字节数据(12345678)移动到标志寄存器MBO~MB3中的程序如图8-4.2所示。
    程序分为4段,第1段利用双字移动指令MOVD(在梯形图中的符号为MOV__ DW)将地址VB200移动到地址指针AC1中。
    第2段利用字移动指令MOVW,将地址指针ACI中地址VB200所存储的内容(VB200、VB201中的值1234)移动到MWO。
    第3段将地址指针中的地址加2(AC1的地址变为VB202)。
    第4段将地址指针AC1中地址VB202中所存储的内容(VB202、VB203中的值5678)移动到MW2。
    图中有关MOV指令的具体说明可以详见第10章10.4节的有关章节。
    [例2]以LD10(局部变量10)作为指针,将由偏移量存储器VD1004所确定的变量存储器VW中的内容移动到VW1900的程序如图8-4.3所示。
    程序分为3段,第l段利用双字移动指令MOVD(在梯形图中的符号为MOV DW)将地址VBO移动到地址指针LD10中。
    第2段将指针中的地址VBO加上偏移量存储器VD1004的内容(LD10的地址变为VBO+偏移量),确定移动目标。
    第3段将指针LD10中地址“VBO+偏移量”中所存储的内容移动到VW1900。
    本例中如果VD1004中的内容为1000,则变量存储器VW1000中的内容将被复制到VW 1900中;若改变VD1004中的内容为1100,则变量存储VW1100中的内容将被复制到VW1900中。

第3个回答  推荐于2016-12-01
S7-200的PLC按照寻址的范围有
位寻址 I0.0 Q0.0 M0.0 S0.0 SM0.0 V0.0 L0.0
字节寻址 IB0 QB0 MB0 SMB0 VB0 LB0 AC0
字寻址 IW0 AIW0 QW0 AQW0 VW0 MW0 LW0 AC0
双字寻址 ID0 AID0 QD0 AQD0 VD0 MD0 LD0 AC0

S7-300的PLC按照寻址的范围有
位寻址 I0.0 Q0.0 M0.0 L0.0
字节寻址 IB0 QB0 MB0 LB0 ACCU0
字寻址 IW0 PIW0 QW0 PQW0 MW0 LW0 ACCU0
双字寻址 、、、、、、
POINTER指针寻址
ANY指针寻址本回答被提问者和网友采纳
相似回答