// 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. (LOOP) // Abfrage des KBD-Speichers @KBD //Adresse Keyboardspeicher D=M //Datenregister = Speicheradresse @KPRESSED D;JGT @NOKPRESSED 0;JMP (KPRESSED) // Taste wurde/wird gedrückt @R0 M=-1 // 11111111111111111 --> black Pixel @ONSCREEN 0;JMP (NOKPRESSED) // keine Taste gedrückt @R0 M=0 // wieder auf 0 gesetzt @ONSCREEN 0;JMP (ONSCREEN) // erste Zeile von 16384 bis 16415 => 32 // 31 * 256 // letztes Byte --> 8192 --> 16384 + 8192 somit 8191 @8191 // Eingabe eines konstanten Wertes D=A // A= 8191, Übergabe an D @R1 M=D // R1 = 8191 //https://github.com/Olical/nand2tetris/blob/master/asm/fill/Fill.asm (PRINT) @SCREEN D=M @counter D=M M=D+1 //Schleife, setze ein Register auf 0, dann addiere das zum @SCREEN. Setze die entstandene Adresse auf -1. Nun vergleiche den Zähler mit R1, wenn ungleich dann erhöhe um 1 und durchlaufe die Schleife abermals. @ONSCREEN @LOOP 0;JMP