我是汇编语言的新手,所以我的第一个程序遇到了一些麻烦。我应该基本上重新创建以下代码,显然除了汇编语言。任何人都可以帮我修复错误并帮助我让我的程序正常工作吗?我想我很亲密。
原始非汇编代码:
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行:错误:无效的寻址模式
答案 0 :(得分:1)
我建议您保留M68000 Programmer's Reference Manual以查找使用说明的正确方法。
ASL
没有#<data>,<ea>
表单。 的格式为<ea>
,因此您可以执行ASL P
三次。或者您可以将P
移动到寄存器中,将其向左移3位,然后将结果放回P
。
同样,<ea>,<ea>
没有SUB
形式。一种解决方案是将Q
移到D
- 寄存器中,并从P
中减去该寄存器。