如何在 Little Man Computer 中为斐波那契数列制作循环?
How can I make loops in Little Man Computer for a Fibonacci Sequence?
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 个数字 - 其中两个是第一个斐波那契数列项,第三个是我想要输出的迭代次数。但我怎样才能做到这一点?
在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,即要计算的项数 printed.Then 循环开始 运行 - 它将打印已设置的变量 fib 的默认值to 1. fib的值保存在另一个变量temp2中,变量temp用来记录fib的前一个值,以便数字相加正确,得到正确的数列。随着项数的增加,循环控制 fib、temp 和 temp2 的值。
然后程序检查是否打印了所需的项数并减少 n 的值。如果 n=0,则表示已达到所需的项数,程序将停止。如果 n 不为零,则循环继续直到 n=0。
**虽然我可能有更有效的方法,但是这个方法工作正常并且使用的邮箱数量相当少,这使得它非常有效。
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 个数字 - 其中两个是第一个斐波那契数列项,第三个是我想要输出的迭代次数。但我怎样才能做到这一点?
在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,即要计算的项数 printed.Then 循环开始 运行 - 它将打印已设置的变量 fib 的默认值to 1. fib的值保存在另一个变量temp2中,变量temp用来记录fib的前一个值,以便数字相加正确,得到正确的数列。随着项数的增加,循环控制 fib、temp 和 temp2 的值。
然后程序检查是否打印了所需的项数并减少 n 的值。如果 n=0,则表示已达到所需的项数,程序将停止。如果 n 不为零,则循环继续直到 n=0。
**虽然我可能有更有效的方法,但是这个方法工作正常并且使用的邮箱数量相当少,这使得它非常有效。