Files
nand2tetris/projects/04/abgabe/Fill.asm
2023-04-02 20:53:40 +02:00

78 lines
1.5 KiB
NASM

// 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