表达式:z = a + b * b-(36 /(b * b)/(1+(25 /(b * b))) 我不知道我应该使用哪些数据指令以及我应该以什么顺序编写代码。
答案 0 :(得分:2)
对于Z80 CPU,C = A + B:
ld a,A
ld b,B
add a,b ; a = C
对于68000 CPU,C = A * B:
MOVE.W D0,A
MOVE.W D1,B
MULS.W D1,D0 ; D0 = C
等等...检查你的目标CPU指令指南,看看它直接实现了什么算术运算,可以使用哪些操作数类型,你可用的寄存器及其数据类型......
看起来你不必编写通用数学表达式解析器(这很快就会变得棘手,一旦在高中我们在编程竞赛中完成了编写的任务,起初我们就像“什么,一个单个任务5小时,我将在30分钟完成“......然后在5小时后,没有人的代码通过完整的测试套件,最好的大约80%是正确的。”
因此,如果只计算此特定表达式,您可以手动“解析”它,将其简化为仅涉及单个操作和一个中间子结果的特定步骤。然后用你的指示一步一步地写出来,就像你手工计算一样(同时确保你符合数学表达式计算规则,你知道哪些操作优先于其他操作?括号覆盖任何东西,然后mul / div首先,添加/后来,从左到右,但这是基础学校数学的东西,所以除非你是10y.o.,你不应该问这个。)
如果您的CPU没有除法或乘法指令,只需通过减法/加法循环实现它。这是非常蹩脚的表现明智,但如果你不得不问这个问题,那么人们不能指望你甚至会理解更高级的算法。