From a000308104aab27c2dde9a306f1bc654b2db4806 Mon Sep 17 00:00:00 2001
From: Yuchen Pei <me@ypei.me>
Date: Wed, 29 Nov 2017 12:30:41 +0100
Subject: first commit

---
 projects/04/mult/Mult.cmp |  7 +++++
 projects/04/mult/Mult.tst | 74 +++++++++++++++++++++++++++++++++++++++++++++++
 projects/04/mult/mult.asm |  9 ++++++
 3 files changed, 90 insertions(+)
 create mode 100644 projects/04/mult/Mult.cmp
 create mode 100644 projects/04/mult/Mult.tst
 create mode 100644 projects/04/mult/mult.asm

(limited to 'projects/04/mult')

diff --git a/projects/04/mult/Mult.cmp b/projects/04/mult/Mult.cmp
new file mode 100644
index 0000000..296b5fb
--- /dev/null
+++ b/projects/04/mult/Mult.cmp
@@ -0,0 +1,7 @@
+|  RAM[0]  |  RAM[1]  |  RAM[2]  |
+|       0  |       0  |       0  |
+|       1  |       0  |       0  |
+|       0  |       2  |       0  |
+|       3  |       1  |       3  |
+|       2  |       4  |       8  |
+|       6  |       7  |      42  |
\ No newline at end of file
diff --git a/projects/04/mult/Mult.tst b/projects/04/mult/Mult.tst
new file mode 100644
index 0000000..f877664
--- /dev/null
+++ b/projects/04/mult/Mult.tst
@@ -0,0 +1,74 @@
+// 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/04/mult/Mult.tst
+
+load Mult.hack,
+output-file Mult.out,
+compare-to Mult.cmp,
+output-list RAM[0]%D2.6.2 RAM[1]%D2.6.2 RAM[2]%D2.6.2;
+
+set RAM[0] 0,   // Set test arguments
+set RAM[1] 0,
+set RAM[2] -1;  // Test that program initialized product to 0
+repeat 20 {
+  ticktock;
+}
+set RAM[0] 0,   // Restore arguments in case program used them as loop counter
+set RAM[1] 0,
+output;
+
+set PC 0,
+set RAM[0] 1,   // Set test arguments
+set RAM[1] 0,
+set RAM[2] -1;  // Ensure that program initialized product to 0
+repeat 50 {
+  ticktock;
+}
+set RAM[0] 1,   // Restore arguments in case program used them as loop counter
+set RAM[1] 0,
+output;
+
+set PC 0,
+set RAM[0] 0,   // Set test arguments
+set RAM[1] 2,
+set RAM[2] -1;  // Ensure that program initialized product to 0
+repeat 80 {
+  ticktock;
+}
+set RAM[0] 0,   // Restore arguments in case program used them as loop counter
+set RAM[1] 2,
+output;
+
+set PC 0,
+set RAM[0] 3,   // Set test arguments
+set RAM[1] 1,
+set RAM[2] -1;  // Ensure that program initialized product to 0
+repeat 120 {
+  ticktock;
+}
+set RAM[0] 3,   // Restore arguments in case program used them as loop counter
+set RAM[1] 1,
+output;
+
+set PC 0,
+set RAM[0] 2,   // Set test arguments
+set RAM[1] 4,
+set RAM[2] -1;  // Ensure that program initialized product to 0
+repeat 150 {
+  ticktock;
+}
+set RAM[0] 2,   // Restore arguments in case program used them as loop counter
+set RAM[1] 4,
+output;
+
+set PC 0,
+set RAM[0] 6,   // Set test arguments
+set RAM[1] 7,
+set RAM[2] -1;  // Ensure that program initialized product to 0
+repeat 210 {
+  ticktock;
+}
+set RAM[0] 6,   // Restore arguments in case program used them as loop counter
+set RAM[1] 7,
+output;
diff --git a/projects/04/mult/mult.asm b/projects/04/mult/mult.asm
new file mode 100644
index 0000000..b44440a
--- /dev/null
+++ b/projects/04/mult/mult.asm
@@ -0,0 +1,9 @@
+// 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/04/Mult.asm
+
+// Multiplies R0 and R1 and stores the result in R2.
+// (R0, R1, R2 refer to RAM[0], RAM[1], and RAM[2], respectively.)
+
+// Put your code here.
\ No newline at end of file
-- 
cgit v1.2.3