From ec61018d15ba4ad0a41e1ab44d7e1ecb5f2870d2 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Tue, 12 Dec 2017 14:30:43 +0100 Subject: finished project 4 --- projects/04/fill/Fill.asm | 64 +++++++++++++++++++++++++++++++++++++- projects/04/fill/Fill.tst | 2 +- projects/04/fill/FillAutomatic.out | 4 +++ projects/04/fill/FillAutomatic.tst | 2 +- projects/04/mult/Mult.asm | 33 ++++++++++++++++++++ projects/04/mult/Mult.out | 7 +++++ projects/04/mult/Mult.tst | 2 +- projects/04/mult/mult.asm | 9 ------ 8 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 projects/04/fill/FillAutomatic.out create mode 100644 projects/04/mult/Mult.asm create mode 100644 projects/04/mult/Mult.out delete mode 100644 projects/04/mult/mult.asm (limited to 'projects/04') diff --git a/projects/04/fill/Fill.asm b/projects/04/fill/Fill.asm index 8f24a95..16d63e2 100644 --- a/projects/04/fill/Fill.asm +++ b/projects/04/fill/Fill.asm @@ -11,4 +11,66 @@ // "white" in every pixel; // the screen should remain fully clear as long as no key is pressed. -// Put your code here. \ No newline at end of file +// Put your code here. + +(BEGIN) +@KBD +D=M + +@BLACK +D;JNE + +@WHITE +0;JMP + +(BLACK) +@8191 +D=A +@i +M=D + +(LOOPB) +@i +D=M +@j +M=D +@SCREEN +D=A +@j +M=M+D +A=M +M=-1 +@i +M=M-1 +D=M +@LOOPB +D+1;JGT + +@BEGIN +0;JMP + +(WHITE) +@8191 +D=A +@i +M=D + +(LOOPW) +@i +D=M +@j +M=D +@SCREEN +D=A +@j +M=M+D +A=M +M=0 +@i +M=M-1 +D=M +@LOOPW +D+1;JGT + +@BEGIN +0;JMP diff --git a/projects/04/fill/Fill.tst b/projects/04/fill/Fill.tst index 149bfee..e8bb385 100644 --- a/projects/04/fill/Fill.tst +++ b/projects/04/fill/Fill.tst @@ -3,7 +3,7 @@ // by Nisan and Schocken, MIT Press. // File name: projects/04/fill/Fill.tst -load Fill.hack; +load Fill.asm; echo "Make sure that 'No Animation' is selected. Then, select the keyboard, press any key for some time, and inspect the screen."; repeat { diff --git a/projects/04/fill/FillAutomatic.out b/projects/04/fill/FillAutomatic.out new file mode 100644 index 0000000..a71db27 --- /dev/null +++ b/projects/04/fill/FillAutomatic.out @@ -0,0 +1,4 @@ +|RAM[16384]|RAM[17648]|RAM[18349]|RAM[19444]|RAM[20771]|RAM[21031]|RAM[22596]|RAM[23754]|RAM[24575]| +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | diff --git a/projects/04/fill/FillAutomatic.tst b/projects/04/fill/FillAutomatic.tst index 90bfef9..fbc29a0 100644 --- a/projects/04/fill/FillAutomatic.tst +++ b/projects/04/fill/FillAutomatic.tst @@ -12,7 +12,7 @@ // This is done in order to test that these registers are set to 000...0 or 111....1, // as mandated by how the Fill program should react to the keyboard events. -load Fill.hack, +load Fill.asm, output-file FillAutomatic.out, compare-to FillAutomatic.cmp, output-list RAM[16384]%D2.6.2 RAM[17648]%D2.6.2 RAM[18349]%D2.6.2 RAM[19444]%D2.6.2 RAM[20771]%D2.6.2 RAM[21031]%D2.6.2 RAM[22596]%D2.6.2 RAM[23754]%D2.6.2 RAM[24575]%D2.6.2; diff --git a/projects/04/mult/Mult.asm b/projects/04/mult/Mult.asm new file mode 100644 index 0000000..50bbba0 --- /dev/null +++ b/projects/04/mult/Mult.asm @@ -0,0 +1,33 @@ +// 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. + +@i +M=0 +@R2 +M=0 + +(LOOP) +@i +M=M+1 +D=M +@R0 +D=D-M +@END +D;JGT +@R1 +D=M +@R2 +M=M+D +@LOOP +0;JMP + +(END) +@END +0;JMP diff --git a/projects/04/mult/Mult.out b/projects/04/mult/Mult.out new file mode 100644 index 0000000..e31b5df --- /dev/null +++ b/projects/04/mult/Mult.out @@ -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 | diff --git a/projects/04/mult/Mult.tst b/projects/04/mult/Mult.tst index f877664..9bf4fa8 100644 --- a/projects/04/mult/Mult.tst +++ b/projects/04/mult/Mult.tst @@ -3,7 +3,7 @@ // by Nisan and Schocken, MIT Press. // File name: projects/04/mult/Mult.tst -load Mult.hack, +load Mult.asm, 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; diff --git a/projects/04/mult/mult.asm b/projects/04/mult/mult.asm deleted file mode 100644 index b44440a..0000000 --- a/projects/04/mult/mult.asm +++ /dev/null @@ -1,9 +0,0 @@ -// 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