Init nand2tetris
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
|RAM[3000]|RAM[3001]|RAM[3002]|RAM[3003]|RAM[3004]|RAM[3005]|
|
||||
| 0 | 1 | 1 | 2 | 3 | 5 |
|
||||
22
projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
Normal file
22
projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
Normal file
@@ -0,0 +1,22 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
|
||||
|
||||
load FibonacciSeries.asm,
|
||||
output-file FibonacciSeries.out,
|
||||
compare-to FibonacciSeries.cmp,
|
||||
output-list RAM[3000]%D1.6.2 RAM[3001]%D1.6.2 RAM[3002]%D1.6.2
|
||||
RAM[3003]%D1.6.2 RAM[3004]%D1.6.2 RAM[3005]%D1.6.2;
|
||||
|
||||
set RAM[0] 256,
|
||||
set RAM[1] 300,
|
||||
set RAM[2] 400,
|
||||
set RAM[400] 6,
|
||||
set RAM[401] 3000,
|
||||
|
||||
repeat 1100 {
|
||||
ticktock;
|
||||
}
|
||||
|
||||
output;
|
||||
49
projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
Normal file
49
projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
Normal file
@@ -0,0 +1,49 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
|
||||
|
||||
// Puts the first argument[0] elements of the Fibonacci series
|
||||
// in the memory, starting in the address given in argument[1].
|
||||
// Argument[0] and argument[1] are initialized by the test script
|
||||
// before this code starts running.
|
||||
|
||||
push argument 1
|
||||
pop pointer 1 // that = argument[1]
|
||||
|
||||
push constant 0
|
||||
pop that 0 // first element in the series = 0
|
||||
push constant 1
|
||||
pop that 1 // second element in the series = 1
|
||||
|
||||
push argument 0
|
||||
push constant 2
|
||||
sub
|
||||
pop argument 0 // num_of_elements -= 2 (first 2 elements are set)
|
||||
|
||||
label MAIN_LOOP_START
|
||||
|
||||
push argument 0
|
||||
if-goto COMPUTE_ELEMENT // if num_of_elements > 0, goto COMPUTE_ELEMENT
|
||||
goto END_PROGRAM // otherwise, goto END_PROGRAM
|
||||
|
||||
label COMPUTE_ELEMENT
|
||||
|
||||
push that 0
|
||||
push that 1
|
||||
add
|
||||
pop that 2 // that[2] = that[0] + that[1]
|
||||
|
||||
push pointer 1
|
||||
push constant 1
|
||||
add
|
||||
pop pointer 1 // that += 1
|
||||
|
||||
push argument 0
|
||||
push constant 1
|
||||
sub
|
||||
pop argument 0 // num_of_elements--
|
||||
|
||||
goto MAIN_LOOP_START
|
||||
|
||||
label END_PROGRAM
|
||||
@@ -0,0 +1,22 @@
|
||||
// This file is part of www.nand2tetris.org
|
||||
// and the book "The Elements of Computing Systems"
|
||||
// by Nisan and Schocken, MIT Press.
|
||||
// File name: projects/08/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
|
||||
|
||||
load FibonacciSeries.vm,
|
||||
output-file FibonacciSeries.out,
|
||||
compare-to FibonacciSeries.cmp,
|
||||
output-list RAM[3000]%D1.6.2 RAM[3001]%D1.6.2 RAM[3002]%D1.6.2
|
||||
RAM[3003]%D1.6.2 RAM[3004]%D1.6.2 RAM[3005]%D1.6.2;
|
||||
|
||||
set sp 256,
|
||||
set local 300,
|
||||
set argument 400,
|
||||
set argument[0] 6,
|
||||
set argument[1] 3000,
|
||||
|
||||
repeat 73 {
|
||||
vmstep;
|
||||
}
|
||||
|
||||
output;
|
||||
Reference in New Issue
Block a user