.
This commit is contained in:
+255
@@ -0,0 +1,255 @@
|
||||
@1
|
||||
D=A
|
||||
@ARG
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push ARGUMENT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@4
|
||||
M=D
|
||||
//pop POINTER
|
||||
@0
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@0
|
||||
D=A
|
||||
@THAT
|
||||
M=M+D
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@THAT
|
||||
A=M
|
||||
M=D
|
||||
@0
|
||||
D=A
|
||||
@THAT
|
||||
M=M-D
|
||||
//pop THAT
|
||||
@1
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@1
|
||||
D=A
|
||||
@THAT
|
||||
M=M+D
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@THAT
|
||||
A=M
|
||||
M=D
|
||||
@1
|
||||
D=A
|
||||
@THAT
|
||||
M=M-D
|
||||
//pop THAT
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push ARGUMENT
|
||||
@2
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
A=A-1
|
||||
M=M-D
|
||||
//SUB
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
M=M+D
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@ARG
|
||||
A=M
|
||||
M=D
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
M=M-D
|
||||
//pop ARG
|
||||
(Sys.init$MAIN_LOOP_START)
|
||||
//LABEL
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push ARGUMENT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@Sys.init$COMPUTE_ELEMENT
|
||||
D;JNE
|
||||
//IFGOTO
|
||||
@Sys.init$END_PROGRAM
|
||||
0;JMP
|
||||
//GOTO
|
||||
(Sys.init$COMPUTE_ELEMENT)
|
||||
//LABEL
|
||||
@0
|
||||
D=A
|
||||
@THAT
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push THAT
|
||||
@1
|
||||
D=A
|
||||
@THAT
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push THAT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
A=A-1
|
||||
M=M+D
|
||||
//ADD
|
||||
@2
|
||||
D=A
|
||||
@THAT
|
||||
M=M+D
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@THAT
|
||||
A=M
|
||||
M=D
|
||||
@2
|
||||
D=A
|
||||
@THAT
|
||||
M=M-D
|
||||
//pop THAT
|
||||
@4
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push POINTER
|
||||
@1
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
A=A-1
|
||||
M=M+D
|
||||
//ADD
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@4
|
||||
M=D
|
||||
//pop POINTER
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push ARGUMENT
|
||||
@1
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
A=A-1
|
||||
M=M-D
|
||||
//SUB
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
M=M+D
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@ARG
|
||||
A=M
|
||||
M=D
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
M=M-D
|
||||
//pop ARG
|
||||
@Sys.init$MAIN_LOOP_START
|
||||
0;JMP
|
||||
//GOTO
|
||||
(Sys.init$END_PROGRAM)
|
||||
//LABEL
|
||||
Reference in New Issue
Block a user