发布于 2013-07-29 19:35:11
10楼
楼主:当时写代码时没有测试,现在又仔细看了一下,发现OPN DB1语句的位置确实放的不对,LOOP循环是被执行了,在执行到第二个循环时,DB1没有被再次打开,造成了你上述的现象,表示抱歉!OPN DB1位置修改了一下,测试过了,应该可以了。
LAR1 P#0.0 //初始化地址寄存器1
L 100 //循环次数(数据个数)
NEXT: T LW 20 //存储当前的循环次数
OPN DB 1 //打开DB1 (源数据块)
L DBD [AR1,P#0.0] //装载当前DBD地址里面的数据到ACCU1
DTR //将当前ACCU1里面的双整数转换成浮点数并存储在ACCU1里面
OPN DB 2 //打开DB2 (目标数据块)
T DBD [AR1,P#0.0] //将当前ACCU1地址里面的数据写到目标数据块对应的地址里面
+AR1 P#4.0 //地址寄存器1的内容加P#4.0(AR1地址递增一个双字)
L LW 20 //装载当前循环次数
LOOP NEXT //循环次数减一,跳转到NEXT标签
//当循环次数减至0时,离开循环,往下执行
再提供一种思路给你参考一下:或者干脆把DB1建大一些,把转换好的浮点数存储的地址偏移400个字节,也保存在DB1里面,这样在一个数据块里面操作会更简单些。
OPN DB 1 //打开DB1 (源数据块)
LAR1 P#0.0 //初始化地址寄存器1
L 100 //循环次数(数据个数)
NEXT: T LW 20 //存储当前的循环次数
L DBD [AR1,P#0.0] //装载当前DBD地址里面的数据到ACCU1
DTR //将当前ACCU1里面的双整数转换成浮点数并存储在ACCU1里面
T DBD [AR1,P#400.0] //将当前ACCU1地址里面的数据写到目标数据块对应的地址里面
+AR1 P#4.0 //地址寄存器1的内容加P#4.0(AR1地址递增一个双字)
L LW 20 //装载当前循环次数
LOOP NEXT //循环次数减一,跳转到NEXT标签
//当循环次数减至0时,离开循环,往下执行
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”