0

我正在学习 LMC,但我无法在 LMC 中找到 100 之前的奇数之和,例如 1+3+5+7... 等等

我确实编写了将两个数字相加的代码

  INP //here I wil input 1
  STA 99
  INP // here I will input 2
  ADD 99
  OUT
  HLT

我不知道如何遍历它,所以我可以得到奇数的总和。如果有人可以请帮助我?

4

1 回答 1

0

如果您需要输出 1 到 100 之间的奇数,则没有理由要求用户输入:您已经拥有解决问题的所有要素,因此无需询问任何内容。

使用 LMC,您通常需要定义一些常量数据,例如 ... 数字 1。对于本练习,数字 2 也可以方便地准备。所以为这两个号码保留两个“邮箱”(使用DAT)。

下面是程序如何遍历 1 到 99 之间的奇数:

LOOP      LDA CURRENT  // start with one
          OUT          // output less than 100
          ADD TWO
          STA CURRENT
          SUB HUNDRED  // compare with 100
          BRP EXIT     // halt when above
          BRA LOOP     // and repeat
     EXIT HLT
  CURRENT DAT 1
      TWO DAT 2
  HUNDRED DAT 100

<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.7/lmc.js"></script>

但是,计算这些数字的总和将超出 LMC 的能力。1+3+5+..+99的总和是 2500,而 LMC 只能处理 999 以内的数字,所以这是行不通的。

于 2019-11-24T20:37:55.363 回答