发布于 2010-12-06 21:31:59
7楼
首先,感谢各位大师的不吝赐教,特别是六楼的朋友,虽然给出的程序不可用,但是却给了我很好的提醒,即用寄存器间接寻址的方法实现,现在,我又将程序整理了一下,没有任何错误,下载到仿真之后cpu不停机,也无故障。(天大的进步啊),只是还不能实现,具体讲就是在程序中监控时,扫描进行到
+AR1 P#4.0时就下不去了,不知是什么原因,先将程序奉上,望高手在本人编程思路方向上予以指点,先谢了!
L 4
T LW 42 //内循环循环次数预置
T LW 44 //用于内循环循环次数修改
L 4
T LW 40 //外循环循环次数预置
L P#0.0
LAR1 //内循环寻址地址初始化
L P#0.0
LAR2 //外循环寻址地址初始化
OPN "RUNTIME_DEVICE"
AB: L DBD [AR2,P#0.0]
L DBD [AR1,P#4.0]
<=D
JC BC //如果a1>a2,彼此位置不变,否则互换位置
T DBD [AR2,P#0.0]
TAK
T DBD [AR1,P#4.0]
BC: L LW 42 //内循环次数修改
DEC 1
T LW 42 //保存修改后内循环次数
L 1
==I //第一轮比较完成则跳转
JC CD
+AR1 P#4.0
JU AB
CD: L LW 44 //每一轮比较完成后,修改内循环循环数
DEC 1
T LW 44 //保存修改后内循环次数
T LW 42 //保存修改后循环次数
L LW 40 //外循环
DEC 1
T LW 40 //保存修改后外循环次数
L 1
==I
JC A2
JU A3
A2: +AR2 P#4.0
JU AB
A3: NOP 0