diff options
Diffstat (limited to 'projects/06/max')
-rw-r--r-- | projects/06/max/Max.asm | 26 | ||||
-rw-r--r-- | projects/06/max/Max.hack | 16 | ||||
-rw-r--r-- | projects/06/max/MaxL.asm | 23 |
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
|