EASy68K 汇编 - 第一个程序错误



我是汇编语言的新手,所以我的第一个程序遇到了一点麻烦。我应该基本上重新创建以下代码,显然除了汇编语言。任何人都可以帮助我修复错误并帮助我使程序正常工作吗?我想我离得很近。

原始非汇编代码:

Q = 7;
P = 15;  // also test on P = 14 and P = 6
if (P > 12)
  P = 8 * P + 4;   // Requirement: use ASL for multiplied by 8
else
  P = P - Q;
print P;

这是我到目前为止所拥有的,但我遇到了错误。我将在底部发布错误。

START   ORG     $1000   //Program starts at loc $1000
IF      CMP     #12,P   //Is P > 12?
        BLE     ENDIF   //If P < 12, go to ENDIF
        ASL     #3,P    //Shift left 3 times (Multiply P * 8)
        ADD     #4,P    //P + 4 
ENDIF   SUB     Q,P     //P - Q
* Data section
    ORG $2000    //Data starts at loc 2000
P   DC.W    15  //int P = 15;
Q   DC.W    7   //int Q = 7;
    END START

第 4 行:错误:寻址模式无效第 7 行:错误:寻址模式无效

我建议您随身携带 M68000 程序员参考手册,以查找使用说明的正确方法。

ASL没有#<data>,<ea>形式。它确实有一个<ea>形式,所以你可以做三次ASL P。或者,您可以将P移动到寄存器中,将其向左移动 3 位,然后将结果放回 P 中。

同样,也没有<ea>,<ea>形式的SUB。一种解决方案是将Q移动到D寄存器中,并从P中减去该寄存器。

相关内容

最新更新