如何在Little Man Computer中为Fibonacci序列创建循环?

时间:2016-05-05 10:48:05

标签: loops numbers sequence little-man-computer

        INP
        STA numOne
        OUT
        INP
        STA numTwo
        OUT
        LDA numOne
        ADD numTwo
        STA numThree
        OUT
        LDA numTwo
        ADD numThree
        STA numFour
        OUT
        LDA numThree
        ADD numFour
        STA numFive
        OUT
        LDA numFour
        ADD numFive
        STA numSix
        OUT
        LDA numFive
        ADD numSix
        STA numSeven
        OUT
        LDA numSix
        ADD numSeven
        STA numEight
    OUT
        LDA numSeven
        ADD numEight
        STA numNine
    OUT
        LDA numEight
        ADD numNine
        STA numTen
        OUT
numOne  dat
numTwo  dat
numThree dat
numFour dat
numFive dat
numSix  dat
numSeven dat
numEight dat
numNine dat
numTen dat

我在Little Man Computer中使用以下代码输出前10个Fibonacci序列项,但是我需要做一个循环,这将让我控制我想要输出的迭代量。

根据我的理解,我猜我必须输入3个数字 - 其中两个是第一个Fibonacci序列术语,第三个是我想要输出的迭代量。但是我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

斐波那契系列可以通过以下方式在LMC中打印:

      INP
      STO   n     #number of terms
      LDA   one
      OUT

loop  LDA   fib     #THE MAIN LOOP THAT PRINTS FIBONACCI NUMBERS
      STO   temp2
      ADD   temp
      STO   fib
      LDA   temp2
      STO   temp
      BR    check

check LDA   n         #LOOP TO KEEP A TRACK OF NUMBER OF TERMS
      BRZ   halt
      SUB   one
      STO   n
      BRZ   halt
      LDA   fib
      OUT
      BR    loop

halt  HLT        
n     DAT   000
fib   DAT   001
temp  DAT   001
temp2 DAT   000
one   DAT   001

说明:程序首先要求输入n,即要打印的术语数。然后循环开始运行 - 它将打印变量fib的默认值,该值已设置为1. fib的值为存储在另一个变量temp2中,变量temp用于记录fib的先前值,以便正确添加数字并获得正确的序列。随着术语数量的增加,循环控制fib,temp和temp2的值。

程序然后检查是否已打印所需的术语数并减少n的值。如果n = 0,则表示已达到所需的术语数,程序停止。如果n不为零,则循环继续直到n = 0。

**虽然我可能会使用更有效的方法,但是这个方法可以正常工作并使用相当少数量的邮箱,这使得它非常有效。