Little Man Компьютерное целочисленное деление с остатком - PullRequest
0 голосов
/ 13 апреля 2019

Мне удалось закодировать программу 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
...