如何用Little Man Computer编写乘法算法?

时间:2016-03-14 15:10:10

标签: multiplication addition little-man-computer

我知道我需要重复添加,但我遇到了循环问题;我根本不理解它们。

这是一个将数字乘以2而没有循环的程序。

INP
STA num1
LDA num1
ADD num1
STA num1
OUT
HLT
num1 DAT

我知道我需要添加一个循环,但我只是输了。我在哪里放置循环?如何使用LMC的分支命令构建循环?

我的项目的最终结果是一个程序,它将两个数字相乘,具体取决于用户输入的内容。例如,如果输入4和5,程序将执行等式4 + 4 + 4 + 4 + 4 = 20.我不知道如何构造一个循环来实现它,我已经茫然地看着几天的指示。

2 个答案:

答案 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