project08 template files

This commit is contained in:
2025-10-26 17:51:57 -04:00
parent be00f40a6b
commit 38721f77c0
24 changed files with 1180 additions and 0 deletions

View 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;

View 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

View 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;