回复:知识普及---step7编程之地址概念详解

roger wang

  • 帖子

    146
  • 精华

    0
  • 被关注

    4

论坛等级:侠客

注册时间:2008-11-12

普通 普通 如何晋级?

发布于 2011-05-26 12:56:09

2楼

个区别,单字指针的另外一个限制就是,它只能对T、C、DB、FC和FB进行寻址,通俗地说,单字指针只可以用来指代这些存储区域的编号。  

  相对于单字指针,双字指针就没有这样的限制,它不仅可以对位地址进行寻址,还可以对BYTE、WORD、DWORD寻址,并且没有区域的限制。不过,有得必有失,在对非位的区域进行寻址时,必须确保其0-2bit为全0!

  总结一下:  

  单字指针的存储器间接寻址只能用在地址标识符是非位的场合;双字指针由于有位格式存在,所以对地址标识符没有限制。也正是由于双字指针是一个具有位的指针,因此,当对字节、字或者双字存储区地址进行寻址时,必须确保双字指针的内容是8或者8的倍数。

  现在,我们来分析一下上述例子中的A I[MD104] 为什么最后是对I1.2进行与逻辑操作。  

  通过L L#+10 ,我们知道存放在MD104中的值应该是:  

  MD104:0000 0000 0000 0000 0000 0000 0000 1010 

  当作为双字指针时,就应该按照3-18bit指定byte,0-2bit指定bit来确定最终指令要操作的地址,因此:  

  0000 0000 0000 0000 0000 0000 0000 1010 = 1.2    

  【地址寄存器间接寻址】  

  在先前所说的存储器间接寻址中,间接指针用M、DB、DI和L直接指定,就是说,指针指向的存储区内容就是指令要执行的确切地址数值单元。但在寄存器间接寻址中,指令要执行的确切地址数值单元,并非寄存器指向的存储区内容,也就是说,寄存器本身也是间接的指向真正的地址数值单元。从寄存器到得出真正的地址数值单元,西门子提供了两种途径:

  1、区域内寄存器间接寻址 

  2、区域间寄存器间接寻址  

  地址寄存器间接寻址的一般格式是: 

  〖地址标识符〗〖寄存器,P#byte.bit〗,比如:DIX[AR1,P#1.5] 或 M[AR1,P#0.0] 。 

  〖寄存器,P#byte.bit〗统称为:寄存器寻址指针,而〖地址标识符〗在上帖中谈过,它包含〖存储区符〗+〖存储区尺寸符〗。但在这里,情况有所变化。比较一下刚才的例子:

  DIX [AR1,P#1.5]   

好好学习
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54663条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。