发表于:2003-12-27 11:04:00
48楼
不好意思,有些疏忽了,动作顺序有错,改正后如下:
ORGANIZATION_BLOCK MAIN:OB1
TITLE=河内塔程序
BEGIN
Network 1
LD SM0.1
MOVD &VB100, AC1
MOVD &VB100, AC3
MOVD AC1, AC2
MOVB 6, *AC2 //盘子总数
INCD AC2
MOVB 1, *AC2 //启始柱号
INCD AC2
MOVB 2, *AC2 //目标柱号
INCD AC2
MOVB 3, *AC2 //中间柱号
INCD AC2
+D +4, AC1
Network 2
LDD> AC1, AC3
MOVD AC1, AC2
MOVD *AC1, MD0
-D +4, AC1
Network 3
LDB> MB0, 0
AB< MB0, 255
DECB MB0
MOVD AC1, AC2
MOVB MB0, *AC2
INCD AC2
MOVB MB3, *AC2
INCD AC2
MOVB MB2, *AC2
INCD AC2
MOVB MB1, *AC2
INCD AC2
+D +4, AC1
MOVD AC1, AC2
MOVB 255, *AC2
INCD AC2
MOVB MB1, *AC2
INCD AC2
MOVB MB2, *AC2
INCD AC2
MOVB 0, *AC2
INCD AC2
+D +4, AC1
MOVD AC1, AC2
MOVB MB0, *AC2
INCD AC2
MOVB MB1, *AC2
INCD AC2
MOVB MB3, *AC2
INCD AC2
MOVB MB2, *AC2
INCD AC2
+D +4, AC1
INCB MB0
Network 4
LDB= MB0, 255
CALL SBR0, MB1, MB2
说明;SBR0,MB1,MB2 是将MB1指定的柱子上的一个盘子移到MB2上去的子程序,也就是最终控制动作的部分.