EASy68K汇编 - 第一个程序错误

时间:2013-10-07 02:01:36

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

1 个答案:

答案 0 :(得分:1)

我建议您保留M68000 Programmer's Reference Manual以查找使用说明的正确方法。

ASL没有#<data>,<ea>表单。 的格式为<ea>,因此您可以执行ASL P三次。或者您可以将P移动到寄存器中,将其向左移3位,然后将结果放回P

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