展开查看
以下是引用emil128在2015-03-06 11:29:16的发言 >8楼:楼主程序的错误,已经被几位大侠们指出了。关键如“重新激活”大侠所说,address作为地址指针必须是32位.
其次32位指针用法是需要SLD 3或乘以8的。
这里恕在下开个玩笑,老学童大侠恐怕确实有“老眼昏花”的情况,楼主第一张图片很明显的,在DB中建立了一个以字符串为元素,256个元素的数组。因此完全可以模拟STATION 1~256。
楼主说要取的是指定“字符串的第8位”,是第8个字节吧,那么也就是字符串的第6个字符。因此地址加8也是必要的,不能省去。
最后那个apointer指针居然只提供一个DB号,实在是屈才了,估计是别处还有用吧。
1.确实+8这步不能省略,太对了
2.我重新定义了address0为Dword。然后,我的程序是这样写的:
****************************************************************************
注意我没有将指针address0没有做SLD 3 处理;
****************************************************************************
//--装载地址到地址寄存器中-----
L P##apointer
LAR1
//---读取DB块号码---------------------------------------
L W [AR1,P#0.0]
T #DB_NO //读取DB
//---得到偏移地址---------------------------------------
//L D [AR1,P#2.0]
//T #address
//-----根据工位号#StationNo计算对应toolname的地址---
//-----数据规律:dbb8,dbb136,dbb264,dbb392...公式(#StationNo-1)*128+8
L #StationNo
L 1
-I
ITD
L L#128
*D
L L#8
+D
T #address0
//----打开数据,将对应数据放入到MW08和#MZ中去
OPN DB [#DB_NO]
L DBB [#address0]
T MW 508
T #MZ
***************************************************************************
3.在看了amil128老师的这段话------------其次32位指针用法是需要SLD 3或乘以8。
我就在我原先的程序中加入了这段语句
****************************************************************************
更改后的程序,注意我是加入了这段SLD 3
****************************************************************************
//--装载地址到地址寄存器中-----
L P##apointer
LAR1
//---读取DB块号码---------------------------------------
L W [AR1,P#0.0]
T #DB_NO //读取DB
//---得到偏移地址---------------------------------------
//L D [AR1,P#2.0]
//T #address
//-----根据工位号#StationNo计算对应toolname的地址---
//-----数据规律:dbb8,dbb136,dbb264,dbb392...公式(#StationNo-1)*128+8
L #StationNo
L 1
-I
ITD
L L#128
*D
L L#8
+D
SLD 3
T #address0
//--打开数据,将对应数据放入到MW08和#MZ中去
OPN DB [#DB_NO]
L DBB [#address0]
T MW 508
T #MZ
*********************************************************************************************************
结果,大家看看我的截图,哈哈,我给db5.dbb8的赋值,神奇的33出现了。。。。。。。
******************************************************************************************************
谢谢各位老师的指点,特别是这句话“其次32位指针用法是需要SLD 3或乘以8”,刚刚接触指针,请大家原谅我的激动!!!
