山东泰安市西门子工控机(授权)总代理 西门子IPC一级经销商
列举,我们有了初步结论:AR中内容是8开头,那么就一定是区域间寻址;要DB区中进行寻址,只需8后面跟上一个40。84000000-840FFFFF指明了要寻址范围是:
DB区0.0——65535.7。
例如:当AR=840000D4(hex)=1000 0100 0000 0000 0000 0000 11010100(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这个指针存入ACC1,此时ACC1内容=82000008(hex)=Q1.0
★ L P#1.0 //把1.0这个指针存入ACC1,此时ACC1内容=00000008(hex)=1.0
● L P#MB100 //错误!必须byte.bit结构给定指针。
● L P#M100.0//把M100.0这个指针存入ACC1,此时ACC1内容=83000320(hex)=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,以确定Zui终寻址方式。
寄存器寻址中,P#XXX作为寄存器AR指针偏移量,用来和AR指针进行相加运算,运算结果,才是指令真正要操作确切址数值单元!
是区域内区域间寻址,址所存储区域都有了指定,,这里P#XXX只能指定纯粹数值,如上面例子中★。