【问题标题】:Using LMC to solve algebraic equations使用 LMC 求解代数方程
【发布时间】:2019-11-28 05:55:27
【问题描述】:

我一直在为以下内容编写程序:

   a2 + (b x c)。

我的循环似乎有问题,但我无法解决。

我可以得到一个2 和一个乘法,但是当我尝试将两者结合时,它只是一遍又一遍地要求输入。

相乘:

        INP
        STA b
    INP STA c
   LOOP LDA c 
        BRZ ENDTHIS
        SUB ONE1
        STA c
        LDA ANS1
        ADD b
        STA ANS1
        BRA LOOP
ENDTHIS LDA ANS1 
        OUT
        SUB ANS1 
        STA ANS1
        HLT 
      b DAT
      c DAT 
   ONE1 DAT 1 
   ANS1 DAT 0

正方形:

        INP
        STA a
        LDA a
        STA y
   LOOP LDA y
        BRZ END
        SUB ONE2
        STA y 
        LDA ANS2
        ADD a
        STA ANS2
        BRA LOOP
    END LDA ANS2 
        OUT 
        SUB ANS2
        STA ANS2
        HLT 
      a DAT
      y DAT 
   ONE2 DAT 1
   ANS2 DAT 0 

但不能让他们一起工作

【问题讨论】:

  • 第一个问题:你使用哪种编程语言?第二个问题:到目前为止,您究竟尝试了什么?
  • LMC 使用 Peter Higginson 模拟器
  • 乘 INP STA b INP STA c LOOP LDA c BRZ ENDTHIS SUB ONE1 STA c LDA ANS1 ADD b STA ANS1 BRA LOOP ENDTHIS LDA ANS1 OUT SUB ANS1 STA ANS1 HLT b DAT c DAT ONE1 DAT 1 ANS1 DAT 0
  • 方形 INP STA a LDA a STA y LOOP LDA y BRZ END SUB ONE2 STA y LDA ANS2 添加 STA ANS2 BRA LOOP END LDA ANS2 OUT SUB ANS2 STA ANS2 HLT a DAT y DAT ONE2 DAT 1 ANS2 DAT 0
  • 但不能让他们一起工作

标签: little-man-computer


【解决方案1】:

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

将第一个输入传递给bc,并对结果执行乘法器部分。 将计数器递减,如果还不是零,则在 bc 中获取另外两个输入,并再次执行乘法器代码。

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

#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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多