Add solutions for part 1
This commit is contained in:
122
projects/07/MemoryAccess/StaticTest/StaticTest.asm
Normal file
122
projects/07/MemoryAccess/StaticTest/StaticTest.asm
Normal file
@@ -0,0 +1,122 @@
|
||||
// push constant 111
|
||||
@111
|
||||
D = A
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
|
||||
// push constant 333
|
||||
@333
|
||||
D = A
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
|
||||
// push constant 888
|
||||
@888
|
||||
D = A
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
|
||||
// pop static StaticTest.8
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
D = M
|
||||
@SP
|
||||
M = M - 1
|
||||
// ^ pop into D
|
||||
@StaticTest.8
|
||||
M = D
|
||||
// ^ StaticTest.8 = D
|
||||
|
||||
// pop static StaticTest.3
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
D = M
|
||||
@SP
|
||||
M = M - 1
|
||||
// ^ pop into D
|
||||
@StaticTest.3
|
||||
M = D
|
||||
// ^ StaticTest.3 = D
|
||||
|
||||
// pop static StaticTest.1
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
D = M
|
||||
@SP
|
||||
M = M - 1
|
||||
// ^ pop into D
|
||||
@StaticTest.1
|
||||
M = D
|
||||
// ^ StaticTest.1 = D
|
||||
|
||||
// push static StaticTest.3
|
||||
@StaticTest.3
|
||||
D = M
|
||||
// ^ D = StaticTest.3
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
// ^ push from D
|
||||
|
||||
// push static StaticTest.1
|
||||
@StaticTest.1
|
||||
D = M
|
||||
// ^ D = StaticTest.1
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
// ^ push from D
|
||||
|
||||
// sub
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
A = A - 1
|
||||
D = M
|
||||
A = A + 1
|
||||
D = D - M
|
||||
A = A - 1
|
||||
M = D
|
||||
@SP
|
||||
M = M - 1
|
||||
|
||||
// push static StaticTest.8
|
||||
@StaticTest.8
|
||||
D = M
|
||||
// ^ D = StaticTest.8
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
// ^ push from D
|
||||
|
||||
// add
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
A = A - 1
|
||||
D = M
|
||||
A = A + 1
|
||||
D = D + M
|
||||
A = A - 1
|
||||
M = D
|
||||
@SP
|
||||
M = M - 1
|
||||
|
||||
2
projects/07/MemoryAccess/StaticTest/StaticTest.cmp
Normal file
2
projects/07/MemoryAccess/StaticTest/StaticTest.cmp
Normal file
@@ -0,0 +1,2 @@
|
||||
|RAM[256]|
|
||||
| 1110 |
|
||||
17
projects/07/MemoryAccess/StaticTest/StaticTest.tst
Normal file
17
projects/07/MemoryAccess/StaticTest/StaticTest.tst
Normal file
@@ -0,0 +1,17 @@
|
||||
// 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/07/MemoryAccess/StaticTest/StaticTest.tst
|
||||
|
||||
load StaticTest.asm,
|
||||
output-file StaticTest.out,
|
||||
compare-to StaticTest.cmp,
|
||||
output-list RAM[256]%D1.6.1;
|
||||
|
||||
set RAM[0] 256, // initializes the stack pointer
|
||||
|
||||
repeat 200 { // enough cycles to complete the execution
|
||||
ticktock;
|
||||
}
|
||||
|
||||
output; // the stack base
|
||||
17
projects/07/MemoryAccess/StaticTest/StaticTest.vm
Normal file
17
projects/07/MemoryAccess/StaticTest/StaticTest.vm
Normal file
@@ -0,0 +1,17 @@
|
||||
// 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/07/MemoryAccess/StaticTest/StaticTest.vm
|
||||
|
||||
// Executes pop and push commands using the static segment.
|
||||
push constant 111
|
||||
push constant 333
|
||||
push constant 888
|
||||
pop static 8
|
||||
pop static 3
|
||||
pop static 1
|
||||
push static 3
|
||||
push static 1
|
||||
sub
|
||||
push static 8
|
||||
add
|
||||
17
projects/07/MemoryAccess/StaticTest/StaticTestVME.tst
Normal file
17
projects/07/MemoryAccess/StaticTest/StaticTestVME.tst
Normal file
@@ -0,0 +1,17 @@
|
||||
// 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/07/MemoryAccess/StaticTest/StaticTestVME.tst
|
||||
|
||||
load StaticTest.vm,
|
||||
output-file StaticTest.out,
|
||||
compare-to StaticTest.cmp,
|
||||
output-list RAM[256]%D1.6.1;
|
||||
|
||||
set sp 256, // initializes the stack pointer
|
||||
|
||||
repeat 11 { // StaticTest.vm has 11 instructions
|
||||
vmstep;
|
||||
}
|
||||
|
||||
output; // the stack base
|
||||
Reference in New Issue
Block a user