mirror of
https://github.com/StepanovPlaton/Nand2Tetris.git
synced 2026-04-03 20:30:47 +04:00
Complete project 4
This commit is contained in:
66
Assignments/4_Machine_Language/Fill.asm
Normal file
66
Assignments/4_Machine_Language/Fill.asm
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// 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. When no key is pressed, the
|
||||||
|
// program clears the screen, i.e. writes "white" in every pixel.
|
||||||
|
|
||||||
|
// Put your code here.
|
||||||
|
(LOOP)
|
||||||
|
@KBD
|
||||||
|
D=M
|
||||||
|
@BLACK
|
||||||
|
D;JGT
|
||||||
|
@R0
|
||||||
|
M=0
|
||||||
|
@CONTINUE
|
||||||
|
0;JMP
|
||||||
|
(BLACK)
|
||||||
|
@R0
|
||||||
|
M=0
|
||||||
|
M=!M
|
||||||
|
(CONTINUE)
|
||||||
|
@31
|
||||||
|
D=A
|
||||||
|
@R1
|
||||||
|
M=D
|
||||||
|
@256
|
||||||
|
D=A
|
||||||
|
@R2
|
||||||
|
M=D
|
||||||
|
@SCREEN
|
||||||
|
D=A
|
||||||
|
@R3
|
||||||
|
M=D
|
||||||
|
(FILL)
|
||||||
|
@R0
|
||||||
|
D=M
|
||||||
|
@R3
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
D=A+1
|
||||||
|
@R3
|
||||||
|
M=D
|
||||||
|
@R1
|
||||||
|
DM=M-1
|
||||||
|
@ENDOFLINE
|
||||||
|
D;JEQ
|
||||||
|
@FILL
|
||||||
|
0;JMP
|
||||||
|
(ENDOFLINE)
|
||||||
|
@32
|
||||||
|
D=A
|
||||||
|
@R1
|
||||||
|
M=D
|
||||||
|
@R2
|
||||||
|
DM=M-1
|
||||||
|
@ENDOFSCREEN
|
||||||
|
D;JEQ
|
||||||
|
@FILL
|
||||||
|
0;JMP
|
||||||
|
(ENDOFSCREEN)
|
||||||
|
@LOOP
|
||||||
|
0;JMP
|
||||||
27
Assignments/4_Machine_Language/Mult.asm
Normal file
27
Assignments/4_Machine_Language/Mult.asm
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
// 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/4/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.)
|
||||||
|
// The algorithm is based on repetitive addition.
|
||||||
|
|
||||||
|
@R2
|
||||||
|
M=0
|
||||||
|
@R1
|
||||||
|
D=M
|
||||||
|
@END
|
||||||
|
D;JEQ
|
||||||
|
(STEP)
|
||||||
|
@R2
|
||||||
|
D=M
|
||||||
|
@R0
|
||||||
|
D=D+M
|
||||||
|
@R2
|
||||||
|
M=D
|
||||||
|
@R1
|
||||||
|
DM=M-1
|
||||||
|
@STEP
|
||||||
|
D;JGT
|
||||||
|
@END
|
||||||
Reference in New Issue
Block a user