diff options
Diffstat (limited to 'projects/08/ProgramFlow')
-rw-r--r-- | projects/08/ProgramFlow/BasicLoop/BasicLoop.asm | 125 | ||||
-rw-r--r-- | projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.asm | 214 |
2 files changed, 339 insertions, 0 deletions
diff --git a/projects/08/ProgramFlow/BasicLoop/BasicLoop.asm b/projects/08/ProgramFlow/BasicLoop/BasicLoop.asm new file mode 100644 index 0000000..7ba9165 --- /dev/null +++ b/projects/08/ProgramFlow/BasicLoop/BasicLoop.asm @@ -0,0 +1,125 @@ +@0 +D=A +@SP +A=M +M=D +@SP +M=M+1 +@0 +D=A +@LCL +M=M+D +@SP +M=M-1 +A=M +D=M +@LCL +A=M +M=D +@0 +D=A +@LCL +M=M-D +(LOOP_START) +@ARG +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@LCL +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +A=A-1 +M=D+M +@0 +D=A +@LCL +M=M+D +@SP +M=M-1 +A=M +D=M +@LCL +A=M +M=D +@0 +D=A +@LCL +M=M-D +@ARG +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@1 +D=A +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +A=A-1 +M=M-D +@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 +@ARG +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +@LOOP_START +D;JNE +@LCL +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 diff --git a/projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.asm b/projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.asm new file mode 100644 index 0000000..e84fad0 --- /dev/null +++ b/projects/08/ProgramFlow/FibonacciSeries/FibonacciSeries.asm @@ -0,0 +1,214 @@ +@ARG +D=M +@1 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +@THAT +M=D +@0 +D=A +@SP +A=M +M=D +@SP +M=M+1 +@0 +D=A +@THAT +M=M+D +@SP +AM=M-1 +D=M +@THAT +A=M +M=D +@0 +D=A +@THAT +M=M-D +@1 +D=A +@SP +A=M +M=D +@SP +M=M+1 +@1 +D=A +@THAT +M=M+D +@SP +AM=M-1 +D=M +@THAT +A=M +M=D +@1 +D=A +@THAT +M=M-D +@ARG +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@2 +D=A +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +A=A-1 +M=M-D +@0 +D=A +@ARG +M=M+D +@SP +AM=M-1 +D=M +@ARG +A=M +M=D +@0 +D=A +@ARG +M=M-D +(MAIN_LOOP_START) +@ARG +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +@COMPUTE_ELEMENT +D;JNE +@END_PROGRAM +0;JMP +(COMPUTE_ELEMENT) +@THAT +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@THAT +D=M +@1 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +A=A-1 +M=D+M +@2 +D=A +@THAT +M=M+D +@SP +AM=M-1 +D=M +@THAT +A=M +M=D +@2 +D=A +@THAT +M=M-D +@THAT +D=M +@SP +A=M +M=D +@SP +M=M+1 +@1 +D=A +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +A=A-1 +M=D+M +@SP +AM=M-1 +D=M +@THAT +M=D +@ARG +D=M +@0 +A=D+A +D=M +@SP +A=M +M=D +@SP +M=M+1 +@1 +D=A +@SP +A=M +M=D +@SP +M=M+1 +@SP +AM=M-1 +D=M +A=A-1 +M=M-D +@0 +D=A +@ARG +M=M+D +@SP +AM=M-1 +D=M +@ARG +A=M +M=D +@0 +D=A +@ARG +M=M-D +@MAIN_LOOP_START +0;JMP +(END_PROGRAM) |