0

我是汇编语言的新手,所以我的第一个程序有点麻烦。我应该基本上重新创建以下代码,显然汇编语言除外。谁能帮我修复错误并帮助我让我的程序正常工作?我想我很接近。

原始非汇编代码:

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 行:错误:无效的寻址模式

4

1 回答 1

1

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

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

同样,也没有<ea>,<ea>. SUB一种解决方案是将 移入Q-D寄存器,然后从 中减去该寄存器P

于 2013-10-07T05:54:09.707 回答