78 lines
1.5 KiB
NASM
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 |