欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    step编程之地址概念详解 .docx

    • 资源ID:13055129       资源大小:71.87KB        全文页数:17页
    • 资源格式: DOCX        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    step编程之地址概念详解 .docx

    精品名师归纳总结完整的一条指令,应当包含指令符+操作数(当然不包括那些单指令,比如NOT 等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的的址。我们知道,在 PLC 中划有各种用途的储备区,比如物理输入输出区 P、映像输入区 I、映像输出区 Q、位储备区 M、定时器 T、计数器 C、数据区 DB 和L 等,同时我们仍知道,每个区域可以用位( BIT )、字节( BYTE )、字( WORD )、双字( DWORD )来衡量,或者说来指定准确的大小。当然定时器 T、计数器 C 不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到 , 要 描 述 一 个 的 址 , 至 少 应 该 包 含 两 个 要 素 :1、 存 储 的 区 域2、这个区域中具体的位置比如:AQ2.0其中的 A 是指令符, Q2.0 是 A 的操作数,也就是的址。这个的址由两部分组成:Q:指的是映像输出区2.0 : 就 是 这 个 映 像 输 出 区 第 二 个 字 节 的 第 0位 。由 此 , 我 们 得 出 ,一 个 确 切 的 的 址 组 成 应 该 是 :储备区符储备区尺寸符尺寸数值 .位数值,例如: DBX200.0。DBX200.0其中,我们又把储备区符储备区尺寸符这两个部分合称为:的址标 识 符 。 这 样 , 一 个 确 切 的 的 址 组 成 , 又 可 以 写 成 : 的址标识符+确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的的址。给定指令操作的的址方法,就是寻址方法。在谈间接寻址之前,我们简洁的明白一下直接寻址。所谓直接寻址,简洁的说,就是直接给出指令的准确操作数,象上面所说的,A Q2.0,就是直接寻址 , 对 于A这 个 指 令 来 说 , Q2.0就 是 它 要 进 行 操 作 的 的 址 。可编辑资料 - - - 欢迎下载精品名师归纳总结这样看来,间接寻址就是间接的给出指令的准确操作数。对,就是这个概念。比如: A QMD100,A TDBW100 。程序语句中用方刮号 标明的内容,间接的指明白指令要进行的的址,这两个语句中的MD100 和 DBW100 称为指针 Pointer,它指向它们其中包含的数值,才是指令真刚要执行的的址区域的确切位置。间接由此得名。西门子的间接寻址方式计有两大类型:储备器间接寻址和寄存器间接寻址。【存储器间接寻址】储备器间接寻址的的址给定格式是:的址标识符+指针。指针所指示储备单元 中 所 包 含 的 数 值 , 就 是 的 址 的 确 切 数 值 单 元 。存 储 器 间 接 寻 址 具 有 两 个 指 针 格 式 : 单 字 和 双 字 。单字指针是一个 16bit 的结构,从 0-15bit,指示一个从 0-65535 的数值,这个 数值就 是被 寻址 的存储 区 域的编号 。双字指针是一个 32bit 的结构,从 0-2bit,共三位,依据 8 进制指示被寻址的位编号,也就是 0-7。而从 3-18bit,共 16 位,指示一个从 0-65535 的数值, 这 个 数 值 就 是 被 寻 址 的 字 节 编 号 。指针可以存放在 M、DI 、DB 和 L 区域中,也就是说,可以用这些区域的内容来做 指针。单 字 指 针 和 双 字 指 针 在 使 用 上 有 很 大 区 别 。 下 面 举 例 说 明 : LDW#16#35/将32位16进 制 数35存 入ACC1 TMD2/ 这 个 值 再 存 入 MD2 , 这 是 个32位 的 位 存 储 区 域L +10 /将 16 位整数 10 存入 ACC1,32 位 16 进制数 35 自动移动到 ACC2 T MW100/ 这 个 值 再 存 入 MW100 , 这 是 个 16 位 的位 储备 区 域OPN DBWMW100/ 打开 DBW10。这里的 MW100 就是个单字指针,存放指针的区域是M区,MW100 中的值 10,就是指针间接指定的的址,它是个16 位的值!可编辑资料 - - - 欢迎下载精品名师归纳总结L L#+10 /以 32 位形式,把 10 放入 ACC1 ,此时, ACC2 中的内容为: 16位整数10TMD104/ 这 个 值 再 存 入 MD104 , 这 是 个 32 位 的 位 存 储 区 域AIMD104/对I1.2进 行 与逻 辑 操 作 !=DIXMD2 / 赋值背景数据位 DIX6.5 !ADBMW100.DBXMD2/读 入DB10.DBX6.5数 据 位 状 态=QMD2/赋值给Q6.5ADBMW100.DBXMD2/ 读 入 DB10.DBX6.5数 据 位 状 态=QMW100/错 误 ! ! 没 有Q10这 个 元 件从上面 系 列举 例 我 们 至 少看出来 一 点 :单字指针只应用在的址标识符是非位的情形下。的确,单字指针前面描述 过,它确定的数值是 0-65535,而对于 byte.bit 这种具体位结构来说,只能用双字指针。这是它们的第一个区分,单字指针的另外一个限制就是,它只能对T、C、DB、FC 和 FB 进行寻址,通俗的说,单字指针只可以用来指代这些储备区域的编号。相对于单字指针,双字指针就没有这样的限制,它不仅可以对位的址进行 寻址,仍可以对BYTE 、WORD 、DWORD 寻址,并且没有区域的限制。不过,有得必有失,在对非位的区域进行寻址时,必需确保其0-2bit 为全 0!总结一下: 单字指针的储备器间接寻址只能用在的址标识符是非位的场合。双字指针由于有位格式存在,所以对的址标识符没有限制。也正是由于双字指针是一个具有位的指针,因此,当对字节、字或者双字储备区的址进行寻址时,必需确保双字指针的内容是8或者8的倍数。与现在,我们来分析一下上述例子中的逻辑A IMD104操为什么最终是对作I1.2 进行。通 过 LL#+10, 我 们 知道存 放 在MD104中 的 值 应该 是 :MD104: 00000000000000000000000000001010可编辑资料 - - - 欢迎下载精品名师归纳总结当作为双字指针时,就应当依据3-18bit 指定 byte,0-2bit 指定 bit 来确定最终指令要操作的的址,因此:00000000000000000000000000001010=1.2【 的 址 寄 存 器 间 接 寻 址 】在从前所说的储备器间接寻址中,间接指针用 M、DB 、DI 和 L 直接指定,就是说,指针指向的储备区内容就是指令要执行的准确的址数值单元。但在寄存器间接寻址中,指令要执行的准确的址数值单元,并非寄存器指向的储备区内容,也就是说,寄存器本身也是间接的指向真正的的址数值单元。从寄存 器 到 得 出 真 正 的 的 址 数 值 单 元 , 西 门 子 提 供 了 两 种 途 径 :1 、区域内寄存器间接寻址2 、区域间寄存器间接寻址的 址 寄 存 器 间 接 寻 址 的 一 般 格 式 是 : 的 址标 识 符 寄 存器 ,P#byte.bit , 比 如 : DIXAR1,P#1.5或MAR1,P#0.0。寄存器 ,P#byte.bit统称为:寄存器寻址指针,而的址标识符在上帖中谈过,它包含储备区符 +储备区尺寸符。但在这里,情形有所变化。比较一下刚才的例子:DIXAR1,P#1.5XAR1,P#1.5DIX 可以认为是我们通常定义的的址标识符,DI 是背景数据块储备区域,X 是这个储备区域的尺寸符,指的是背景数据块中的位。但下面一个示例中的M 了? X 只是指定了储备区域的尺寸符,那么储备区域符在哪里了?毫无疑问,在AR1中!DIX AR1,P#1.5这个例子,要寻址的的址区域事先已经确定,AR1 可以转变的只是这个区域内的准确的址数值单元,所以我们称之为:区域内寄存器间接 寻 址 方 式, 相 应 的 , 这 里 的 AR1,P#1.5 就 叫 做 区 域 内 寻 址 指 针 。X AR1,P#1.5 这个例子,要寻址的的址区域和准确的的址数值单元,都未事先确定,只是确定了储备大小,这就是意味着我们可以在不同的区域间的不 同的址数值单元以给定的区域大小进行寻址,所以称之为:区域间寄存器间接寻 址 方 式 , 相 应 的 , 这 里 的 AR1,P#1.5就 叫 做 区 域 间 寻 址 指 针 。可编辑资料 - - - 欢迎下载精品名师归纳总结既然有着区域内和区域间寻址之分,那么,同样的AR1 中,就存有不同的内容,它们代表着不同的含义。【AR的格式】的址寄存器是特的用于寻址的一个特别指针区域,西门子的的址寄存器共有两个:AR1和AR2,每个32位。当使用在区域内寄存器间接寻址中时,我们知道这时的AR 中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中 提 及 的 存 储 器 间 接 寻 址 中 的 双 字 指 针 , 也 就 是 : 其 0-2bit ,指定 bit 位, 3-18bit 指定 byte 字节。其第 31bit 固定为 0。AR:0000000000000BBBBBBBBBBBBBBBBXXX这 样 规 定 , 就 意 味 着 AR的 取 值 只 能 是 : 0.0 65535.7例如 :当 AR=D4 ( hex) =0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。而在区域间寄存器间接寻址中,由于要寻址的区域也要在AR 中指定,明显这时的 AR 中内容确定于寄存器区域内间接寻址时,对AR 内容的要求,或者说规定不同。AR:10000YYY00000BBBBBBBBBBBBBBBBXXX比较一下两种格式的不同,我们发觉,这里的第31bit 被固定为 1,同时, 第 24、25、26 位有了可以取值的范畴。聪慧的你,确定可以联想到,这是用于指定储备区域的。对,bit24-26 的取值确定了要寻址的区域,它的取值是这样定义的:区域标识符26P(、外部25输、入输24位出)000I(输入映像区)可编辑资料 - - - 欢迎下载精品名师归纳总结001Q(输出映像区)010M(位存储区)011DB(数据块)100DI(背景数据块)101L(暂存 数据区,也叫局域数据)111如 果 我们 把 这 样 的 AR内 容 , 用 HEX表 示 的 话 , 那 么 就 有:当是对P区域寻址时,AR=800xxxxx当是对I区域寻址时,AR=810xxxxx当是对Q区域寻址时,AR=820xxxxx当是对M区域寻址时,AR=830xxxxx当是对DB区域寻址时,AR=840xxxxx当是对DI区域寻址时,AR=850xxxxx当是对L区域寻址时,AR=870xxxxx经过列举,我们有了初步的结论:假如AR 中的内容是 8 开头,那么就肯定是区域间寻址。假如要在DB 区中进行寻址,只需在8 后面跟上一个 40。84000000-840FFFFF指明了要寻址的范围是:DB区的0.0 65535.7。可编辑资料 - - - 欢迎下载精品名师归纳总结例如:当 AR=840000D4(hex)=1000 0100 0000 0000 0000 0000 1101 0100(b),实际上就是等于DBX26.4。我们看到,在寄存器寻址指针AR1/2,P#byte.bit这种结构中,P#byte.bit又是什么了?【P#指针】P#中的 P 是 Pointer,是个 32 位的直接指针。所谓的直接,是指P#中的#后面所跟的数值或者储备单元,是P 直接给定的。这样 P#XXX 这种指针,就可以被用来在指令寻址中,作为一个“常数 ”来对待,这个 “常数 ”可以包含或不包含存储区域。例如:( L P#Q1.0 /把 Q1.0 这个指针存入hexACC1,此时)ACC1的内容=82000008=Q1.0( L P#1.0 /把 1.0 这个指针存入hexACC1 ,此时)ACC1的内容 =00000008=1.0 LP#MB100/错误 ! 必 须 按 照byte.bit结 构给 定 指 针 。 L P#M100.0=83000320/ 把(M100.0这个指针存入hexACC1 ,此时)ACC1 的内容=M100.0 L P#DB100.DBX26.4 / 错误! DBX 已经供应了储备区域,不能重复指定。 L P#DBX26.4 /把 DBX26.4 这个指针存入 ACC1 ,此时 ACC1 的内容=840000D4(hex)=DBX26.4我们发觉,当对 P#只是指定数值时,累加器中的值和区域内寻址指针规定的格式相同(也和储备器间接寻址双字指针格式相同)。而当对P#指定带有储备区域时,累加器中的内容和区域间寻址指针内容完全相同。事实上,把什么样的值传给AR ,就打算了是以什么样的方式来进行寄存器间接寻址。在实际应用中,我们正是利用P#的这种特点,依据不同的需要,指定P#指针,然后,再传递给 AR,以确定最终的寻址方式。在寄存器寻址中, P#XXX 作为寄存器 AR 指针的偏移量,用来和 AR 指针进行相加运 算, 运算 的结 果, 才 是指 令真刚要 操作 的确 切的 址数 值单 元!无论是区域内仍是区域间寻址,的址所在的储备区域都有了指定,因此,这 里 的 P#XXX只 能 指 定 纯 粹 的 数 值 , 如 上 面 例 子 中 的 。【指针偏移运算法就】可编辑资料 - - - 欢迎下载精品名师归纳总结在寄存器寻址指针AR1/2,P#byte.bit 这种结构中, P#byte.bit 如何参加运算,得出最终的的址了?运算的法就是: AR1 和 P#中的数值,依据 BYTE 位和 BIT 位分类相加。BIT 位相加按八进制规章运算,而BYTE 位相加,就依据十进制规章运算。例如:寄存器寻址指针是:AR1 ,P#2.6,我们分 AR1=26.4 和 DBX26.4两种情况来分析。当AR1等于26.4, AR1:26.2+P#:2.6= 29.7 这 是 区 域 内 寄 存 器 间 接 寻 址 的 最 终 确 切 的 址 数 值 单 元当AR1等于DBX26.4, AR1:DBX26.2+P#:2.6=DBX29.7这 是 区 域 间 寄 存 器 间 接 寻 址 的 最 终 确 切 的 址 数 值 单 元【AR的的址数据赋值】通过前面的介绍,我们知道,要正确运用寄存器寻址,最重要的是对寄存器 AR 的赋值。同样,区分是区域内仍是区域间寻址,也是看AR 中的赋值。对AR的赋 值通常有下面的几个方法:1、直例接赋如值法:LDW#16#83000320LAR1可以用 16 进制、整数或者二进制直接给值,但必需确保是32 位数据。经过赋值的 AR1 中既储备了的址数值,也指定了储备区域,因此这时的寄存器寻址方式肯定是区域间寻址。可编辑资料 - - - 欢迎下载精品名师归纳总结2、间接赋值法例如:LMD100LAR1可以用储备器间接寻址指针给定AR1内容。具体内容储备在MD100 中。3、指针赋值法例如:LAR1P#26.2使 用P#这 个32位 “ 常 数 ” 指 针 赋 值AR。总之,无论使用哪种赋值方式,由于AR 储备的数据格式有明确的规定, 因 此 , 都 要 在 赋 值 前 , 确 认 所 赋 的 值 是 否 符 合 寻 址 规 范 。使用间接寻址的主要目的,是使指令的执行结果有动态的变化,简化程序是第一目的,在某些情形下,这样的寻址方式是必需的,比如对某储备区域数据遍历。此外,间接寻址,仍可以使程序更具柔性,换句话说,可以标准化。下 面 通 过 实 例 应 用 来 分 析 如 何 灵 活 运 用 这 些 寻 址 方 式 :【存储器间接寻址应用实例】我们先看一段示例程序:L100TMW100/将16位整数100传入MW100L DW#16#8 BYTE.BIT/加载双字16结进制数8 ,当把它用作双字指针时,依据构,结果演变过程就是:8H=1000B=1.0TMD2/MD2=8HOPNDBMW100/OPNDB100可编辑资料 - - - 欢迎下载精品名师归纳总结LDBWMD2/LDB100.DBW1 TMWMD2/TMW1ADBXMD2/ADBX1.0=MMD2/=M1.0在这个例子中,我们中心思想其实就是:将DB100.DBW1 中的内容传送到MW1 中。这里我们使用了储备器间接寻址的两个指针 单字指针 MW100 用于指定 DB 块的编号,双字指针 MD2 用于指定 DBW 和 MW 储备区字的址。对于坛友提出的DBMW100.DBWMD2这样的寻址是错误的提法,这里做个解释:DBMW100.DBWMD2这样的寻址结构就寻址原理来说,是可以懂得的,但从 SIEMENS 程序执行机理来看,是非法的。在实际程序中,对于这样的寻址,程序语句应当写成:OPN DBWWM100 , L DBWMD2-事实上,从这个例子的中心思想来看,根本没有必要如此复杂。但为什么要用间接寻址了? 要 澄 清使 用间 接寻 址 的 优 势 , 就 让 我 们从 比 较 中 , 找答 案 吧 。例子告知我们,它最终执行的是把DB 的某个具体字的数据传送到位储备区某个具体字中。这是针对数据块100 的 1 数据字传送到位储备区第 1 字中的具体操作。假如我们现在需要对同样的数据块的多个字(连续或者不连续)进行传送了?直接的方法,就是一句一句的写这样的具体操作。有多少个字的传送,就写多少这样的语句。毫无疑问,即使不知道间接寻址的道理,也应当明白,这样的编程方法是不合理的。而假如使用间接寻址的方法,语句就简洁多了。【示例程序的结构分析】我 将 示 例 程 序 从 结 构 上 做 个 区 分 , 重 新 输 入 如 下 :=输 入 1 : 指 定数 据块 编 号的 变量|L100|TMW100可编辑资料 - - - 欢迎下载精品名师归纳总结=输 入 2 : 指 定 字 的 址 的 变 量|LDW#16#8|TMD2=操作主体程序OPNDBMW100LDBWMD2TMWMD2明显,我们根本不需要对主体程序(红色部分)进行简洁而重复的复写, 而只需转变 MW100 和 MD2 的赋值(绿色部分),就可以完成应用要求。结论:通过对间接寻址指针内容的修改,就完成了主体程序执行的结果变更 , 这 种 修 改 是 可 以 是 动 态 的 和 静 态 的 。正是由于对真正的目标程序(主体程序)不做任何变动,而寻址指针是这个程序中唯独要修改的的方,可以认为,寻址指针是主体程序的入口参数,就好比功能块的输入参数。因而可使得程序标准化,具有移植性、通用性。那么又如何动态改写指针的赋值了?不会是另一种简洁而重复的复写吧。让 我 们 以 一 个 具 体 应 用 , 来 完 善 这 段 示 例 程 序 吧 : 将DB100中 的1-11数 据 字 , 传 送 到MW1-11中 在 设 计完 成这 个任 务 的 程 序 之 前 , 我 们先 了 解 一 些 背景 知 识 。【数据对象尺寸的划分规就】数据对象的尺寸分为:位( BOOL)、字节( BYTE )、字( WORD)、双字( DWORD )。这好像是个简洁的概念,但假如,MW10=MB10+MB11 ,那么是不是说, MW11=MB12+MB13 ?假如你的回答是确定的,我建议你连续看下 去 , 不 要 跳 过 , 因 为 这 里 的 疏 忽 , 会 导 致 最 终 的 程 序 的 错 误 。按位和字节来划分数据对象大小时,是以数据对象的 bit 来偏移。这句话就是说, 0bit 后就是 1bit, 1bit 后确定是 2bit,以此类推直到 7bit,完成一个字节 大 小 的 指定 , 再 有 一个 bit 的 偏 移 , 就 进 入 下 一 个 字 节 的 0bit 。而按字和双字来划分数据对象大小时,是以数据对象的BYTE 来偏移!这可编辑资料 - - - 欢迎下载精品名师归纳总结就是说, MW10=MB10+MB11 ,并不是说, MW11=MB12+MB13 ,正确选项MW11=MB11+MB12,然后才是MW12=MB12+MB13!这个概念的重要性在于,假如你在程序中使用了MW10 ,那么,就不能对MW11进行 任何 的 操 作 , 因 为, MB11是 MW10和 MW11的 交 集 。也就是说,对于 “将 DB100 中的 1-11 数据字,传送到 MW1-11 中”这个具体任务 而言 , 我们只需要 对 DBW1 、DBW3 、 DBW5 、 DBW7 、 DBW9 、DBW11 这 6 个字进行 6 次传送操作即可。这就是单独分出一节,说明数据对象尺 寸 划 分 规 就 这 个 看 似 简 单 的 概 念 的 目 的 所 在 。【循环的结构】要“将 DB100 中的 1-11 数据字,传送到MW1-11 中”,我们需要将指针内容依据次序逐一指向相应的数据字,这种对指针内容的动态修改,其实就是遍历。对于遍历,最简洁的莫过于循环。一个循环包括以下几个要素:1、初始循环指针2、循环指针自加减2、 继 续 或 者 退 出 循 环 体 的 条 件 判 断被循环的程序主体必需位于初始循环指针之后,和循环指针自加减之前。比如: 初始循环指针:X=0 循环开始点M被循环的程序主体:-循环指针自加减:X+1=X 循 环 条 件 判 断 : X10 , False: GOTOM 。 True : GOTON 循环退出点N假如把 X 作为间接寻址指针的内容,对循环指针的操作,就等于对寻址指针内容的动态而循环的修改了。【 将 DB100中 的 1-11数 据 字 , 传 送 到 MW1-11中 】可编辑资料 - - - 欢迎下载精品名师归纳总结L L#1 / 初始化循环指针。这里循环指针就是我们要修改的寻址指针TMD102M2:LMD102T#COUNTER_DOPNDB100LDBWMD102TMWMD102L#COUNTER_DLL#2/+2 , 是 因 为 数 据 字 的 偏 移 基 准 是 字 节 。+DTMD102 / 自 加 减 循 环 指 针, 这 是 动 态 修 改了 寻 址 指 针 的 关键L L#11 / 循环次数 =n-1。n=6。这是由于,首次进入循环是无条件的,但已事实上执行了一次操作。<=DJCM2有关于 T MD102 , L L#11, <=D 的具体分析,请依据前面的内容推导。【 将 DB1-10中 的 1-11数 据 字 , 传 送 到 MW1-11中 】这里增加了对 DB 数据块的寻址,使用单字指针MW100 储备寻址的址,同样使用了循环,嵌套在数据字传送循环外,这样,要完成 “将 DB1-10 中的 1- 11 数据字,传送到 MW1-11 中”这个任务 ,共需要 M1 循环 10 次 ×M2 循环 6 次=60次。L1TMW100可编辑资料 - - - 欢迎下载精品名师归纳总结LL#1TMD102M1:LMW100T#COUNTER_WM2:对 数 据 字 循 环 传 送 程 序 , 同 上 例L#COUNTER_WL 1 / 这 里 不 是 数 据 字 的 偏 移, 只 是 编 号 的 简 单 递 增 , 因 此 +1+ITMW100L9/循环次数=n-1,n=10<=IJCM1通过示例分析,程序是让寻址指针在对要操作的数据对象范畴内进行遍历来编程,完成这个任务。我们看到,这种对储备器间接寻址指针的遍历是基于字节和字的,如何对位进行遍历了? 这 就 是 下 一 个 帖 子 要 分 析 的 寄 存器 间 接 寻 址的 实例 的 内容 了。LMD100LAR1与LMD100LAR1有什么区别? 当将 MD100 以这种 MD100形式表示时,你既要在对 MD100 赋值时考虑到所赋的值是否符合储备器间接寻址双字指针的规范,又要在使用这个寻址格可编辑资料 - - - 欢迎下载精品名师归纳总结式 作 为 语 句 一 部 分 时 , 是 否 符 合 语 法 的 规 范 。在你给出第一个例程的第一句:L MD100 上,我们看出它犯了后一个错误。储备器间接寻址指针,是作为指定的储备区域的准确数值单元来运用的。也就是说,指针不包含区域 标识,它 只是指明白 一个数 值。因此, 要在MD100 前加上区域标识如: M、DB 、I、Q、L 等,仍要加上储备区尺寸大小如: X、B、W、D 等。在加储备区域和大小标识时,要考虑累加器加载指令L 不 能 对 位 的 址 操 作 , 因 此 , 只 能 指 定 非 位 的 的 址 。为了对比下面的寄存器寻址方式,我们这里,修改为:L MDMD100 。并假 定MD100=8Hex, 同 时 我 们 也 假 定MD1=85000018Hex。当把 MD100 这个双字作为一个双字指针运用时,其储备值的0-18bit 将会依据双字指针的结构Byte.bit 来重新 “翻译 ”, “翻译”的结果才是指针指向的的址,因而 MD100 中的 8Hex=1000B=1.0,所以下面的语句:L MDMD100LAR1经过“翻译L”就是:MD1LAR1前面我们已经假定了 MD1=85000018,同样道理, MD1 作为指针使用时, 对 0-18bit 应当经过 Byte.bit 结构的 “翻译”,由于是传送给 AR 的址寄存器,仍要对 24-31bit 进行区域 寻址 “翻译 ”。这样,我们得出 LAR1 中最终 的值=DIX3.0 。就 是说 , 我们在 的址 寄存器 AR1 中储备了一 个指 针,它 指向DIX3.0。LMD100LAR1这段语句,是直接把 MD100 的值传送给 AR,当然也要经过 “翻译 ”,结果 AR1=1.0。就是说,我们在的址寄存器 AR1 中储备了一个指针,它指向 1.0,这是 由 MD100直 接 赋 值 的 。好像,两段语句,只是赋值给 AR1 的结果不同而已,其实不然。我们事先假定的值是考虑到对比的关系,特意指定的。假如 MD100=CHex 的了?可编辑资料 - - - 欢迎下载精品名师归纳总结对于前一段,由于 CHex=1100,其 0-3bit 为非 0,程序将立刻出错,无法执 行 。 ( 因 为 没 有MD1.4这 种 的 址 ! ! )后一段 AR1 的值经过翻译以后,等于 1.4,程序能正常执行。可编辑资料 - - - 欢迎下载

    注意事项

    本文(step编程之地址概念详解 .docx)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开