Files
N2T/projects/07/MemoryAccess/PointerTest/PointerTest.asm
2020-11-15 13:57:48 -05:00

190 lines
1.4 KiB
NASM

// 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