Мне удалось закодировать программу LMC, которая работает на этом симуляторе для выполнения целочисленного деления.Однако, если есть остаток, он входит в бесконечный цикл.
Я пытаюсь придумать способ сохранить частное независимо от того, есть ли остаток, но я застрял.
Одна идея состояла в том, чтобы увеличить дивиденды на оригинальный делитель, а затем проверить наличие отрицательного значения для DIVISOR
перед разветвлением.Однако есть только «Разветвление, если ноль» или «Разветвление, если положительное», поэтому мне, вероятно, придется переписать программу с нуля, чтобы использовать инвертированную логику.
Может кто-нибудь предоставить версию, котораяможно обработать неточное деление?
// 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