1

我知道我需要重复添加,但循环有问题;我根本不理解他们。

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

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

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

我的项目的最终结果是一个程序,它将根据用户输入的内容将两个数字相乘。比如输入4和5,程序会执行4 + 4 + 4 + 4 + 4 = 20这个等式。我不知道如何构造一个循环来执行这个,我一直在发呆按照几天的说明。

4

2 回答 2

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

您可以在此处看到它正在运行:LMC 模拟器上的乘法

于 2016-04-20T01:50:50.043 回答
0

我以前做过这样的程序,如果内存服务,它应该使用相同的 ram 地址如下。该流程图也应该有助于解释这一点。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
于 2016-04-25T09:11:30.910 回答