2017-03-07 8 views
-4

式:z = a + b * b-(36 /(b * b)/(1+(25 /(b * b))) データディレクティブIは使用すべきであり、どのような順序で私は、コードを書く必要assemlbyで特定の算術式を計算するコード

+0

ルーマニア語コースですか? –

+0

http://digital.ubm.ro/?download=2016aclab2.pdf –

答えて

2

C = A + BをZ80のCPUのために:。

MOVE.W D0,A 
MOVE.W D1,B 
MULS.W D1,D0 ; D0 = C 

ld a,A 
ld b,B 
add a,b ; a = C 

Cは68000 CPUのため* Bを=

など...ターゲットCPUの命令ガイドで算術演算子を確認してくださいあなたが利用可能なレジスタとデータ型を直接実装しています...

普遍的な数式表現パーサーを書く必要はありません(これは手間がかかります非常に速く、高校時代には、プログラミング競技では、正確にそれを書く作業がありました。最初は「5時間の単一タスク、私は30分で完了します」というようなものでした。完全なテストスイートに合格したコード、最高で約80%が正しい)。

したがって、この特定の式のみを計算する必要がある場合は、手作業で「解析」して、単一操作と中間結果の1つを含む特定の手順に簡略化できます。あなたは手作業で計算するように、あなたの指示でステップごとに書くだけです(また、数式表現の計算ルールに従っているかどうかを確認してください)。括弧は何よりも優先され、次にmul/divが最初に後で左から右に追加/追加しますが、これはベースの学校の数学のものなので、あなたが10y.oでない限り、これを尋ねるべきではありません)。

CPUに除算命令や乗算命令がない場合は、単純にループ内の減算/加算命令で実装してください。それは非常に不自由なパフォーマンスですが、あなたがこの質問をしなければならないなら、あなたはこれらのより高度なアルゴリズムを理解することさえ期待できません。

+0

うわー、ライオン! :) – Tommylee2k