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

365 lines
2.8 KiB
NASM

// push constant 10
@10
D = A
@SP
A = M
M = D
@SP
M = M + 1
// pop local 0
@0
D = A
@LCL
A = M
D = D + A
@R13
M = D
// ^ R13 = local + 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 21
@21
D = A
@SP
A = M
M = D
@SP
M = M + 1
// push constant 22
@22
D = A
@SP
A = M
M = D
@SP
M = M + 1
// pop argument 2
@2
D = A
@ARG
A = M
D = D + A
@R13
M = D
// ^ R13 = argument + index
@SP
A = M
A = A - 1
D = M
@SP
M = M - 1
// ^ pop into D
@R13
A = M
M = D
// ^ *R13 = D
// pop argument 1
@1
D = A
@ARG
A = M
D = D + A
@R13
M = D
// ^ R13 = argument + 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 36
@36
D = A
@SP
A = M
M = D
@SP
M = M + 1
// pop this 6
@6
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 42
@42
D = A
@SP
A = M
M = D
@SP
M = M + 1
// push constant 45
@45
D = A
@SP
A = M
M = D
@SP
M = M + 1
// pop that 5
@5
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
// pop that 2
@2
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 constant 510
@510
D = A
@SP
A = M
M = D
@SP
M = M + 1
// pop temp 6
@6
D = A
@5
A = D + A
D = A
@R13
M = D
// ^ R13 = temp + index
@SP
A = M
A = A - 1
D = M
@SP
M = M - 1
// ^ pop into D
@R13
A = M
M = D
// ^ *R13 = D
// push local 0
@0
D = A
@LCL
A = M
A = D + A
D = M
// ^ D = *(LCL + index)
@SP
A = M
M = D
@SP
M = M + 1
// ^ push D
// push that 5
@5
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
// push argument 1
@1
D = A
@ARG
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 this 6
@6
D = A
@THIS
A = M
A = D + A
D = M
// ^ D = *(LCL + index)
@SP
A = M
M = D
@SP
M = M + 1
// ^ push D
// push this 6
@6
D = A
@THIS
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
// 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 temp 6
@6
D = A
@5
A = D + A
D = M
// ^ D = *(temp + 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