我对汇编语言很陌生,所以我的第一个程序有点麻烦。除了汇编语言之外,我应该基本上重新创建下面的代码。有人能帮我修复错误,让我的程序正常工作吗?我想我已经接近了。
原始非汇编代码:
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行:错误:无效寻址模式
发布于 2013-10-07 05:54:09
我建议您保留M68000程序员参考手册以查找正确的使用说明的方法。
ASL没有#<data>,<ea>表单。它确实有一个<ea>表单,所以您可以执行三次ASL P。或者您可以将P移动到寄存器中,将其向左移动3位,并将结果放回P中。
同样,也没有<ea>,<ea>形式的SUB。一种解决方案是将Q移动到D-register中,并从P中减去该注册。
https://stackoverflow.com/questions/19216077
复制相似问题