Project 04, leider war Fill nicht meins

This commit is contained in:
Sven Riwoldt
2023-04-02 20:53:40 +02:00
parent 87fc2ea2d7
commit ede7e378ba
5 changed files with 197 additions and 68 deletions

View File

@@ -0,0 +1,78 @@
// 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.
@8192 // 32*256 --> 32 16er pro Zeile
D=A
@ENDPOS // in @16
M=D
(LOOP)
@SCREEN //Screen-Einstiegsadresse
D=A
@ScreenStart //@SCREEN 16384 --> @17
M=D
@i //Zähler = 0 18
M=0
@KBD //24576
D=M //Tastatureingabe ?
@WEISS
D; JEQ //WEISS WENN D == 0
@SCHWARZ //SPRINGE ZU SCHWARZ
D; JNE //WENN NICHT 0
(SCHWARZ)
@ENDPOS
D=M
@i
D=D-M //ENDPOS -1 = 0 ? DANN ZU LOOP
@LOOP
D;JEQ
@ScreenStart
A=M
M=-1 //SETZE -1 == SCHWARZ
@i
M=M+1 //i++
@ScreenStart
M=M+1
@SCHWARZ
0;JMP
(WEISS)
@ENDPOS
D=M
@i
D=D-M //ENDPOS -1 = 0 ? DANN ZU LOOP
@LOOP
D;JEQ
@ScreenStart
A=M
M=0 //SETZE 0 == WEISS
@i
M=M+1 //i++
@ScreenStart
M=M+1
@WEISS
0;JMP