3

現在、マイクロアセンブリ言語 (MAL) を使用しており、Mic1mmv シミュレーターを使用してテストしています。2つの数を乗算するプログラムを作成する方法を理解しようとしていますが、その方法を理解するのに苦労しています。

足し算と引き算の MAL コードは次のとおりです。

iadd1   MAR = SP = SP - 1; rd       // Read in next-to-top word on stack
iadd2   H = TOS                     // H = top of stack
iadd3   MDR = TOS = MDR + H; wr; goto Main1 // Add top two words; write to top of stack

isub1   MAR = SP = SP - 1; rd       // Read in next-to-top word on stack
isub2   H = TOS                    // H = top of stack
isub3   MDR = TOS = MDR - H; wr; goto Main1 // Do subtraction; write to top of stack

例として、3 x 4 を実行したいとします。そうする場合の私の考えは、3 を取り、別の 3 を追加して 4 回 (3+3+3+3) することですが、方法はまだわかりません。 if/else/loop またはカウントダウンを作成して、それらが合計された回数を追跡できます。

誰かがこれを解決する方法を知っているか、これに関するヒントがあれば、本当に感謝しています。

4

1 に答える 1