Add solutions for part 1
This commit is contained in:
189
projects/07/MemoryAccess/PointerTest/PointerTest.asm
Normal file
189
projects/07/MemoryAccess/PointerTest/PointerTest.asm
Normal file
@@ -0,0 +1,189 @@
|
||||
// push constant 3030
|
||||
@3030
|
||||
D = A
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
|
||||
// pop pointer THIS
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
D = M
|
||||
@SP
|
||||
M = M - 1
|
||||
@THIS
|
||||
M = D
|
||||
// ^ pop into THIS
|
||||
|
||||
// push constant 3040
|
||||
@3040
|
||||
D = A
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
|
||||
// pop pointer THAT
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
D = M
|
||||
@SP
|
||||
M = M - 1
|
||||
@THAT
|
||||
M = D
|
||||
// ^ pop into THAT
|
||||
|
||||
// push constant 32
|
||||
@32
|
||||
D = A
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
|
||||
// pop this 2
|
||||
@2
|
||||
D = A
|
||||
@THIS
|
||||
A = M
|
||||
D = D + A
|
||||
@R13
|
||||
M = D
|
||||
// ^ R13 = this + index
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
D = M
|
||||
@SP
|
||||
M = M - 1
|
||||
// ^ pop into D
|
||||
@R13
|
||||
A = M
|
||||
M = D
|
||||
// ^ *R13 = D
|
||||
|
||||
// push constant 46
|
||||
@46
|
||||
D = A
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
|
||||
// pop that 6
|
||||
@6
|
||||
D = A
|
||||
@THAT
|
||||
A = M
|
||||
D = D + A
|
||||
@R13
|
||||
M = D
|
||||
// ^ R13 = that + index
|
||||
@SP
|
||||
A = M
|
||||
A = A - 1
|
||||
D = M
|
||||
@SP
|
||||
M = M - 1
|
||||
// ^ pop into D
|
||||
@R13
|
||||
A = M
|
||||
M = D
|
||||
// ^ *R13 = D
|
||||
|
||||
// push pointer THIS
|
||||
@THIS
|
||||
D = M
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
// ^ push THIS
|
||||
|
||||
// push pointer THAT
|
||||
@THAT
|
||||
D = M
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
// ^ push THAT
|
||||
|
||||
// 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
|
||||
|
||||
// push this 2
|
||||
@2
|
||||
D = A
|
||||
@THIS
|
||||
A = M
|
||||
A = D + A
|
||||
D = M
|
||||
// ^ D = *(LCL + index)
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
// ^ push 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 that 6
|
||||
@6
|
||||
D = A
|
||||
@THAT
|
||||
A = M
|
||||
A = D + A
|
||||
D = M
|
||||
// ^ D = *(LCL + index)
|
||||
@SP
|
||||
A = M
|
||||
M = D
|
||||
@SP
|
||||
M = M + 1
|
||||
// ^ push 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
|
||||
|
||||
Reference in New Issue
Block a user