s7寻址方式,直接寻址,间接寻址,指针使用

合集下载

操作系统寻址方法

操作系统寻址方法

操作系统寻址方法操作系统中的寻址方法是确定内存中数据存储位置的一种方式。

在计算机系统中,内存被划分为一个个内存单元,每个内存单元都有一个唯一的地址。

操作系统通过地址来定位和访问内存中的数据。

下面将介绍几种常见的寻址方法。

1.直接寻址:直接寻址是最简单和最常见的寻址方式。

每个内存单元都有一个唯一的地址,程序可以通过指定地址直接访问相应的内存单元。

例如,程序可以通过将地址赋值给一个变量,然后通过该变量来访问内存中的数据。

直接寻址的优点是速度快,但缺点是需要显式地指定内存地址。

2.间接寻址:间接寻址是指使用一个地址指针来间接访问内存中的数据。

程序首先访问一个地址指针,该地址指针包含了实际数据所在的地址,然后再根据该地址访问对应的数据。

这种寻址方式可以通过连续的间接引用来访问不同层次的数据结构,提高了操作灵活性。

例如,链表数据结构就是通过间接寻址来实现的。

3.寄存器寻址:寄存器寻址是一种使用寄存器来进行地址寻址的方式。

寄存器是位于CPU内部的一组高速存储器,其访问速度比内存更快。

通过将数据存储在寄存器中,可以提高程序的执行效率。

程序可以直接将寄存器作为操作数来进行计算,而不需要访问内存。

然而,寄存器的数量有限,所以只能存储一小部分数据。

4.相对寻址:相对寻址是基于当前指令地址进行寻址的方式。

程序可以通过指定一个偏移量来访问相对于当前指令地址的内存位置。

例如,可以使用相对寻址在循环中访问数组元素。

相对寻址的一个优点是可以编写更加短小和高效的指令序列,因为不需要指定完整的内存地址。

5.基址寻址:基址寻址是通过将一个基址和一个偏移量相加来计算内存地址的方式。

基址是一个常量值,而偏移量可以是一个立即数或者一个寄存器中的值。

通过将基址与偏移量相加,可以得到实际的内存地址。

基址寻址的一个优点是可以使用相对较小的地址来表示内存单元,从而节省内存空间。

除了上述常见的寻址方法外,还有一些其他的寻址方法,如变址寻址、栈式寻址、堆栈寻址等。

寄存器与7种寻址方式

寄存器与7种寻址方式

一、寄存器总共有14个16位寄存器,8个8位寄存器通用寄存器:数据寄存器:AH(8位) AL(8位) AX(16位) (AX和AL又称累加器)BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器)CH(8位) CL(8位) CX(16位) (CX用于字符串操作,控制循环的次数,CL 用于移位)DH(8位) DL(8位) DX(16位) (DX一般用来做32位的乘除法时存放被除数或者保留余数)指针寄存器:SP 堆栈指针(存放栈顶地址)BP 基址指针(存放堆栈基址偏移)变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器(短)指针使用。

作为通用寄存器,它们可以保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是需要的存储单元地址的偏移.SI 源地址(源变址寄存器)DI 目的地址(目的变址寄存器)控制寄存器:IP 指令指针FLAG 标志寄存器①进位标志CF,记录运算时最高有效位产生的进位值。

②符号标志SF,记录运算结果的符号。

结果为负时置1,否则置0。

③零标志ZF,运算结果为0时ZF位置1,否则置0。

④溢出标志OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。

溢出时OF位置1,否则置0。

⑤辅助进位标志AF,记录运算时第3位(半个字节)产生的进位值。

⑥奇偶标志PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。

当结果操作数中1的个数为偶数时置1,否则置0。

段寄存器CS 代码段IPDS 数据段SS 堆栈段SP BPES 附加段二、七种寻址方式:1、立即寻址方式:操作数就包含在指令中。

作为指令的一部分,跟在操作码后存放在代码段。

这种操作数成为立即数。

立即数可以是8位的,也可以是16位的。

例如:指令: MOV AX,1234H则: AX = 1234H2、寄存器寻址方式:操作数在CPU内部的寄存器中,指令指定寄存器号。

S7-300系列PLC的寻址方式

S7-300系列PLC的寻址方式

S7-300系列PLC指令系统——指令及其结构和寻址方式指令是程序的最小独立单位,用户程序是由若干条顺序排列的指令构成的。

对应语句表和梯形图两种编程语言,指令也有语句指令和梯形逻辑指令之分。

它们的表达形式不同,但表达的内容是相同或类似的。

一、指令的组成1、语句指令一条指令由一个操作码和一个操作数组成,操作数由标识符和参数组成。

操作码定义要执行的功能,它告诉CPU该做什么;操作数为执行该操作所需要的信息,它告诉CPU用什么去做。

例如:A I1.0是一条位逻辑操作指令,其中,“A”是操作码,它表示执行“与”操作;“I1.0”是操作数,它指出这是对输入继电器I1.0进行的操作。

有些语句指令不带操作数,它们操作的对象是唯一的,所以为方便起见,不再特别说明。

例如:NOT是对逻辑操作结果(RLO)取反。

2、梯形逻辑指令梯形逻辑指令用图形元素表示PLC要完成的操作。

在梯形逻辑指令中,其操作码是用图形元素表示的,该图形元素形象的表明CPU做什么,其操作数的表示方法与语句指令相同。

例如:Q4.0-()该指令中的-()可认为是操作码,表示一个二进制赋值操作。

Q4.0是操作数,表示赋值的对象。

梯形逻辑指令也可不带操作数。

例如:―│NOT│―是对逻辑操作结果取反的操作。

二、操作数在STEP7中,操作数可以是常数、S7状态字的状态位、各种寄存器、数据块(DB)、功能块(FB和FC)、系统功能块(SFB和SFC)以及S7中的各存储单元。

三、寻址方式寻址方式是指指令如何得到操作数的各种方式,对于操作数,在指令中可以直接给出,也可以间接给出。

S7有四种寻址方式:立即寻址、直接寻址、存储器间接寻址和寄存器间接寻址。

1、立即寻址立即寻址的指令直接跟着它要操作的数值,或者操作数本身也可直接包含在指令中。

立即寻址用于对常数或者常量的寻址。

SET //将RLO置“1”,RLO是result of logic operation 的缩写。

S7-200 PLC寻址指令

S7-200  PLC寻址指令

✓(2)各元件介绍 ✓输入继电器(I) ✓输出继电器(Q) ✓通用辅助继电器(M) ✓特殊标志继电器(SM) ✓变量存储器(V) ✓局部变量存储器(L) ✓顺序控制继电器(S)
✓定时器(T) ✓计数器(C) ✓模拟量输入映像寄存器(AI)、模拟量
输出映像寄存器(AQ) ✓高速计数器(HC) ✓累加器(AC)
1.直接寻址 (1)编址 要了解存储器的寻址方法,必须先掌握其编址方法。S7-
200系列PLC的存储单元编址有一定的规律,它将存储器按 功能不同划分成若干个区,如I区(输入继电器区)、Q区 (输出继电器区)、M区、SM区、V区、L区等,由于每个 区又有很多存储单元,这些单元需要进行编址。
PLC存储区常采用以下方式编址: 1)I、Q、M、SM、S区按位顺序编址,如I0.0~I15.7、M0.0~M31.7。 2)V、L区按字节顺序编址,如VB0~ VB2047、LB0~ LB63。 3) AI、AQ区按字顺序编址,如AIW0~AIW30、AQW0~ AQW30。 4)T、C、HC、AC区直接按编号大小编址,如T0~ T255、C0~C255、
S7-200数据存储区及元件(内部资源)的 功能
外部输入点
输入端子
• 1. 输入/输出映像寄存器:S7-200 PLC编址范围(I0.0~I15.7) 输入映像寄存器(该区域可以按位操作又称输入继电器) 输入继电器线圈由外部信号驱动,常开触点和常闭触点供用
户编程使用。
输入继电器用来接收外部输入的开关量信号。它 和对应的输入端子相连,同时提供无数的常开和常闭 触点用于编程
双字来存取存储区的数据。
• 4. 顺序控制继电器(S)存储区 S又称状态元件,以实现顺序控制和步进控制。 S7-200 PLC编址范围S0.0~S31.7,可以按位、字节、字或双

西门子PLC指令寻址方式

西门子PLC指令寻址方式

西门子PLC指令寻址方式西门子S7-200编程语言的基本单位是语句,而语句的构成是指令,每条指令有两部分:一部分是操作码,另一部分是操作数。

操作码指出这条指令的功能是什么,操作数则指明操作码所需要的数据所在。

所谓寻址,就是寻找操作数的过程。

S7-200 CPU的寻址分为三种:立即寻址、直接寻址和间接寻址。

1)立即寻址在一条指令中,如果操作码后面的操作数就是操作码所需要的具体数据,这种指令的寻址方式就叫立即寻址。

例如,在传送指令MOV IN OUT中,操作码“MOV”指出该指令的功能是把IN中的数据传送到OUT中,其中IN 为源操作数,OUT为目标操作数。

若该指令为MOVD 2505 VD500,则其功能为:将十进制数2505传送到VD500中,这里2505就是源操作数。

因这个操作数的数值已经在指令中,不用再去寻找,这个操作数即为立即数。

这个寻址方式就是立即寻址方式。

而目标操作数的数值在指令中并未给出,只给出了要传送到的地址VD500,这个操作数的寻址方式就是直接寻址。

2)直接寻址在一条指令中,如果操作码后面的操作数是以操作数所在地址的形式出现的,这种指令的寻址方式就叫直接寻址。

例如:MOVD VD400 VD500功能:将VD400中的双字数据传给VD500。

3)间接寻址在一条指令中,如果操作码后面的操作数是以操作数所在地址的地址形式出现的,这种指令的寻址方式就叫间接寻址。

例如:MOVD 2505 *VD500*VD500是指存放2505地址的地址。

若VD500中存放的是VDO,则VDO是存放2505的地址。

该指令的功能:将十进制数2505传送给VDO地址中。

S7-300和S7-400寻址

S7-300和S7-400寻址

S7-300和S7-400寻址Addressing for S7-300 and S7-400Single - FAQ Edition (2010年-9月)摘要本文对S7-300, S7-400 PLC编程过程中,所涉及的寻址方式方法,做了简单介绍及简单示例。

关键词STEP7, 编程,寻址,间接寻址,S7-300, S7-400Key Words STEP7, Programming, Addressing, Indirection addressing, S7-300,S7-400目录S7-300和S7-400寻址1.S7-300/400系统存储区域2.S7-300/400 PLC寻址方式2.1直接寻址2.1.1绝对地址:2.1.2符号寻址:2.2间接寻址2.2.1存储器间接寻址2.2.2寄存器间接寻址2.2.3 FB/FC的指针参数传递1 S7-300/400系统存储区域S7 CPU的系统存储区域分为下表中列出的地址区域。

在程序中可以根据相应的地址直接读取数据。

►16位指针:16位地址指针用于定时器、计数器、程序块(DB、FC、FB)的寻址,16位指针被看作一个无符号整数(0~65535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC)的号,16位指针的格式如下:图1寻址格式表示为:区域标识符[ 16位地址指针]例如使一个计数器向上计数表示为:CU C [ MW ]上述指令中,’C’为区域标识符,而’MW20’为一个16位指针。

16位指针存储器间接寻址举例://用于定时器L 1T MW0 //将1传送到MW0A I0.0 //如果I0.0 = TrueL S5T#10SSD T[MW0] //T1开始计时// 上述指令可等同于:A I0.0L S5T#10SSD T1//用于打开DB块L 20T LW20OPN DB[LW20] //打开DB20//程序调用L 2T LW20UC FC[LW20] //调用FC2L 41T DBW30UC FB[DBW30] //调用FB41►32位指针:32位地址指针用于I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址,32位的地址指针可以使用一个双字表示,第0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址,第19位~第31位没有定义,32位指针的格式如下:图 2存储器32指针仅用于内部区域寻址。

西门子S7-200PLC指令系统手册

西门子S7-200PLC指令系统手册

(二)输出指令 梯形图(LAD)中,“()”表示线圈,“能 流”到线圈端,则线圈被激励,其Q寄存器的相 应位为1,反之为0; 语句表(STL)中,输出指令为“=”,把栈 顶值复制到操作数地址指定的存储器位(bit), 堆栈各级栈值不变。 (三)置位和复位指令-把从操作数(bit)指定 的地址开始的N个点都被置位或复位,其中N=1 -255
3. 修改指针:用自增或自减指令修改指针,则可 连续存取存储单元中的数据
五、用户程序的结构 用户程序可分为三个区:主程序、子程序和 中断程序; 主程序(OB1):是用户程序的主体,CPU 在每一个扫描周期都要执行一次主程序指令; 子程序:可选部分,只有主程序调用时才执 行; 中断程序:可选部分,只有当发生中断事件 时,才执行中断程序,可在扫描周期的任意点执 行。
(二)直接寻址-指令中直接给出操作数的地址 的寻址方式 例: 位寻址 AND Q5.5
字节寻址 ORB VB33 , LB21 字寻址 双字寻址 MOVW MOVD AC0 , AQW200 AC1 , VD200
(三)间接寻址-指令中给出了存放操作数地 址的存储单元的地址的寻址方式 1. 建立指针
S7-200 PLC 的SIMATIC指令集不支持完全 数据类型检查; 使用局部变量时,执行简单数据类型检查; 使用全局变量时,指令操作数为地址而不是 可选的数据类型时,执行无数据类型检查。 (二)数据长度和数值范围 数据长度:用字节型(B)、字型(W)、 双字型(D)分别表示8位、16位、32位数据; 不同的数据长度对应的数据范围如表5-4所示
在语句表(STL)中,没有EN允许输入端, 但允许执行指令的条件是栈顶的值必须为1。 功能框的ENO端是允许输出端,即允许功能 框的布尔量输出,用于指令的级联 ; 语句表(STL)中,用AENO(ANDENO)指 令产生允许输出。 (四)条件输入、无条件输入 条件输入:在梯形图(LAD)、功能块图 (FBD)中,与“能流”有关的功能框或线圈不直 接与左母线连接;

西门子plc的4种寻址方式

西门子plc的4种寻址方式

西门子plc的4种寻址方式立即寻址是对操作数是常数或常量的寻址方式,其特点是操作数值直接表示在指令中,出现在指令中的操作数称为立即数。

有些指令的操作数是唯一的,为简化起见,并不在指令中写出。

立即寻址方式可用来提供常数、设置初值等。

常数值可分为字节、字、双字型等数据。

CPU以二进制方式存储所有常数。

在指令中可用十进制、十六进制、ASCII码或浮点数形式来表示操作数。

立即寻址示例:SET 说明:把RLO置1OW W#16#320 将常量W#16#320与ACCU1“或”运算L 1352 把整数1352装入ACCU1L‘ABCD’把ASCII码字符ABCD装入ACCU1L C#100 把BCD码常数100(计数值)装入ACCU1AW W#16#3A12 常数W316#3 A12与ACCU1的低位相“与”,运算结果在ACCU1的低字中。

存储器直接寻址包括对寄存器和存储器的直接寻址。

在直接寻址的指令中,直接给出操作数的存储单元地址,包括寄存器或存储器的区域、长度和位置,根据这个地址就可以立即找到该数据。

例如,用MW200指定位存储区中的字,地址为200;MB100表示以字节方式存取,MW100表示存取MB100、MB101组成的字,MD100表示存取MB100~ MB103组成的双字。

在指令中,数据类型应与指令标识符相匹配。

直接寻址编程示例:A IO.0 说明:对输入位10.0进行“与”逻辑操作S L20.0 把本地数据位I20.0置“l”= M115.4 使存储区位M115.4的内容等于RLO的内容L IB10 把输入字节IB10的内容装入ACCU1T DBD12 把ACCU1中的内容传送给数据双字DBD12中。

存储器间接寻址简称间接寻址。

该寻址方式在指令中以存储器的形式给出操作数所在存储器单元的地址,也就是说该存储器的内容是操作数所在存储器单元的地址。

该存储器一般称为地址指针,在指令中需写在方括号“[]”内。

8051单片机指令系统的7种寻址方式解析

8051单片机指令系统的7种寻址方式解析

8051单片机指令系统的7种寻址方式解析寻址方式:寻址就是寻找操作数的地址。

绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。

所谓寻址方式就是通过什么途径获取操作数的方式。

根据指令操作的需要,计算机总是提供多种寻址方式。

一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。

8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。

寄存器寻址寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。

采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。

例如:MOV A R1 这条指令的功能是把工作寄存器R1的内容传送到累加器A中,由于操作数在R1中,因此指令中指定了R1,也就得到了操作数。

寄存器寻址方式的寻址范围包括:工作寄存器组R0~R7,部分特殊寄存器ACC,B,DPTR 等。

直接寻址直接寻址:直接寻址就是在指令中直接给出操作数所在单元的真实地址。

这里给出的操作数直接地址为8位二进制地址。

程序中一般用十六进制数表示。

例如:指令MOV A,30H 把内部RAM单元30H中的数据传送给累加器A,指令中30H就是操作数的直接地址。

直接寻址方式的寻址范围包括:内部数据存储器低128单元,特殊功能寄存器。

特殊功能寄存器在指令的表示中除了可以以直接地址形式给出外,还可以以寄存器符号形式给出,如对累加器A,在指令中可使用其直接地址OEOH,也可使用其符号形式ACC。

立即寻址立即寻址:立即寻址方式就是实际操作数作为指令的一部分,在指令中直接给出,取指令时,可在程序存储器中直接取得操作数。

通常把出现在指令中的操作数称为立即数。

采用立即寻址方式的指令,在立即数前面加上。

S7-200数据存储与寻址方式

S7-200数据存储与寻址方式

S7-200数据存储与寻址方式1.I/O 点数扩展和编址S7-200 CPU22X 系列的每种主机所提供的本机I/O点的I/O地址是固定的,进行扩展时,可以在CPU右边连接多个扩展模块。

每个扩展模块的组态地址编号取决于各模块的类型和该模块在I/O链中所处的位置。

输入与输出模块的地址不会冲突,模拟量控制模块地址也不会影响数字量。

编址方法是同样类型输入或输出点的模块在链中按所处的位置而递增,这种递增是按字节进行的,如果CPU或模块在为物理I/0点分配地址时未用完一个字节,那些未用的位也不能分配给I/O链中的后续模块。

例如,某一控制系统选用CPU224,系统所需的输入/输出点数为:数字量输入24点、数字量输出20点、模拟量输入6点和模拟量输出2点。

本系统可有多种不同模块的选取组合,并且各模块在I/O链中的位置排列方式也可能有多种,表1-1所示为其对应的各模块的编址情况。

表1-1A.同类型输入或输出的模块按顺序进行编制。

B. 数字量模块总是保留以8位(1个字节)递增的过程映象寄存器空间。

如果模块没有给保留字节中每一位提供相应的物理点,那些未用位不能分配给I/O链中的后续模块。

对于输入模块,这些保留字节中未使用的位会在每个输入刷新周期中被清零。

C. 模拟量I/O点总是以两点递增的方式来分配空间。

如果模块没有给每个点分配相应的物理点,则这些I/O点会消失并且不能够分配给I/O链中的后续模块。

2. S7-200 PLC的寻址方式及内部数据存储区S7-200 CPU将信息存储在不同的存储单元,每个单元都有惟一的地址。

S7-200CPU使用数据地址访问所有的数据,称为寻址。

输入/输出点、中间运算数据等各种数据类型具有各自的地址定义,大部分指令都需要指定数据地址。

本节将从S7-200的数据长度、寻址、寻址方式和内部数据存储区几个方面进行介绍。

2.1 数据长度S7-200 寻址时,可以使用不同的数据长度。

不同的数据长度表示的数值范围不同。

寄存器与七种寻址方式

寄存器与七种寻址方式

寄存器与七种寻址⽅式⼀、寄存器总共同拥有14个16位寄存器,8个8位寄存器通⽤寄存器:数据寄存器:AH(8位) AL(8位) AX(16位) (AX和AL⼜称累加器)BH(8位) BL(8位) BX(16位) (BX⼜称基址寄存器,唯⼀作为存储器指针使⽤寄存器)CH(8位) CL(8位) CX(16位) (CX⽤于字符串操作,控制循环的次数,CL⽤于移位)DH(8位) DL(8位) DX(16位) (DX⼀般⽤来做32位的乘除法时存放被除数或者保留余数)指针寄存器:SP 堆栈指针 (存放栈顶地址)BP 基址指针 (存放堆栈基址偏移)变址寄存器:主要⽤于存放某个存储单元地址的偏移,或某组存储单元開始地址的偏移,即作为存储器(短)指针使⽤。

作为通⽤寄存器,它们能够保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是须要的存储单元地址的偏移.SI 源地址 (源变址寄存器)DI ⽬的地址 (⽬的变址寄存器)控制寄存器:IP 指令指针FLAG 标志寄存器 ①进位标志 CF,记录运算时最⾼有效位产⽣的进位值。

 ②符号标志 SF,记录运算结果的符号。

结果为负时置1,否则置0。

 ③零标志 ZF,运算结果为0时ZF位置1,否则置0。

 ④溢出标志 OF,在运算过程中,如操作数超出了机器可表⽰数的范围称为溢出。

溢出时OF位置1,否则置0。

 ⑤辅助进位标志 AF,记录运算时第3位(半个字节)产⽣的进位值。

 ⑥奇偶标志 PF,⽤来为机器中传送信息时可能产⽣的代码出错情况提供检验条件。

当结果操作数中1的个数为偶数时置1,否则置0。

段寄存器CS 代码段 IPDS 数据段SS 堆栈段 SP BPES 附加段⼆、七种寻址⽅式:1、马上寻址⽅式:操作数就包括在指令中。

作为指令的⼀部分,跟在操作码后存放在代码段。

这样的操作数成为马上数。

马上数能够是8位的,也能够是16位的。

⽐如:指令: MOV AX,1234H则: AX = 1234H2、寄存器寻址⽅式:操作数在CPU内部的寄存器中,指令指定寄存器号。

7种寻址方式

7种寻址方式

7种寻址⽅式七种寻址⽅式1、(直接寻址⽅式)指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址⽅式为直接寻址⽅式。

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

例:假设有指令:MOV BX, [1234H],在执⾏时,(DS)=2000H,内存单元21234H的值为5213H。

问该指令执⾏后,BX的值是什么?解:根据直接寻址⽅式的寻址规则,把该指令的具体执⾏过程⽤下图来表⽰。

从图中,可看出执⾏该指令要分三部分:由于1234H是⼀个直接地址,它紧跟在指令的操作码之后,随取指令⽽被读出;访问数据段的段寄存器是DS,所以,⽤DS的值和偏移量1234H 相加,得存储单元的物理地址:21234H;取单元21234H的值5213H,并按“⾼⾼低低”的原则存⼊寄存器BX中。

所以,在执⾏该指令后,BX的值就为5213H。

由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中⽤段前缀的⽅式显式地书写出来。

下⾯指令的⽬标操作数就是带有段前缀的直接寻址⽅式。

MOV ES:[1000H], AX直接寻址⽅式常⽤于处理内存单元的数据,其操作数是内存变量的值,该寻址⽅式可在64K字节的段内进⾏寻址。

注意:⽴即寻址⽅式和直接寻址⽅式的书写格式的不同,直接寻址的地址要写在括号“[”,“]”内。

在程序中,直接地址通常⽤内存变量名来表⽰,如:MOV BX, VARW,其中,VARW是内存字变量。

试⽐较下列指令中源操作数的寻址⽅式(VARW是内存字变量):MOV AX, 1234H MOV AX, [1234H] ;前者是⽴即寻址,后者是直接寻址MOV AX, VARW MOV AX, [VARW] ;两者是等效的,均为直接寻址2、(寄存器间接寻址⽅式)操作数在存储器中,操作数的有效地址⽤SI、DI、BX和BP等四个寄存器之⼀来指定,称这种寻址⽅式为寄存器间接寻址⽅式。

指针

指针

指针S7-300/400 PLC寻址方式一、直接寻址1、绝对地址2、符号地址二、间接寻址1、存储器间接寻址(包括16位指针与32位指针)2、寄存器间接寻址(只有32位指针)存储器间接寻址1、16位指针:用于定时器、计数器、程序块(DB、FC、FB)的寻址,16位指针被看作一个无符号整数(0~65535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC)的号,16位指针的格式如下:寻址格式表示为:区域标识符[ 16位地址指针]例如使一个计数器向上计数表示为:CU C [ MW20 ]上述指令中,’C’为区域标识符,而’MW20’为一个16位指针。

例1//用于定时器L 1 A I0.0T MW0 L S5T#10SA I0.0 →SD T1L S5T#10SSD T[MW0]例2//用于打开DB块L 20T LW20OPN DB[LW20]2、32位指针:用于I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址,32位的地址指针可以使用一个双字表示,第0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址,第19位~第31位没有定义,32位指针的格式如下:存储器32指针仅用于内部区域寻址。

寻址格式表示为:地址存储器标识符[ 32位地址指针]例如写入一个M的双字表示为:T MD [ LD0 ]‘MD’为区域标识符及访问宽度,而‘LD0’为一个32位指针。

32位内部区域指针可用常数表示,表示为P# 字节.位。

如常数P# 10.3为指向第10个字节第3位的指针常数。

若把一个32位整型转换为字节指针常数,从上述指针格式可以看出,应要把该数左移3位(或是乘8)即可。

如:L L#100 //Accu0装入32位整形100SLD 3 //左移3位T LD0 //LD0得到P#100.0指针常数例:DB块间接寻址举例OPN DB 1 //打开DB1。

OPN DI 3 //打开DB3,最多可以同时打开两个DB块。

7 种寻址方式及其基本 指令

7 种寻址方式及其基本 指令

7 种寻址方式及其基本指令1. 立即寻址(Immediate Addressing)立即寻址方式是将操作数直接嵌入到指令中作为常数,指令执行时直接使用该常数作为操作数。

例如,一条指令可以是“ADD R1, #5”,表示将寄存器R1中的值与常数5相加。

2. 直接寻址(Direct Addressing)直接寻址方式是将操作数的地址直接指定在指令中,指令执行时直接使用该地址读取操作数。

例如,一条指令可以是“LOAD R1, 1000”,表示将地址1000处的内容加载到寄存器R1中。

3. 寄存器寻址(Register Addressing)寄存器寻址方式是将操作数的值存储在寄存器中,指令执行时直接使用该寄存器作为操作数。

例如,一条指令可以是“ADD R2, R3”,表示将寄存器R2中的值与寄存器R3中的值相加。

4. 间接寻址(Indirect Addressing)间接寻址方式是将操作数的地址存储在一个寄存器或内存单元中,指令执行时先读取该地址,再根据该地址读取操作数。

例如,一条指令可以是“LOAD R1, (R2)”,表示先从寄存器R2中读取一个地址,再根据该地址将内容加载到寄存器R1中。

5. 寄存器间接寻址(Register Indirect Addressing)寄存器间接寻址方式是将操作数的地址存储在一个寄存器中,指令执行时先读取该地址,再根据该地址读取操作数。

例如,一条指令可以是“LOAD R1, (R2)+”,表示先从寄存器R2中读取一个地址,再根据该地址将内容加载到寄存器R1中,并将寄存器R2的值增加。

6. 相对寻址(Relative Addressing)相对寻址方式是将操作数的地址与指令的地址相加或相减得到实际的操作数地址,指令执行时直接使用该地址读取操作数。

例如,一条指令可以是“LOAD R1, label”,表示将标签label的地址与指令的地址相加得到实际的地址,并将该地址处的内容加载到寄存器R1中。

S7-300间接寻址及地址寄存器指令1

S7-300间接寻址及地址寄存器指令1

装载数据字节1 装载数据字2(字节2/3) 装载数字5 传递到字4 装载ASCII字符A 装载数据字节28 比较
A DBX 0.0
从0字节的第0位开始扫描
L DB19.DBW4 从DB 19中装载数据字4
L “Values”.Number_1
符号访问变量
Number_1. DB19 具有变量名“Values”
215
20 22 20
未定义
字节地址(无符号整数) 位地址
装载32位指针常量(内部区域): L P#25.3 (P = 指针,字节地址= 25,位地址:3)
AUTOMATE Technology (Shanghai) Co., Ltd.© 2014
掌握好变量结构,可以优化程序结构。
AUTOMATE Technology (Shanghai) Co., Ltd.© 2014
AUTOMATE Technology (Shanghai) Co., Ltd.© 2014
地址
I Q PIB PQB M T C DBX DIX L
变量直接寻址
存储单元位置 (示例附)加访问宽度 含义
37.4
字节,字,双字
输入
27.7
字节,字,双字
输出
655
字节,字,双字
外设输入
653
字节,字,双字
本地数据堆栈
AUTOMATE Technology (Shanghai) Co., Ltd.© 2014
DB中地址标识符直接寻址
打开的数据块
在数据块中装载和传递
OPN DB 19 OPN "Values" OPN DI 20
组合指令 (包含OPN D DB..)

西门子PLC寻址方式

西门子PLC寻址方式

寻址方式
所谓寻址方式是指指令得到操作数的方式,可以直接或间接给出操作数的地址。

STEP-7有4种寻址方式:立即寻址、存储器直接寻址、存储器间接寻址和寄存器间接寻址。

1、立即寻址
立即寻址是对常数或常量的寻址方式,其特点是操作数直接包含其中,或指令操作数是唯一的。

2、存储器直接寻址
存储器直接寻址的特点是直接给出存储器的存储单元地址。

3、存储器间接寻址
存储器间接寻址的特点是用指针进行寻址。

操作数存储在由于指针给出的存储单元中,根据要描述的地址复杂程度,地址指针可以是字或双字的,存储指针的存储器也应是字或双字的。

对于T、C、FB、FC、DB,由于其地址范围为-,可使用字指针;对于I、Q、M等,可能要使用双字指针。

使用双字指针时,必须保证指针中的位编号为“0”。

4、寄存器间接寻址
寄存器间接寻址的特点是通过地址寄存器寻址。

S7中有两个地址寄存器:AR1和AR2,地址寄存器的内容加上偏移量形成地址指针,指向操作数所在的存储单元。

寄存器间接寻址有两种形式:区域内寄存器间接寻址和区域司寄存器间接寻址。

通俗解释S7-200指针寻址

通俗解释S7-200指针寻址

通俗解释S7-200指针寻址S7-200的指针寻址对指令的操作数的指定方式,我将其理解为“寻址”。

下面将以我个人的理解对西门子S7-200的寻址方式进行描述,如有不当之处,还请广大读者指正。

在程序中绝大部分的指令都带有操作数,所谓的操作数,是执行这一指令时被这一指令加以操作、处理的数值。

对指令的操作数的指令方式大致的总结一下,可以概括为如下几个类型:1:立即数寻址指令的操作数为“立即数”,(如:15、16#F、2#1111等、、、、、、)。

LD M0.0MOVW +255, VW0+I +45, VW0这是一条加法指令,被加数为:255、加数为45执行这条指令后计算出来的“和”存放在VW0这一存储器内。

LD M0.0MOVB 15, VB0这是一条传指令,译为:将15传送至存储器VB0内。

2:直接地址寻址指令的操作数没有直接的给出,而是给出它所在的地址。

LD M0.0MOVW VW0, VW4-I VW2, VW4这是一条减法指令,译为:将存储器VW0内的数值减去存储器VW2内的数值,将“差”存放在存储器VW4内。

3:寄存器间址寻址指令的操作数没有直接的给出,而是给出它所在的地址的“地址”,在S7-200中,将这种寻址方式称之为“指针寻址”。

下面,我们一起来学习一下关于指针的使用方法:在使用指针进行间接寻址的过程中,会涉及到的两个符号:&:建立指针(进行间接访问的区域)*:读取指针(读取指针间接指定的地址)4. S7-200中使用指针的步骤下面是使用指针的一般步骤:1:建立指针建立指针需要使用双字传送指令,如下所示:LD M0.0MOVD &MB0, VD10译为:在VD10建立指针,指针指向被间接访问的首地址MB0。

在建立指针时需要注意如下几个问题:①可以进行间接访问的区域,包括如下几个区域:I、Q、M、S、V、T(当前值)、C(当前值)。

在S7-200中位状态是不能进行间接指定的,所以这里特别强调只是访问定时器及计数器的当前值,而不是其位状态。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

偏移量0.0不起作用。输出Q10.0 等于8.7 (AR1) 加偏移量1.1。结果是10.0 ,而不是9.8,参见指针格式。
存储区域交叉寻址例程
在存储区域交叉寻址中,指针中包含指示存储区域的信息(例子中为 I 和 Q)。
L P#I8.7 把指针值及存储区域标识装载到累加器1
1. 直接地址:例如I0.0,Q1.7,PIW256,PQW512,MD20,T15,C16,DB1.DBB10,L10.0等
2. 符号寻址:例如qq,ww.aa等
二寻址
存储器间接寻址:16位指针,例如OPN DB[MW2]
LAR1 把存储区域I 和地址8.7装载到AR1
L P#Q8.7 把指针值和地址标识符装载到累加器1
LAR2 把存储区域Q和地址8.7装载到AR2
A [AR1,P#0.0] 查询输入位I8.7的信号状态
存储区域内部寻址例程
指针不包含指示存储区域的信息:
L P#8.7 把指针值装载到累加器1
LAR1 把指针从累加器1装载到AR1
A I[AR1,P#0.0] 查询I8.7的信号状态
= Q[AR1,P#1.1] 给输出位Q10.0赋值
32位指针,例如A I[MD0]
寄存器间接寻址:32位指针,例如A I[AR1,P#0.0],A [AR1,P#0.0]
1.2 S7-300/400寻址方式图解
2 如何使用指针
指针用来指向一个地址。使用这种寻址方式的优点在于可以在程序运行过程中实现变址。
A I[MD2] 查询I8.7的信号状态
= Q[MD2] 给输出位Q8.7赋值
存储区域内部寻址及交叉寻址
程序中采用这些寻址方式的语句包含一个指令以及下列内容:地址标识符、地址寄存器标识符、偏移量。地址寄存器(AR1、AR2)及偏移量必须写在方括号内。
指针用于存储器间接寻址
程序中用于存储器间接寻址的语句包含一个指令、一个地址标识符、以及一个偏移量(偏移量必须在方括号内给出)。
下面给出一个双字格式的指针的例子:
L P#8.7 把指针值装载到累加器1
T I[MD2] 把指针值传送到MD2
= [AR2,P#1.1] 给输出位Q10.0赋值
偏移量0.0不起作用。输出Q10.0 等于8.7 (AR2) 加偏移量1.1。结果是10.0 ,而不是9.8,
相关文档
最新文档