直接寻址和间接寻址

直接寻址和间接寻址

指令中直接给出操作数地址(dir)的寻址方式称为直接寻址。寻址对象为:1 内部数据存储器,在指令中以直接地址表示;2特殊功能寄存器SFR,在指令中用寄存器名称表示。

以寄存器中的内容为地址,该地址的内容为操作数的寻址方式称为寄存器间接寻址。能够进行寄存器间接寻址的寄存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。寄存器间接寻址的存储空间包括内部数据存储器和外部数据存储器。由于内部数据存储器共有128字节,因此用一字节的R0和R1可间接寻址整个空间。而外部数据存储器最大可达64K,仅R0或R1无法寻址整个空间,为此需要由P2端口提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同寻址64K字节范围。也可用16位的DPTR寄存器间接寻址64K字节存储空间。

间接寻址及地址寄存器指令

详解西门子间接寻址 【址概念】 完整一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中操作数是指令要执行目标,也就是指令要进行操作址。 我们知道,PLC中划有各种用途存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,说来指定确切大小。当然定时器T、计数器C不存这种衡量体制,它们仅用位来衡量。由此我们可以到,要描述一个址,至少应该包含两个要素: 1、存储区域 2、这个区域中具体位置 比如:A Q2.0 其中A是指令符,Q2.0是A操作数,也就是址。这个址由两部分组成: Q:指是映像输出区 2.0:就是这个映像输出区第二个字节第0位。 由此,我们出,一个确切址组成应该是: 〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。 DB X 200 . 0 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:址标识符。这样,一个确切址组成,又可以写成: 址标识符 + 确切数值单元 【间接寻址概念】 寻址,就是指定指令要进行操作址。给定指令操作址方法,就是寻址方法。 谈间接寻址之前,我们简单了解一下直接寻址。所谓直接寻址,简单说,就是直接给出指令确切操作数,象上面所说,A Q2.0,就是直接寻址,A这个指令来说,Q2.0就是它要进行操作址。 这样看来,间接寻址就是间接给出指令确切操作数。对,就是这个概念。 比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号 [ ] 标明内容,间接指明了指令要进行址,这两个语句中MD100和DBW100称为指针Pointer,它指向它们其中包含数值,才是指令真正要执行址区域确切位置。间接由此名。 西门子间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。 【存储器间接寻址】 存储器间接寻址址给定格式是:址标识符+指针。指针所指示存储单元中所包含数值,就是址确切数值单元。 存储器间接寻址具有两个指针格式:单字和双字。 单字指针是一个16bit结构,从0-15bit,指示一个从0-65535数值,这个数值就是被寻址存储区域编号。 双字指针是一个32bit结构,从0-2bit,共三位,8进制指示被寻址位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535数值,这个数值就是被寻址字节编号。 指针可以存放M、DI、DB和L区域中,也就是说,可以

作业习题 寻址方式和指令

寻址方式和指令习题 一、选择题 1、MOVX A,@DPTR指令中源操作数的寻址方式是() (A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 2、ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H 当CPU响应外部中断0后,PC的值是() (A)0003H (B)2000H (C)000BH (D)3000H 3、执行PUSH ACC指令,MCS-51完成的操作是() (A)SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP (C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP 4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=() (A)2000H (B)2001H (C)2002H (D)2003H 5、51执行完MOV A,#08H后,PSW的哪一位被置位() (A)C (B)F0 (C)OV (D)P 6、下面条指令将MCS-51的工作寄存器置成3区() (A)MOV PSW,#13H (B)MOV PSW,#18H (C)SETB PSW.4 CLR PSW.3 (D) SETB PSW.3 CLR PSW.4 7、执行MOVX A,@DPTR指令时,MCS-51产生的控制信号是()(A)/PSEN (B)ALE (C)/RD (D)/WR 8、MOV C,#00H的寻址方式是() (A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址 9、ORG 0000H AJMP 0040H ORG 0040H MOV SP,#00H 当执行完上面的程序后,PC的值是()

ARM处理器9种基本寻址方式

寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式,ARM处理器有9 种基本寻址方式。 1.寄存器寻址 操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。 例如指令: MOV R1,R2 ;R1←R2 SUB R0,R1,R2 ;R0←R1- R2 2.立即寻址 在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。立即数要以“#”为前缀,表示16进制数值时以“0x”表示。 例如指令: ADD R0,R0,#1 ;R0←R0 + 1 MOV R0,#0xff00 ;R0←0xff00 3.寄存器移位寻址 寄存器移位寻址是ARM指令集特有的寻址方式。第2个寄存器操作数在与第1个操作数结合之前,先进行移位操作。 例如指令: MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0,即R0=R2 * 8 ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相与操作,结果放入R1 可采用的移位操作如下: LSL:逻辑左移(Logical Shift Left),寄存器中字的低端空出的位补0。 LSR:逻辑右移(Logical Shift Right),寄存器中字的高端空出的位补0。 ASR:算术右移(Arithmetic Shift Right),移位过程中保持符号位不变,即如果源操作数为正数,则字的高端空出的位补0,否则补1 ROR:循环右移(Rotate Right),由字的低端移出的位填入字的高端空出的位 RRX:带扩展的循环右移(Rotate Right extended by 1 place),操作数右移一位,高端空出的位用原C 标志值填充。 各移位操作过程如图所示。

详解西门子间接寻址讲解案例分析

详解西门子间接寻址 等级:弓剑手 威望:0 发贴:116 经验:416 财产:407 魅力:411 注册:2005-5-21

【地址的概念】 完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。 我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素: 1、存储的区域 2、这个区域中具体的位置 比如:A 其中的A是指令符,是A的操作数,也就是地址。这个地址由两部分组成: Q:指的是映像输出区 :就是这个映像输出区第二个字节的第0位。 由此,我们得出,一个确切的地址组成应该是: 〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:。 DB X 200 . 0 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成:地址标识符 + 确切的数值单元 【间接寻址的概念】 寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A ,就是直接寻址,对于A这个指令来说,就是它要进行操作的地址。 这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。 比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号 [ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。 西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。 【存储器间接寻址】 存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。 存储器间接寻址具有两个指针格式:单字和双字。 单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。 双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。 指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。 单字指针和双字指针在使用上有很大区别。下面举例说明: L DW#16#35 BX[MD2] BX[MD2] BW[MD2] 这样的寻址是错误的提法,这里做个解释:DB[MW100].DBW[MD2] 这样的寻址结构就寻址原理来说,是可以理解的,但从SIEMENS 程序执行机理来看,是非法的。在实际程序中,对于这样的寻址,程序语句应该写成:OPN DB[WM100],L DBW[MD2]----------------- -

西门子PLC编程中的间接寻址

本栏论题:西门子PLC编程中的间接寻址[601] 1、地址的概念 我们知道,完整的一条指令,应该包含指令符+操作数(不包括那些单指令)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。 在PLC中存在各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、资料区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素: (1)、存储的区域 (2)、这个区域中具体的位置 比如:A Q2.0,其中的A是指令符,Q2.0是A的操作数,也就是地址。这个位址由两部分组成:Q:指的是映像输出区;2.0:就是这个映像输出区第二个字节的第0位。因此一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX0.0。 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成:地址标识符+确切的数值单元 2、间接寻址的概念 寻址,就是指定指令要进行操作的地址。给定指令操作的位址方法,就是寻址方法。 所谓直接寻址,简单的说,就是直接给出指令的确切操作数,像上面所说的,A Q2.0,这样看来,间接寻址就是间接的给出指令的确切操作数。比如:A Q[MD0],A T[DBW4]。程序语句中用方刮号[]标明的内容,间接的指明了指令要进行的位址,这两个语句中的MD0和DBW4称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。 3、间接寻址的两种方法 西门子的间接寻址方式有两大类型:内存间接寻址和寄存器间接寻址。 (1)、内存间接寻址 内存间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。 内存间接寻址具有两个指针格式:单字和双字。 单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。 双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。 指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。 单字指针和双字指针在使用上有很大区别。单字指针只应用在地址标识符是非位的情况下。的确,单字指针前面描述过,它确定的数值是0-65535,而对于byte.bit这种具体位构来说,只能用双字指针。这是它们的第一个区别,单字指针的另外一个限制就是,它只能对T、C、DB、FC和FB进行寻址,通俗地说,单字指针只可以用来指代这些存储区域的编号。 相对于单字指针,双字指针就没有这样的限制,它不仅可以对位地址进行寻址,还可以对BYTE、WORD、DWORD寻址,并且没有区域的限制。不过,有得必有失。(在对非位的区域

GIS应用开发技术大作业

GIS应用开发技术大作业 :

GIS应用开发技术 一、地理信息系统基本概念: 地理信息系统是在计算机硬、软件系统支持下,对现实世界(资源与环境)的研究和变迁的各类空间数据及描述这些空间数据特性的属性进行采集、储存、管理、运算、分析、显示和描述的技术系统。 二、地理信息系统组成: 1、计算机硬件系统 计算机硬件系统是计算机系统中的实际物理装置的总称,可以是电子的、电的、磁的、机械的、光的元件或装置,是GIS的物理外壳。 2、计算机软件系统 计算机软件系统是指必需的各种程序。 3、系统开发、管理和使用人员 一个周密规划的地理信息系统项目应包括负责系统设计和执行的项目经理、信息管理的技术人员、系统用户化的应用工程师以及最终运行系统的用户。 4、空间数据 是指以地球表面空间位置为参照的自然、社会和人文经济景观数据,可以是图形、图像、文字、表格和数字等。它是由系统的建立者通过数字化仪、扫描仪、键盘、磁带机或其他系统通讯输入GIS,是系统程序作用的对象,是GIS所表达的现实世界经过模型抽象的实质性内容。 三、以Supermap Despro介绍地理信息系统主要功能: ①、应用系统开发 基于Supermap Despro软件平台开发GIS应用系统,主要专注于国土资源、电子政务和公共服务、房产管理、统计、军事与公安等领域的GIS应用系统开发,可以根据用户的需要开发其他领域的应用系统。可以直接为最终用户开发GIS应用系统,也可以与开发商和系统集成商合作为最终用户服务。与开发商和系统集成商合作的方式包括:直接参与项目开发、为用户定制专业GIS应用模块、提供成熟的行业应用源代码和解决方案。 ②、数据处理与建库 为用户提供地图数字化、遥感图像处理、电子地图制作、综合空间数据建库、各种数据格式的转换与编辑、各类工程项目用图的整体方案设计、图纸影像扫描和喷绘等服务。 ③、项目咨询 为用户基于Supermap Despro软件开发应用系统提供项目策划与规划、项目立项、项目总体设计、项目招投标和项目监理等技术的咨询服务。 四、GIS主流技术: Ⅰ、组件式GIS 组件式GIS的基本思想是把GIS的各大功能模块划分为几个控件,每个控件完成不同的功能。各个GIS控件之间,以及GIS控件与其它非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。控件如同一堆各式各样的积木,他们分别实现不同的功能(包括GIS和非GIS功能),根据需要把实现各种功能的“积木”搭建起来,就构成应用系统。 GIS组件产品

西门子STL间接寻址常问问题集

1.1如何获得指针或者间接寻址有关的信息? 指针的类型包括16位指针、32位指针、Pointer(6Byte)和Any(10Byte)。16位指针用于定时器、计数器、程序块的寻址;32位指针用于I/Q/M/L/数据块等存储器中位、字节、字以及双字的寻址,其中第0~2位表示位地址(0~7)、第3~18位为字节地址,其余位未定义;Pointer和Any一般应用在复杂数据类型(比如Date_and_Time /Array/String等)在FB、FC之间的传递。而Any可以看做是对Pointer的延伸,因为由10Byte组成的Any中Byte4~Byte9就是一个Pointer。 了解指针的格式十分重要,为正确使用指针,应阅读如下内容: 1、"SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章参数类型 2、文档:1008用于S7-300 和S7-400 的语句表(STL)编程 3、文档:F0215,S7-300和S7-400寻址 1.2为什么语句LAR1 P##PointerInput 在一个函数(FC)中是无效的,然而,同样的 语句在一个功能块(FB)中是有效的? 在FC被调用时,复杂数据类型例如指针是被复制到调用者的临时变量区中,在FC内部对此V区地址直接取址放入到地址寄存器AR1或AR2是不被编译器规则接受的(导致MC7寄存器信息过长),也就是说在FC内部通过P#进行地址寄存器取址仅能支持Temp临时变量。因此如果需要在FC中操作指针等复杂输入输出变量地址需要使用累加器进行中转。 考虑到程序的一致性、遵守编译器规则和STL手册中LAR1指令说明,建议用户使用如下指令操作: L P##PointerInput LAR1 1.3 STEP 7 中哪些操作会覆盖DB/DI寄存器或者地址寄存器AR1/AR2的内容? 下面说明了可能引起DB/DI寄存器或者地址寄存器AR1/AR2内容改变的一些操作: ?DB寄存器和AR1受到影响的操作 1. 使用完整的DB路径(如L DB20.Val)或者调用FC/FB时使用DB块完整地 址作为其参数,则DB寄存器内容被覆盖。 例如在OB1中调用FC1后,DB寄存器变成20。 OPN DB1 Call FC1 Input(bit):DB20.DBX0.2 因此在编程的时候,OPN 指令打开数据块,通过DBX x.y的方式访问其中内容,但是如果在打开数据块后DB寄存器的内容被修改了,则DBX x.y的方式访问变量则会访问到错误的地址。可以通过使用符号寻址的方式或者使用完整路径编程避免,当然重新使用OPN指令也是可以的。 2. 调用FC时使用string, array, structure ,UDT作为其形参或者调用FB时使用 string, array, structure 或者UDT作为其in out形参,在FC/FB程序中访问这些地

西门子间接寻址详解

完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。 我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C 不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素: 1、存储的区域 2、这个区域中具体的位置 比如:A Q2.0 其中的A是指令符,Q2.0是A的操作数,也就是地址。这个地址由两部分组成: Q:指的是映像输出区 2.0:就是这个映像输出区第二个字节的第0位。 由此,我们得出,一个确切的地址组成应该是: 〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。 DB X 200 . 0 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成: 地址标识符+ 确切的数值单元 【间接寻址的概念】 寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。 在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。 这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。 比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。

单片机寻址方式

51单片机的寻址方式 寻址方式:指定操作数所在单元的方法。 在我们学习的8051单片机中,有7种寻址方法,下面我们将逐一进行分析。 一、立即寻址 用“#”作前缀 MOV A,#20H 在这种寻址方式中,指令多是双字节的。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如: MOV A,#3AH 这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。 MOV DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR 是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。 二、直接寻址

指令中直接给出操作数的地址。 MOV A,30H;这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 MOV 30H,DPH 在80C51单片机中,直接地址只能用来表示内部数据存储器、位地址空间以及特殊功能寄存器,具体的说就是: 1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。 我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH 形式给出。 2、位寻址区。20H-2FH地址单元。 3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是此指令也可以以 MOV 80H,#85H的形式表述。

详解西门子间接寻址完整版

详解西门子间接寻址 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

详解西门子间接寻址 【地址的概念】 完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT 等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。 我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素: 1、存储的区域 2、这个区域中具体的位置 比如:A 其中的A是指令符,是A的操作数,也就是地址。这个地址由两部分组成: Q:指的是映像输出区 :就是这个映像输出区第二个字节的第0位。 由此,我们得出,一个确切的地址组成应该是: 〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:。 DB X 200 . 0 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成: 地址标识符 + 确切的数值单元 【间接寻址的概念】 寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。 在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A ,就是直接寻址,对于A这个指令来说,就是它要进行操作的地址。 这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。 比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号 [ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。 西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。 【存储器间接寻址】 存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元

寄存器与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 代码段IP DS 数据段 SS 堆栈段SP BP ES 附加段 二、七种寻址方式: 1、立即寻址方式: 操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。 这种操作数成为立即数。立即数可以是8位的,也可以是16位的。 例如: 指令: MOV AX,1234H 则: AX = 1234H 2、寄存器寻址方式: 操作数在CPU内部的寄存器中,指令指定寄存器号。 对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。对于8位操作数,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。 这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数 因而可以取得较高的运算数度。

详解西门子间接寻址 (2)

详解西门子间接寻址 【地址的概念】 完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT 等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。 我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素: 1、存储的区域 2、这个区域中具体的位置 比如:A 其中的A是指令符,是A的操作数,也就是地址。这个地址由两部分组成: Q:指的是映像输出区 :就是这个映像输出区第二个字节的第0位。 由此,我们得出,一个确切的地址组成应该是: 〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:。 DB X 200 . 0 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成: 地址标识符+ 确切的数值单元 【间接寻址的概念】 寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。 在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A ,就是直接寻址,对于A这个指令来说,就是它要进行操作的地址。 这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。 比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。 西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。 【存储器间接寻址】

DB块调用问题

DB块调用问题 【地址的概念】 完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。 我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素: 1、存储的区域 2、这个区域中具体的位置 比如:A Q2.0 其中的A是指令符,Q2.0是A的操作数,也就是地址。这个地址由两部分组成: Q:指的是映像输出区 2.0:就是这个映像输出区第二个字节的第0位。 由此,我们得出,一个确切的地址组成应该是:

〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。 DB X 200 . 0 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个 部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成: 地址标识符+ 确切的数值单元 【间接寻址的概念】 寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。 在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。 这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。 比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指 向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。 西门子的间接寻址方式计有两大类型:存储器间接寻址

S7-200间接寻址解析

对指令的操作数的指定方式,我将其理解为“寻址”。 下面将以我个人的理解对西门子S7-200的寻址方式进行描述,如有不当之处,还请广大读者指正。 在程序中绝大部分的指令都带有操作数,所谓的操作数,是执行这一指令时被这一指令加以操作、处理的数值。对指令的操作数的指令方式大致的总结一下,可以概括为如下几个类型:1:指令的操作数为“立即数”,(如:15、16#F、2#1111等、、、、、、)。 LD M0.0 MOVW +255, VW0 +I +45, VW0 这是一条加法指令,被加数为:255、加数为45执行这条指令后计算出来的“和”存放在VW0这一存储器内。 LD M0.0 MOVB 15, VB0 这是一条传指令,译为:将15传送至存储器VB0内。 2:指令的操作数没有直接的给出,而是给出它所在的地址。 LD M0.0 MOVW VW0, VW4 -I VW2, VW4 这是一条减法指令,译为:将存储器VW0内的数值减去存储器VW2内的数值,将“差”存放在存储器VW4内。 3:指令的操作数没有直接的给出,而是给出它所在的地址的“地址”,在S7-200中,将这种寻址方式称之为“指针寻址”。 下面,我们一起来学习一下关于指针的使用方法: 在使用指针进行间接寻址的过程中,会涉及到的两个符号: &:建立指针(进行间接访问的区域) *:读取指针(读取指针间接指定的地址) 下面是使用指针的一般步骤: 1:建立指针 建立指针需要使用双字传送指令,如下所示: LD M0.0 MOVD &MB0, VD10 译为:在VD10建立指针,指针指向被间接访问的首地址MB0。 在建立指针时需要注意如下几个问题: ①可以进行间接访问的区域,包括如下几个区域:I、Q、M、S、V、T(当前值)、C(当前值)。在S7-200中位状态是不能进行间接指定的,所以这里特别强调只是访问定时器及计数器的当前值,而不是其位状态。 ②可以作为建立指针的区域,包括如下几个区域:V、L、及累加器AC1至AC3。且只能是双字(32bit)类型的地址。 ③在建立指针时在存储器前加“&”这个符号的表示进行间接访问的区域的首地址,所以除定时器T及计数器C外都必须是以字节的形式出现的。

详解西门子间接寻址

详解西门子间接寻址 详解西门子间接寻址 【地址的概念】 完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。 我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素: 1、存储的区域 2、这个区域中具体的位置 比如:A Q2.0 其中的A是指令符,Q2.0是A的操作数,也就是地址。这个地址由两部分组成: Q:指的是映像输出区 2.0:就是这个映像输出区第二个字节的第0位。 由此,我们得出,一个确切的地址组成应该是: 〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。 DB X 200 . 0 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成: 地址标识符+ 确切的数值单元 【间接寻址的概念】 寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。 在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。 这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。 比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。 西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。 【存储器间接寻址】 存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。 存储器间接寻址具有两个指针格式:单字和双字。 单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。 双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。 指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。 单字指针和双字指针在使用上有很大区别。下面举例说明: L DW#16#35 //将32位16进制数35存入ACC1 T MD2 //这个值再存入MD2,这是个32位的位存储区域

西门子S7200和变频器MODBUS通讯实例详解

西门子S7200与变频器MODBUS通讯实例详解 西门子S7200PLC简介 西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。来自西门子的S7 - 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。 Modbus通讯协议简介 Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。 ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。 ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。 1 MODBUS RTU协议在S7-200中的应用原理 1.1 MODBUS RTU协议与S7-200相互关系简介 S7-200 CPU上的通讯口Port0可以支持MODBUS RTU协议,成为MODBUS RTU 从站。此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通

讯设备传输。 想在S7-200 CPU与其他支持MODBUS RTU的设备使用MODBUS RTU协议通讯,需要由有S7-200 CPU做MODBUS主站。S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。 2 从站指令的用法: S7-200控制系统应用中,MODBUS RTU从站指令库只支持CPU上的通讯0口(Port0)。要实现MODBUS RTU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。MODBUS RTU 功能是通过指令库中预先编好的程序功能块实现的。 MODBUS RTU协议在S7-200中应用的基本过程 (1) 首先检查S7-200控制系统中所用Micro/WIN软件版本,应当是Step7-Micro/WIN V3.2以上版本。 (2) 检查Micro/WIN的指令树中是否存在MODBUS RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。如果没有,须安装Micro/WIN32 V3.2 Instruction Library(指令库)软件包 编程时使用SM0.1—调用子程序MBUS_INIT进行初始化,使用SM0.0—调用研究MBUS_SLAVE,并指定相应参数。关于参数的详细说明,可在子程序的局部变量表中找到。

七种寻址方式

七种寻址方式 一、立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。 立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如: MOV AH,80H ADD AX,1234H MOV ECX,123456H MOV B1,12H MOV W1,3456H ADD D1,32123456H 其中:B1、W1和D1分别是字节、字和双字单元。 以上指令中的第二操作数都是立即数, 立即数寻址方式通常用于对通用寄存器或内存单元赋初值。 二、寄存器寻址方式 指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。 指令中可以引用的寄存器及其符号名称如下: 8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等; 16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等; 32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。 寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。 1、源操作数是寄存器寻址方式 如:ADD VARD,EAX ADD VARW,AX MOV VARB,BH等。 其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。在第4章将会学到如何定义它们。 2、目的操作数是寄存器寻址方式 如:ADD BH,78h ADD AX,1234h MOV EBX,12345678H等。 3、源和目的操作数都是寄存器寻址方式 如:MOV EAX,EBX MOV AX,BX MOV DH,BL等。 三、直接寻址方式 指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。 在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。 例:假设有指令:MOV BX,[1234H],在执行时,(DS)=2000H,内存单元21234H 的值为5213H。问该指令执行后,BX的值是什么? 解:根据直接寻址方式的寻址规则,把该指令的具体执行过程用下图来表示。

PLC寻址

转载)【地址的概念】 完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。 我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素: 1、存储的区域 2、这个区域中具体的位置 比如:A Q2.0 其中的A是指令符,Q2.0是A的操作数,也就是地址。这个地址由两部分组成: Q:指的是映像输出区 2.0:就是这个映像输出区第二个字节的第0位。 由此,我们得出,一个确切的地址组成应该是: 〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。 DB X 200 . 0 其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成: 地址标识符+ 确切的数值单元 【间接寻址的概念】 寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。 在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。 这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。 比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。 西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。 【存储器间接寻址】 存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。 存储器间接寻址具有两个指针格式:单字和双字。 单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。 双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。 指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。单字指针和双字指针在使用上有很大区别。下面举例说明: L DW#16#35 //将32位16进制数35存入ACC1 T MD2 //这个值再存入MD2,这是个32位的位存储区域 L +10 //将16位整数10存入ACC1,32位16进制数35自动移动到ACC2

相关文档
最新文档