库存产品代理
SKIIP83AC128IST1
发布时间:2017-01-08 17:30:59 产品编号:GY-5-119237831  分享
价格:未填
品牌:SKIIP83AC128IST1
发货:3天内
信息标签:SKIIP83AC128IST1,库存,代理,库存产品代理

点击这里进行电话呼叫
点击这里QQ咨询
联系时一定要说在【贸易商务资源网】看到的将给您优惠!如果您也想和该公司一样在网站发信息有好排名,点击立即免费注册,发布产品推广

SKIIP83AC128IST1  【示例程序的结构分析】
西门康模块代理
程先生 139 188 64473 qq:937926739

  我将示例程序从结构上做个区分,SKIIP83AC128IST1重新输入如下:  
  
  =========================== 输入1:指定数据块编号的变量
  
  || L 100
  SKIIP83AC128IST1
  || T MW 100
  
  ===========================输入2:指定字地址的变量
  
  || L DW#16#8 SKIIP83AC128IST1
  
  || T MD 2
  
  ===========================操作主体程序
  
  OPN DB [MW 100]
  
  L DBW [MD 2]
  
  T MW[MD2]

  显然,我们根本不需要对主体程序(红色部分)进行简单而重复的复写,而只需改变MW100和MD2的赋值(绿色部分),就可以完成应用要求。
  
  结论:通过对间接寻址指针内容的修改,就完成了主体程序执行的结果变更,这种修改是可以是动态的和静态的。
  SKIIP83AC128IST1
  正是由于对真正的目标程序(主体程序)不做任何变动,而寻址指针是这个程序中**要修改的地方,可以认为,寻址指针是主体程序的入口参数,就好比功能块的输入参数。因而可使得程序标准化,具有移植性、通用性。

  那么又如何动态改写指针的赋值呢?不会是另一种简单而重复的复写吧。
  SKIIP83AC128IST1
  让我们以一个具体应用,来完善这段示例程序吧:
  
  将DB100中的1-11数据字,传送到MW1-11中

  在设计完成这个任务的程序之前,我们先了解一些背景知识。

  【数据对象尺寸的SKIIP83AC128IST1划分规则】

  数据对象的尺寸分为:位(BOOL)、字节(BYTE)、字(WORD)、双字(DWORD)。这似乎是个简单的概念,但如果,MW10=MB10+MB11,那么是不是说,MW11=MB12+MB13?如果你的回答是肯定的,我建议你继续看下去,不要跳过,因为这里的疏忽,会导致**终的程序的错误。

  按位和字节来划分数据对象大小时,SKIIP83AC128IST1是以数据对象的bit来偏移。这句话就是说,0bit后就是1bit,1bit后肯定是2bit,以此类推直到7bit,完成一个字节大小的指定,再有一个bit的偏移,就进入下一个字节的0bit。
  
  而按字和双字来划分数据对象大小时,是以数据对象的BYTE来偏移!这就是说,MW10=MB10+MB11,并不是说,MW11=MB12+MB13,正确的是MW11=MB11+MB12,然后才是MW12=MB12+MB13!
  SKIIP83AC128IST1
  这个概念的重要性在于,如果你在程序中使用了MW10,那么,就不能对MW11进行任何的操作,因为,MB11是MW10和MW11的交集。
  
  也就是说,对于“将DB100中的1-11数据字,传送到MW1-11中”这个具体任务而言,我们只需要对DBW1、DBW3、DBW5、DBW7、DBW9、DBW11这6个字进行6次传送操作即可。这就是单独分出一节,说明数据对象尺寸划分规则这个看似简单的概念的目的所在。

  【循环的结构】

  要“将DB100中的1-11数据字SKIIP83AC128IST1,传送到MW1-11中”,我们需要将指针内容按照顺序逐一指向相应的数据字,这种对指针内容的动态修改,其实就是遍历。对于遍历,**简单的莫过于循环。   一个循环包括以下几个要素:
  
  1、初始循环指针SKIIP83AC128IST1
  
  2、循环指针自加减
  
  2、继续或者退出循环体的条件判断
  
  被循环的程序主体必须位于初始循环指针之后,和循环指针自加减之前。

  比如:SKIIP83AC128IST1
  
  初始循环指针:X=0
  
  循环开始点M
  
  被循环的程序主体:-------
  SKIIP83AC128IST1
  循环指针自加减:X+1=X
  
  循环条件判断:X≤10 ,False:GO TO M;True:GO TO N
  
  循环退出点N

  如果把X作为间接寻址指针的内容,对循环指针的操作,就等于对寻址指针内容的动态而循环的修改了。

  【将DB100中的1-11数据字,传送到MW1-11中】

  L L#1 //初始化循环指针。这里循环指针就是我们要修改的寻址指针
  
  T MD 102
  SKIIP83AC128IST1
  M2: L MD 102
  
  T #COUNTER_D
  SKIIP83AC128IST1
  OPN DB100
  
  L DBW [MD 102]
  
  T MW [MD 102]

  L #COUNTER_DSKIIP83AC128IST1
  
  L L#2 // +2,是因为数据字的偏移基准是字节。
  
  +D
  SKIIP83AC128IST1
  T MD 102 //自加减循环指针,这是动态修改了寻址指针的关键
  
  L L#11 //循环次数=n-1。n=6。这是因为,首次进入循环是无条件的,
  
  但已事实上执行了一次操作。
  SKIIP83AC128IST1
  <=D
  
  JC M2

  SKIIP83AC128IST1
  
  有关于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次。
  
  L 1SKIIP83AC128IST1
  
  T MW 100
  
  L L#1
  
  T MD 102
  
  M1: L MW 100 SKIIP83AC128IST1
  
  T #COUNTER_W

  M2: 对数据字循环传送程序,同上例
  
  L #COUNTER_W
  
  L 1 //这里不是数据字的偏移,只是编号的简单递增,因此+1
  
  +I
  
  T MW 100
  
  L 9 //循环次数=n-1,n=10
  
  <=I
  SKIIP83AC128IST1
  JC M1

  通过示例分析,程序是让寻址指针在对要操作的数据对象范围内进行遍历来编程,完成这个任务。我们看到,这种对存储器间接寻址指针的遍历是基于字节和字的,如何对位进行遍历呢?

  这就是下一个帖子要分析的寄存器间接寻址的实例的内容了。

  L [MD100]

  LAR1SKIIP83AC128IST1

  与

  L MD100

  LAR1

  有什么区别?

  当将MD100以这种 [MD100] 形式表示时,你既要在对MD100赋值时考虑到所赋的值是否符合存储器间接寻址双字指针的规范,又要在使用这个寻址格式作为语句一部分时,是否符合语法的规范。

  在你给出**个例程的**句SKIIP83AC128IST1:L [MD100]上,我们看出它犯了后一个错误。
  
  存储器间接寻址指针,是作为指定的存储区域的确切数值单元来运用的。也就是说,指针不包含区域标识,它只是指明了一个数值。因此,要在 [MD100]前加上区域标识如: M、DB、I、Q、L等,还要加上存储区尺寸大小如:X、B、W、D等。SKIIP83AC128IST1在加存储区域和大小标识时,要考虑累加器加载指令L不能对位地址操作,因此,只能指定非位的地址。
 

联系方式
公司:上海曦龙电气设备有限公司销售部
状态:离线 发送信件
姓名:程先生(先生)
电话:021-51877382
手机:13918864473
传真:021-51877382
地区:上海-奉贤区
地址:上海奉贤南奉公路149号
QQ:937926739
阿里旺旺:ddccbb
商铺:http://m.ceoie.com/ddccbb/
去上海曦龙电气设备有限公司销售部怎么走?上图中的红点是上海曦龙电气设备有限公司销售部在奉贤区的具体位置标注,操作左上角地图工具可以放大缩小哦。
相关信息
[库存产品代理] 推荐供应
最新发布信息
点击分享到微信、朋友圈、QQ...
字母索引:  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z

首页 | 公司 | 求购 | 供应 | 商城 | 招商 | 展会 | 行情 | 品牌 | 产品

联系我们 | 刷新 | 返回顶部

©2004-2024  贸易商务资源网(ceoie.com)  版权所有