整数除算を実行するために、このシミュレーターで動作する LMC プログラムをコーディングすることができました。ただし、余りがある場合は無限ループに陥ります。
余りがあるかどうかに関係なく商を維持する方法を考えようとしていますが、行き詰まっています。
1 つのアイデアは、被除数を元の除数で増やし、DIVISOR
分岐前に負の値をチェックすることでした。ただ、「0なら分岐」か「正なら分岐」しかないので、反転論理を使うにはプログラムを一から書き直さなければならないでしょう。
正確ではない除算を処理できるバージョンを誰か提供してもらえますか?
// CANT HANDLE NOT-EXACT DIVISION
INP DIVIDEND
STA DIVIDEND
INP DIVISOR
STA DIVISOR
LOOP LDA DIVIDEND
BRZ END
SUB DIVISOR
STA DIVIDEND
LDA QUOTIENT
ADD ONE
STA QUOTIENT
BRA LOOP
END LDA QUOTIENT
OUT
SUB QUOTIENT
STA QUOTIENT
HLT
DIVIDEND DAT
DIVISOR DAT
QUOTIENT DAT 0
ONE DAT 1