diff options
Diffstat (limited to 'asms')
-rw-r--r-- | asms/Fill.asm | 76 | ||||
-rw-r--r-- | asms/Mult.asm | 33 |
2 files changed, 109 insertions, 0 deletions
diff --git a/asms/Fill.asm b/asms/Fill.asm new file mode 100644 index 0000000..16d63e2 --- /dev/null +++ b/asms/Fill.asm @@ -0,0 +1,76 @@ +// 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/04/Fill.asm
+
+// Runs an infinite loop that listens to the keyboard input.
+// When a key is pressed (any key), the program blackens the screen,
+// i.e. writes "black" in every pixel;
+// the screen should remain fully black as long as the key is pressed.
+// When no key is pressed, the program clears the screen, i.e. writes
+// "white" in every pixel;
+// the screen should remain fully clear as long as no key is pressed.
+
+// Put your code here.
+
+(BEGIN)
+@KBD
+D=M
+
+@BLACK
+D;JNE
+
+@WHITE
+0;JMP
+
+(BLACK)
+@8191
+D=A
+@i
+M=D
+
+(LOOPB)
+@i
+D=M
+@j
+M=D
+@SCREEN
+D=A
+@j
+M=M+D
+A=M
+M=-1
+@i
+M=M-1
+D=M
+@LOOPB
+D+1;JGT
+
+@BEGIN
+0;JMP
+
+(WHITE)
+@8191
+D=A
+@i
+M=D
+
+(LOOPW)
+@i
+D=M
+@j
+M=D
+@SCREEN
+D=A
+@j
+M=M+D
+A=M
+M=0
+@i
+M=M-1
+D=M
+@LOOPW
+D+1;JGT
+
+@BEGIN
+0;JMP
diff --git a/asms/Mult.asm b/asms/Mult.asm new file mode 100644 index 0000000..50bbba0 --- /dev/null +++ b/asms/Mult.asm @@ -0,0 +1,33 @@ +// 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/04/Mult.asm
+
+// Multiplies R0 and R1 and stores the result in R2.
+// (R0, R1, R2 refer to RAM[0], RAM[1], and RAM[2], respectively.)
+
+// Put your code here.
+
+@i
+M=0
+@R2
+M=0
+
+(LOOP)
+@i
+M=M+1
+D=M
+@R0
+D=D-M
+@END
+D;JGT
+@R1
+D=M
+@R2
+M=M+D
+@LOOP
+0;JMP
+
+(END)
+@END
+0;JMP
|