現在、マイクロアセンブリ言語 (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 またはカウントダウンを作成して、それらが合計された回数を追跡できます。
誰かがこれを解決する方法を知っているか、これに関するヒントがあれば、本当に感謝しています。