Add solutions for part 1
This commit is contained in:
41
projects/04/mult/Mult.asm
Normal file
41
projects/04/mult/Mult.asm
Normal file
@@ -0,0 +1,41 @@
|
||||
// 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.)
|
||||
|
||||
// R2 = 0
|
||||
@R2
|
||||
M = 0
|
||||
// i = 0
|
||||
@i
|
||||
M = 0
|
||||
|
||||
(LOOP)
|
||||
// (if i >= R0 <=> if i - R0 >= 0) goto END
|
||||
@i
|
||||
D = M
|
||||
@R0
|
||||
D = D - M
|
||||
@END
|
||||
D;JGE
|
||||
|
||||
// R2 = R2 + R1
|
||||
@R1
|
||||
D = M
|
||||
@R2
|
||||
M = M + D
|
||||
|
||||
// i++
|
||||
@i
|
||||
M = M + 1
|
||||
|
||||
// goto LOOP
|
||||
@LOOP
|
||||
0;JMP
|
||||
|
||||
(END)
|
||||
@END
|
||||
0;JMP
|
||||
7
projects/04/mult/Mult.cmp
Normal file
7
projects/04/mult/Mult.cmp
Normal file
@@ -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 |
|
||||
20
projects/04/mult/Mult.hack
Normal file
20
projects/04/mult/Mult.hack
Normal file
@@ -0,0 +1,20 @@
|
||||
0000000000010000
|
||||
1110101010001000
|
||||
0000000000000010
|
||||
1110101010001000
|
||||
0000000000010000
|
||||
1111110000010000
|
||||
0000000000000001
|
||||
1111010011010000
|
||||
0000000000010010
|
||||
1110001100000011
|
||||
0000000000010000
|
||||
1111110111001000
|
||||
0000000000000000
|
||||
1111110000010000
|
||||
0000000000000010
|
||||
1111000010001000
|
||||
0000000000000100
|
||||
1110101010000111
|
||||
0000000000010010
|
||||
1110101010000111
|
||||
7
projects/04/mult/Mult.out
Normal file
7
projects/04/mult/Mult.out
Normal file
@@ -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 |
|
||||
74
projects/04/mult/Mult.tst
Normal file
74
projects/04/mult/Mult.tst
Normal file
@@ -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;
|
||||
Reference in New Issue
Block a user