如何编码Fibonacci序列LMC?

时间:2016-01-28 13:03:58

标签: encoding sequence fibonacci little-man-computer

我想知道是否有可能在" Little Man Computer"中创建一个创建Fibonacci序列的程序。

程序将在信箱中输出序列的各个数字。唯一的输入是询问用户它希望序列有多高。例如,如果我输入" 20"它只能达到13号。

非常感谢任何帮助,

艾萨克。

2 个答案:

答案 0 :(得分:1)

  

来源:link

        INP
        STA N
LOOP    LDA A
        SUB N
        BRP ENDLOOP
        LDA A
        OUT
        LDA B
        ADD A
        STA ACC
        LDA B
        STA A
        LDA ACC
        STA B
        BRA LOOP
ENDLOOP HLT
A       DAT 0
B       DAT 1
N       DAT
ACC     DAT

答案 1 :(得分:0)

斐波那契系列可以通过以下方式在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。

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