使用LMC求解代数方程

时间:2019-03-01 14:00:31

标签: little-man-computer

我在为以下程序编写程序时陷入困境,我们将不胜感激。 a_squared +(b x c)。我的循环似乎有问题,但我无法解决。 可以执行a_squared和乘法运算,但是当我尝试将2合并时,它总是不断地要求输入。

1 个答案:

答案 0 :(得分:0)

您可以使用从2向下计数到0的计数器。

将第一个输入传递给 b c ,并对结果执行乘数部分。 递减计数器,如果还不为零,则在 b c 中获取其他两个输入,然后再次执行乘法器代码。

如果计数器为零,则表示您已处理所有输入并可以输出结果。

#input: 3 5 2
        INP   // a
        STA b // pass (a, a) to multiplier
        STA c

// add (b x c) to result
   loop LDA c 
   exit BRZ endloop
        SUB one 
        STA c
        LDA result
        ADD b 
        STA result 
        BRA loop

// decrement counter from 2 to 1 to 0
endloop LDA counter
        SUB one
        STA counter
        BRZ finish
         
        INP   // b
        STA b
        INP   // c
        STA c
        BRA loop // add (b x c) to result

 finish LDA result
        OUT
        HLT

      a DAT
      b DAT 
      c DAT 
    one DAT 1
counter DAT 2
 result DAT 0
<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.7/lmc.js"></script>