mirror of
https://github.com/soconnor0919/eceg431.git
synced 2025-12-11 22:54:43 -05:00
project08 template files
This commit is contained in:
26
08/ProgramFlow/BasicLoop/BasicLoop.tst
Normal file
26
08/ProgramFlow/BasicLoop/BasicLoop.tst
Normal file
@@ -0,0 +1,26 @@
|
||||
// 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/8/ProgramFlow/BasicLoop/BasicLoop.tst
|
||||
|
||||
// Tests BasicLoop.asm on the CPU emulator.
|
||||
// Before executing the code, initializes the stack pointer
|
||||
// and the base addresses of the local and argument segments,
|
||||
// and sets argument[0].
|
||||
|
||||
load BasicLoop.asm,
|
||||
output-file BasicLoop.out,
|
||||
compare-to BasicLoop.cmp,
|
||||
|
||||
set RAM[0] 256, // SP
|
||||
set RAM[1] 300, // LCL
|
||||
set RAM[2] 400, // ARG
|
||||
set RAM[400] 3, // argument 0
|
||||
|
||||
repeat 600 {
|
||||
ticktock;
|
||||
}
|
||||
|
||||
// Outputs the stack pointer and the value at the stack's base
|
||||
output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1;
|
||||
output;
|
||||
23
08/ProgramFlow/BasicLoop/BasicLoop.vm
Normal file
23
08/ProgramFlow/BasicLoop/BasicLoop.vm
Normal file
@@ -0,0 +1,23 @@
|
||||
// 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/8/ProgramFlow/BasicLoop/BasicLoop.vm
|
||||
|
||||
// Computes the sum 1 + 2 + ... + n and pushes the result onto
|
||||
// the stack. The value n is given in argument[0], which must be
|
||||
// initialized by the caller of this code.
|
||||
|
||||
push constant 0
|
||||
pop local 0 // sum = 0
|
||||
label LOOP
|
||||
push argument 0
|
||||
push local 0
|
||||
add
|
||||
pop local 0 // sum = sum + n
|
||||
push argument 0
|
||||
push constant 1
|
||||
sub
|
||||
pop argument 0 // n--
|
||||
push argument 0
|
||||
if-goto LOOP // if n > 0, goto LOOP
|
||||
push local 0 // else, pushes sum to the stack's top
|
||||
26
08/ProgramFlow/BasicLoop/BasicLoopVME.tst
Normal file
26
08/ProgramFlow/BasicLoop/BasicLoopVME.tst
Normal file
@@ -0,0 +1,26 @@
|
||||
// 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/8/ProgramFlow/BasicLoop/BasicLoopVME.tst
|
||||
|
||||
// Tests and illustrates BasicLoop.vm on the VM emulator.
|
||||
// Before executing the code, initializes the stack pointer
|
||||
// and the base addresses of the local and argument segments,
|
||||
// and sets argument[0].
|
||||
|
||||
load BasicLoop.vm,
|
||||
output-file BasicLoop.out,
|
||||
compare-to BasicLoop.cmp,
|
||||
|
||||
set sp 256,
|
||||
set local 300,
|
||||
set argument 400,
|
||||
set argument[0] 3,
|
||||
|
||||
repeat 33 {
|
||||
vmstep;
|
||||
}
|
||||
|
||||
// Outputs the stack pointer and the value at the stack's base
|
||||
output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1;
|
||||
output;
|
||||
28
08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
Normal file
28
08/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
Normal file
@@ -0,0 +1,28 @@
|
||||
// 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/8/ProgramFlow/FibonacciSeries/FibonacciSeries.tst
|
||||
|
||||
// Tests FibonacciSeries.asm on the CPU emulator.
|
||||
// Before executing the code, initializes the stack pointer
|
||||
// and the base addresses of the local and argument segments,
|
||||
// and sets argument[0] and argument [1].
|
||||
|
||||
load FibonacciSeries.asm,
|
||||
output-file FibonacciSeries.out,
|
||||
compare-to FibonacciSeries.cmp,
|
||||
|
||||
set RAM[0] 256, // SP
|
||||
set RAM[1] 300, // LCL
|
||||
set RAM[2] 400, // ARG
|
||||
set RAM[400] 6, // argument[0], n
|
||||
set RAM[401] 3000, // argument[1], base address of the generated series
|
||||
|
||||
repeat 1100 {
|
||||
ticktock;
|
||||
}
|
||||
|
||||
// Outputs the series of values generated and written by the code.
|
||||
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;
|
||||
output;
|
||||
44
08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
Normal file
44
08/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
Normal file
@@ -0,0 +1,44 @@
|
||||
// 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/8/ProgramFlow/FibonacciSeries/FibonacciSeries.vm
|
||||
|
||||
// Puts the first n elements of the Fibonacci series in the memory,
|
||||
// starting at address addr. n and addr are given in argument[0] and
|
||||
// argument[1], which must be initialized by the caller of this code.
|
||||
|
||||
push argument 1 // sets THAT, the base address of the
|
||||
pop pointer 1 // that segment, to argument[1]
|
||||
push constant 0 // sets the series' first and second
|
||||
pop that 0 // elements to 0 and 1, respectively
|
||||
push constant 1
|
||||
pop that 1
|
||||
push argument 0 // sets n, the number of remaining elements
|
||||
push constant 2 // to be computed, to argument[0] minus 2,
|
||||
sub // since 2 elements were already computed.
|
||||
pop argument 0
|
||||
|
||||
label LOOP
|
||||
push argument 0
|
||||
if-goto COMPUTE_ELEMENT // if n > 0, goto COMPUTE_ELEMENT
|
||||
goto END // otherwise, goto END
|
||||
|
||||
label COMPUTE_ELEMENT
|
||||
// that[2] = that[0] + that[1]
|
||||
push that 0
|
||||
push that 1
|
||||
add
|
||||
pop that 2
|
||||
// THAT += 1 (updates the base address of that)
|
||||
push pointer 1
|
||||
push constant 1
|
||||
add
|
||||
pop pointer 1
|
||||
// updates n-- and loops
|
||||
push argument 0
|
||||
push constant 1
|
||||
sub
|
||||
pop argument 0
|
||||
goto LOOP
|
||||
|
||||
label END
|
||||
29
08/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
Normal file
29
08/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
Normal file
@@ -0,0 +1,29 @@
|
||||
// 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/8/ProgramFlow/FibonacciSeries/FibonacciSeriesVME.tst
|
||||
|
||||
// Tests and illustrates FibonacciSeries.vm on the VM emulator.
|
||||
// Before executing the code, initializes the stack pointer
|
||||
// and the base addresses of the local and argument segments,
|
||||
// and sets argument[0] to n and argument [1] to the base address
|
||||
// of the generated series.
|
||||
|
||||
load FibonacciSeries.vm,
|
||||
output-file FibonacciSeries.out,
|
||||
compare-to FibonacciSeries.cmp,
|
||||
|
||||
set sp 256,
|
||||
set local 300,
|
||||
set argument 400,
|
||||
set argument[0] 6,
|
||||
set argument[1] 3000,
|
||||
|
||||
repeat 73 {
|
||||
vmstep;
|
||||
}
|
||||
|
||||
// Outputs the series of values generated and written by the code.
|
||||
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;
|
||||
output;
|
||||
Reference in New Issue
Block a user