恭喜,你发布的帖子
发布于 2016-11-12 16:39:03
7楼
FC1 内程序:
L 0
T #evenposi //位置赋初值
T #oddposi
L P##getw //IN参数any类型 取数
LAR1
L W [AR1,P#4.0]
T #db_no //取出DB号
L W [AR1,P#2.0]
T #length //取出长度
L D [AR1,P#6.0]
LAR1
next: OPN DB [#db_no]
L W [AR1,P#0.0]
T #ini_w //得到数据区第一个字
......................................................................
L #ini_w
L W#16#1
AW
L W#16#0
==I
JCN a00 //逻辑结果为0即奇数时跳转
L #ini_w
T #even //偶数放even
...........................................................................
L P##even_db
LAR2
L W [AR2,P#4.0] //取出DB号
T #evendb_no
L D [AR2,P#6.0] //数据地址
LAR2
L #evenposi //填放的位置,数据字
SLD 3
+AR2
OPN DB [#evendb_no] //打开DB块
L #even //存放偶数
T W [AR2,P#0.0]
L #evenposi
L 2
+I
T #evenposi //每次后移2字节
+AR1 P#2.0
JU d00
..................................................................................
a00: L #ini_w
T #odd //是奇数转放odd
L P##odd_db //out参数any类型
LAR2
L W [AR2,P#4.0]
T #odddb_no //取出DB号
L D [AR2,P#6.0]
LAR2 //ar2存放首地址
L #oddposi //首字左移3位作地址
SLD 3
+AR2
OPN DB [#odddb_no] //打开DB块
L #odd
T W [AR2,P#0.0] //填放奇数
L #oddposi
L 2
+I
T #oddposi
+AR1 P#2.0
d00: L #length
LOOP next
本程序仿真能得出正确值,我是先在DB1中赋1,2....到20,共20个数;DB2得到:2,4....20共10个数;DB3得到1,3...19共10个数。能得到正确答案,可是CPU却报错停止。程序开头的两句赋初值是后来加上的,加不加对程序好像影响不大,都能得出正确结果,就是CPU报错停止;找不到错在哪儿,百思不得其解,望明白的人点拨一下,谢谢
......................................................................................
请填写推广理由:
分享
只看
楼主