发布于 2013-07-30 21:26:15
18楼
楼主:你上面的测试代码,我没有发现语法、或者指令上的错误。你进步很快······我觉得代码可以再优化一下:
1、整数转换成双整数时,可以不存储,只是一个中间过程值;
2、紧接着将双整数转换成浮点数,然后再存储到目标数数据块中。
将你的代码稍微修改了一下,你可以参考一下:
LAR1 P#0.0 //初始化地址寄存器1
LAR2 P#0.0 //初始化地址寄存器2
L 100 //循环次数(数据个数)
NEXT: T LW 20 //存储当前的循环次数
OPN DB 1 //打开DB1 (源数据块)
L DBW [AR1,P#0.0] //装载当前DBW地址里面的整数到ACCU1
ITD //将当前ACCU1里面的整数转换成双整数并存储在ACCU1里面
DTR //将当前ACCU1里面的双整数转换成浮点数并存储在ACCU1里面
OPN DB 2 //打开DB2 (目标数据块)
T DBD [AR2,P#0.0] //将当前ACCU1地址里面的数据写到目标数据块对应的地址里面
+AR1 P#2.0 //地址寄存器1的内容加P#2.0(AR1地址递增一个字)
+AR2 P#4.0 //地址寄存器2的内容加P#4.0(AR2地址递增一个双字)
L LW 20 //装载当前循环次数
LOOP NEXT //循环次数减一,跳转到NEXT标签
//当循环次数减至0时,离开循环,往下执行
上面的代码实现的功能是:将DB1里面的从DBW0开始的连续100个整数,转换成浮点数后,依次存入DB2里面从DBD0开始的地址里面。
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”