我知道我需要重复添加,但我遇到了循环问题;我根本不理解它们。
这是一个将数字乘以2而没有循环的程序。
INP
STA num1
LDA num1
ADD num1
STA num1
OUT
HLT
num1 DAT
我知道我需要添加一个循环,但我只是输了。我在哪里放置循环?如何使用LMC的分支命令构建循环?
我的项目的最终结果是一个程序,它将两个数字相乘,具体取决于用户输入的内容。例如,如果输入4和5,程序将执行等式4 + 4 + 4 + 4 + 4 = 20.我不知道如何构造一个循环来实现它,我已经茫然地看着几天的指示。
答案 0 :(得分:1)
用语言说:
Read input into R0 and R1.
Set RESULT to 0
While R1 > 0 {
Subtract 1 from R1
Add R0 to RESULT
}
Output RESULT
在LMC汇编程序中:
INP
STA R0
INP
STA R1
LOOP LDA R1
BRZ END
SUB ONE
STA R1
LDA RES
ADD R0
STA RES
BRA LOOP
END LDA RES
OUT
// Temporary storage
R1 DAT
R0 DAT
RES DAT
// Constants
ONE DAT 1
您可以在此处看到它:multiplication on LMC emulator
答案 1 :(得分:0)
I have made a program like this before, it should go as follows with the same ram addresses if memory serves. This flowchart should also help explain this. http://creately.com/diagram/example/i5z9v65u1/Multiplication%20LMC
INP
STA X
INP
STA Y
LOOP LDA Y
BRZ END
LDA ANSWER
ADD X
STA ANSWER
LDA Y
SUB ONE
STA Y
BRA LOOP
END LDA ANSWER
OUT
HLT
ONE DAT 1
ANSWER DAT 0
X DAT 0
Y DAT 0