From 9542deeb483a00b6fabed7574720926ce97d7511 Mon Sep 17 00:00:00 2001 From: Frederick Yin Date: Tue, 16 Aug 2022 11:54:23 +0800 Subject: Projects, 01-06 completed --- projects/08/ProgramFlow/BasicLoop/BasicLoop.cmp | 2 ++ projects/08/ProgramFlow/BasicLoop/BasicLoop.tst | 20 ++++++++++++++++++++ projects/08/ProgramFlow/BasicLoop/BasicLoop.vm | 22 ++++++++++++++++++++++ projects/08/ProgramFlow/BasicLoop/BasicLoopVME.tst | 20 ++++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 projects/08/ProgramFlow/BasicLoop/BasicLoop.cmp create mode 100644 projects/08/ProgramFlow/BasicLoop/BasicLoop.tst create mode 100644 projects/08/ProgramFlow/BasicLoop/BasicLoop.vm create mode 100644 projects/08/ProgramFlow/BasicLoop/BasicLoopVME.tst (limited to 'projects/08/ProgramFlow/BasicLoop') diff --git a/projects/08/ProgramFlow/BasicLoop/BasicLoop.cmp b/projects/08/ProgramFlow/BasicLoop/BasicLoop.cmp new file mode 100644 index 0000000..00d35d2 --- /dev/null +++ b/projects/08/ProgramFlow/BasicLoop/BasicLoop.cmp @@ -0,0 +1,2 @@ +| RAM[0] |RAM[256]| +| 257 | 6 | diff --git a/projects/08/ProgramFlow/BasicLoop/BasicLoop.tst b/projects/08/ProgramFlow/BasicLoop/BasicLoop.tst new file mode 100644 index 0000000..50ca118 --- /dev/null +++ b/projects/08/ProgramFlow/BasicLoop/BasicLoop.tst @@ -0,0 +1,20 @@ +// 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/BasicLoop/BasicLoop.tst + +load BasicLoop.asm, +output-file BasicLoop.out, +compare-to BasicLoop.cmp, +output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1; + +set RAM[0] 256, +set RAM[1] 300, +set RAM[2] 400, +set RAM[400] 3, + +repeat 600 { + ticktock; +} + +output; diff --git a/projects/08/ProgramFlow/BasicLoop/BasicLoop.vm b/projects/08/ProgramFlow/BasicLoop/BasicLoop.vm new file mode 100644 index 0000000..dc5a92f --- /dev/null +++ b/projects/08/ProgramFlow/BasicLoop/BasicLoop.vm @@ -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/BasicLoop/BasicLoop.vm + +// Computes the sum 1 + 2 + ... + argument[0] and pushes the +// result onto the stack. Argument[0] is initialized by the test +// script before this code starts running. +push constant 0 +pop local 0 // initializes sum = 0 +label LOOP_START +push argument 0 +push local 0 +add +pop local 0 // sum = sum + counter +push argument 0 +push constant 1 +sub +pop argument 0 // counter-- +push argument 0 +if-goto LOOP_START // If counter != 0, goto LOOP_START +push local 0 diff --git a/projects/08/ProgramFlow/BasicLoop/BasicLoopVME.tst b/projects/08/ProgramFlow/BasicLoop/BasicLoopVME.tst new file mode 100644 index 0000000..237fdff --- /dev/null +++ b/projects/08/ProgramFlow/BasicLoop/BasicLoopVME.tst @@ -0,0 +1,20 @@ +// 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/BasicLoop/BasicLoopVME.tst + +load BasicLoop.vm, +output-file BasicLoop.out, +compare-to BasicLoop.cmp, +output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1; + +set sp 256, +set local 300, +set argument 400, +set argument[0] 3, + +repeat 33 { + vmstep; +} + +output; -- cgit v1.2.3