Ich scheitere daran den Screen zu füllen
This commit is contained in:
@@ -11,4 +11,45 @@
|
|||||||
// "white" in every pixel;
|
// "white" in every pixel;
|
||||||
// the screen should remain fully clear as long as no key is pressed.
|
// the screen should remain fully clear as long as no key is pressed.
|
||||||
|
|
||||||
// Put your code here.
|
// 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 =
|
||||||
|
@8191
|
||||||
|
D=A
|
||||||
|
@R1
|
||||||
|
M=D
|
||||||
|
//https://github.com/Olical/nand2tetris/blob/master/asm/fill/Fill.asm
|
||||||
|
(WEITER)
|
||||||
|
@R1
|
||||||
|
D=M
|
||||||
|
@WEITER
|
||||||
|
M=D
|
||||||
|
|
||||||
|
|
||||||
|
@LOOP
|
||||||
|
0;JMP
|
||||||
@@ -9,4 +9,33 @@
|
|||||||
// This program only needs to handle arguments that satisfy
|
// This program only needs to handle arguments that satisfy
|
||||||
// R0 >= 0, R1 >= 0, and R0*R1 < 32768.
|
// R0 >= 0, R1 >= 0, and R0*R1 < 32768.
|
||||||
|
|
||||||
// Put your code here.
|
@R2 //Ergebnisspeicher
|
||||||
|
M=0 //init
|
||||||
|
|
||||||
|
@R1 //R1 dieser Wert dient als Schleifencounter
|
||||||
|
D=M //Inhalt nach M
|
||||||
|
|
||||||
|
@i //Zähler
|
||||||
|
M=D //i bekommt R1-Wert
|
||||||
|
|
||||||
|
@END
|
||||||
|
D;JEQ
|
||||||
|
|
||||||
|
(LOOP)
|
||||||
|
@R0 //R0 ansprechen
|
||||||
|
D=M //Wert aus R0 in Datenspeicher
|
||||||
|
|
||||||
|
@R2 //Ergebnisspeicher
|
||||||
|
M=D+M //Ergebnisspeicher = Datenspeicher + Ergebnisspeicher
|
||||||
|
|
||||||
|
@i //Zähler
|
||||||
|
D=M //D=Zähler
|
||||||
|
D=D-1 //D-1
|
||||||
|
M=D //Zurückschreiben in Zähler
|
||||||
|
|
||||||
|
@LOOP //LOOP
|
||||||
|
D;JGT //D GRÖSSER
|
||||||
|
|
||||||
|
(END) //END LOOP
|
||||||
|
@END
|
||||||
|
0;JMP
|
||||||
42
projects/04/tests/Rechteck.asm
Normal file
42
projects/04/tests/Rechteck.asm
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
// Zeichnen eines Rechtecks
|
||||||
|
// Breite = 16px, die Höhe ist in RAM[0]
|
||||||
|
|
||||||
|
@R0
|
||||||
|
D=M
|
||||||
|
@n // @16
|
||||||
|
M=D // n = RAM[0]
|
||||||
|
|
||||||
|
@i
|
||||||
|
M=0 // i=0
|
||||||
|
|
||||||
|
@SCREEN
|
||||||
|
D=A
|
||||||
|
@address
|
||||||
|
M=D // address = 16384 (Basisadresse des HACK-Screens)
|
||||||
|
|
||||||
|
(LOOP)
|
||||||
|
@i
|
||||||
|
D=M
|
||||||
|
@n
|
||||||
|
D=D-M
|
||||||
|
@END
|
||||||
|
D;JGT // if i > n goto END
|
||||||
|
|
||||||
|
|
||||||
|
@address
|
||||||
|
A=M
|
||||||
|
M=-1 // RAM[address] = -1 (16 pixels)
|
||||||
|
|
||||||
|
@i
|
||||||
|
M=M+1 // i=i+1
|
||||||
|
@32
|
||||||
|
D=A
|
||||||
|
@address
|
||||||
|
M=D+M // address = address + 32
|
||||||
|
|
||||||
|
@LOOP
|
||||||
|
0;JMP // GOTO LOOP
|
||||||
|
|
||||||
|
(END)
|
||||||
|
@END //Programmende
|
||||||
|
0;JMP
|
||||||
25
projects/04/tests/fillscreen.asm
Normal file
25
projects/04/tests/fillscreen.asm
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
@SCREEN
|
||||||
|
D=A
|
||||||
|
@R15
|
||||||
|
M=D
|
||||||
|
|
||||||
|
@R0
|
||||||
|
D=A
|
||||||
|
@R14
|
||||||
|
M=D
|
||||||
|
|
||||||
|
(LOOP)
|
||||||
|
@R14
|
||||||
|
D=M
|
||||||
|
@END
|
||||||
|
D;JEQ
|
||||||
|
|
||||||
|
@R15
|
||||||
|
M=M+1
|
||||||
|
@R14
|
||||||
|
M=M-1
|
||||||
|
@LOOP
|
||||||
|
|
||||||
|
(END)
|
||||||
|
@END
|
||||||
|
0;JMP
|
||||||
Reference in New Issue
Block a user