Программа LMC(маленький человечек) для умножения двух отрицательных чисел
Можете ли вы помочь мне написать программу lmc для умножения 2 негативов (-x)*(-y) = xy?
Например, если вы введете -5 и -6, это должно дать вам 30.
Я сделал для x*y=xy
INP
STA FIRST
INP
STA SECOND
LOOP LDA COUNT
ADD ONE
STA COUNT
LDA TOTAL
ADD FIRST
STA TOTAL
LDA SECOND
SUB COUNT
BRZ ENDLOOP
BRA LOOP
ENDLOOP LDA TOTAL
OUT
HLT
ONE DAT 001
COUNT DAT
TOTAL DAT
FIRST DAT
SECOND DAT
0 ответов
Вы всегда можете просто сделать свои вклады положительными, прежде чем умножать их. Это, конечно, требует, чтобы пользователь вводил только отрицательные числа или только положительные числа (это не будет работать с одним отрицательным и одним положительным вводом).
В коде я добавил переменную ZERO, которая равна 0. Затем я вычитаю ввод пользователя из нуля, и мы останемся с положительной версией. Затем вы можете использовать написанный код для решения расчета.
INP
BRP JUMP
STA FIRST
LDA ZERO
SUB FIRST
OUT
JUMP STA FIRST
INP
BRP JUMP2
STA SECOND
LDA ZERO
SUB SECOND
OUT
JUMP2 STA SECOND
LOOP LDA COUNT
ADD ONE
STA COUNT
LDA TOTAL
ADD FIRST
STA TOTAL
LDA SECOND
SUB COUNT
BRZ ENDLOOP
BRA LOOP
ENDLOOP LDA TOTAL
OUT
HLT
ONE DAT 001
COUNT DAT
TOTAL DAT
FIRST DAT
SECOND DAT