| 作者 | 主题 |
|---|---|
|
loveheyunbo 游士 经验值:274 发帖数:62 精华帖:0 |
楼主
主题:pointer指针读取db块中的字符,并输出。请问这个程序有什么问题,一直没有输出
*************************************************
程序目的: 根据StationNo找到DB5中它对应的字符串,前提:DB5中已经建立string[62],然后找到该字符串的第8位,把他输出到MZ中。但是,一直没有想要的输出 ************************************************* 1定义变量:输入:StationNo 类型 INT;apointer 类型pointer指针 输出:MZ 类型 word TEMP:DB_NO 类型 INT;address 类型 INT; 2.程序和注释 ******************************************************************************* //--装载地址到地址寄存器中----- L P##apointer LAR1 //---读取DB块号码--------------------------------------- L W [AR1,P#0.0] T #DB_NO //读取DB //-----根据工位号#StationNo计算对应toolname的地址--- //-----数据规律:dbb8,dbb136,dbb264,dbb392...公式(#StationNo-1)*128+8 L #StationNo L 1 -I L 128 *I L 8 +I T #address //----打开数据,将对应数据放入到MW08和#MZ中去 OPN DB [#DB_NO] L DBB [#address] T MW 508 T #MZ ********************************************************* 开始模拟,为了简便,将StationNo设置成1,但是结果一直没有输出! 大家帮我检查检查。 ********************************************************* ![]() ![]() ![]() |
|
老学童 奇侠 经验值:8218 发帖数:765 精华帖:32 |
7楼
主题:回复:pointer指针读取db块中的字符,并输出。请问这个程序有什么问题,一直没有输出
我猜楼主是对现有的程序不太理解,所有想通过自己建立一个数据块,来仿真一下!
1. 可是从楼主发的图片上看,仅仅建立了一个含有62个字符的串,怎么能仿真出“dbb8,dbb136,dbb264,dbb392...” 2. 这段程序的含义应该是这样的: 1) 每个站(Station)用62个字符来表示其所含Tool Name,而这个数据块(DB5)应该包含多个站(Station)的数据段(均用62个字符来表示其所含Tool Name),通过输入参数#StationNo计算每个数据段的首地址。 2)楼主发的图片很容易让人误认为你要仿真数据是从地址0(P#0.0)开始,其实,原先的DB前面有8个字节的其它数据,那么既然楼主要仿真,就必须在第一个字符串开始前面插入8个空字节(或4个INT或4个WORD或2个DWORD),这也是为什么我在1楼改动后的程序中没有加上这8个字节的原因(可不是老学童老眼昏花了,呵呵,开车连路牌都看不清还说不花),将原先程序中‘+8’改成‘x 8’(相当于LJCLWYF坛友在2楼‘SLD 3’) 3) 既然要仿真,就必须符合实际情况,即建立多个数据段,否则,充其量只能仿真#StationNo=1。 4) 缺少对#apointer指针的进一步计算,#apointer应该是用于进一步决定读取哪个或那些字符,这个部分数据在#apointer的第2~5字节中(0字节和1字节是#DB_NO,在这里是没有什么意义,这也是为什么rx9934坛友为什么会提出质疑的原因吧)。 在 ... L W [AR1,P#0.0] T #DB_NO //读取DB 之后应该是: L D[AR1,P#2.0] T #address //字符串中的偏移量, 正如楼上重新激活坛友所说#address的数据类型不对,应该是DW类型 对于楼主的专研精神要给个赞!
人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。
|