summaryrefslogtreecommitdiff
path: root/projects/06/max
diff options
context:
space:
mode:
Diffstat (limited to 'projects/06/max')
-rw-r--r--projects/06/max/Max.asm26
-rw-r--r--projects/06/max/Max.hack16
-rw-r--r--projects/06/max/MaxL.asm23
3 files changed, 65 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/Max.hack b/projects/06/max/Max.hack
new file mode 100644
index 0000000..ab8a440
--- /dev/null
+++ b/projects/06/max/Max.hack
@@ -0,0 +1,16 @@
+0000000000000000
+1111110000010000
+0000000000000001
+1111010011010000
+0000000000001010
+1110001100000001
+0000000000000001
+1111110000010000
+0000000000001100
+1110101010000111
+0000000000000000
+1111110000010000
+0000000000000010
+1110001100001000
+0000000000001110
+1110101010000111
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