aboutsummaryrefslogtreecommitdiff
path: root/projects/06/max
diff options
context:
space:
mode:
authorYuchen Pei <me@ypei.me>2017-11-29 12:30:41 +0100
committerYuchen Pei <me@ypei.me>2017-11-29 12:30:41 +0100
commita000308104aab27c2dde9a306f1bc654b2db4806 (patch)
treeaecc628e14c1628b5714281437aba18680cdc27b /projects/06/max
first commit
Diffstat (limited to 'projects/06/max')
-rw-r--r--projects/06/max/Max.asm26
-rw-r--r--projects/06/max/MaxL.asm23
2 files changed, 49 insertions, 0 deletions
diff --git a/projects/06/max/Max.asm b/projects/06/max/Max.asm
new file mode 100644
index 0000000..b62c138
--- /dev/null
+++ b/projects/06/max/Max.asm
@@ -0,0 +1,26 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/06/max/Max.asm
+
+// Computes R2 = max(R0, R1) (R0,R1,R2 refer to RAM[0],RAM[1],RAM[2])
+
+ @R0
+ D=M // D = first number
+ @R1
+ D=D-M // D = first number - second number
+ @OUTPUT_FIRST
+ D;JGT // if D>0 (first is greater) goto output_first
+ @R1
+ D=M // D = second number
+ @OUTPUT_D
+ 0;JMP // goto output_d
+(OUTPUT_FIRST)
+ @R0
+ D=M // D = first number
+(OUTPUT_D)
+ @R2
+ M=D // M[2] = D (greatest number)
+(INFINITE_LOOP)
+ @INFINITE_LOOP
+ 0;JMP // infinite loop
diff --git a/projects/06/max/MaxL.asm b/projects/06/max/MaxL.asm
new file mode 100644
index 0000000..fc3ccbf
--- /dev/null
+++ b/projects/06/max/MaxL.asm
@@ -0,0 +1,23 @@
+// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/06/max/MaxL.asm
+
+// Symbol-less version of the Max.asm program.
+
+@0
+D=M
+@1
+D=D-M
+@10
+D;JGT
+@1
+D=M
+@12
+0;JMP
+@0
+D=M
+@2
+M=D
+@14
+0;JMP