This commit is contained in:
QkoSad
2025-07-16 13:00:37 +03:00
commit 7894b48931
806 changed files with 162532 additions and 0 deletions
+142
View File
@@ -0,0 +1,142 @@
@0
D=A
@SP
A=M
M=D
@SP
M=M+1
//push CONSTANT
@0
D=A
@LCL
M=M+D
@SP
M=M-1
A=M
D=M
@LCL
A=M
M=D
@0
D=A
@LCL
M=M-D
//pop LOCAL
(Sys.init$LOOP_START)
//LABEL
@0
D=A
@ARG
A=M+D
D=M
@SP
A=M
M=D
@SP
M=M+1
//push ARGUMENT
@0
D=A
@LCL
A=M+D
D=M
@SP
A=M
M=D
@SP
M=M+1
//push LOCAL
@SP
M=M-1
A=M
D=M
A=A-1
M=M+D
//ADD
@0
D=A
@LCL
M=M+D
@SP
M=M-1
A=M
D=M
@LCL
A=M
M=D
@0
D=A
@LCL
M=M-D
//pop LOCAL
@0
D=A
@ARG
A=M+D
D=M
@SP
A=M
M=D
@SP
M=M+1
//push ARGUMENT
@1
D=A
@SP
A=M
M=D
@SP
M=M+1
//push CONSTANT
@SP
M=M-1
A=M
D=M
A=A-1
M=M-D
//SUB
@0
D=A
@ARG
M=M+D
@SP
M=M-1
A=M
D=M
@ARG
A=M
M=D
@0
D=A
@ARG
M=M-D
//pop ARG
@0
D=A
@ARG
A=M+D
D=M
@SP
A=M
M=D
@SP
M=M+1
//push ARGUMENT
@SP
M=M-1
A=M
D=M
@Sys.init$LOOP_START
D;JNE
//IFGOTO
@0
D=A
@LCL
A=M+D
D=M
@SP
A=M
M=D
@SP
M=M+1
//push LOCAL
+2
View File
@@ -0,0 +1,2 @@
| RAM[0] |RAM[256]|
| 257 | 6 |
+127
View File
@@ -0,0 +1,127 @@
0000000000000000
1110110000010000
0000000000000000
1111110000100000
1110001100001000
0000000000000000
1111110111001000
0000000000000000
1110110000010000
0000000000000001
1111000010001000
0000000000000000
1111110010001000
1111110000100000
1111110000010000
0000000000000001
1111110000100000
1110001100001000
0000000000000000
1110110000010000
0000000000000001
1111000111001000
0000000000000000
1110110000010000
0000000000000010
1111000010100000
1111110000010000
0000000000000000
1111110000100000
1110001100001000
0000000000000000
1111110111001000
0000000000000000
1110110000010000
0000000000000001
1111000010100000
1111110000010000
0000000000000000
1111110000100000
1110001100001000
0000000000000000
1111110111001000
0000000000000000
1111110010001000
1111110000100000
1111110000010000
1110110010100000
1111000010001000
0000000000000000
1110110000010000
0000000000000001
1111000010001000
0000000000000000
1111110010001000
1111110000100000
1111110000010000
0000000000000001
1111110000100000
1110001100001000
0000000000000000
1110110000010000
0000000000000001
1111000111001000
0000000000000000
1110110000010000
0000000000000010
1111000010100000
1111110000010000
0000000000000000
1111110000100000
1110001100001000
0000000000000000
1111110111001000
0000000000000001
1110110000010000
0000000000000000
1111110000100000
1110001100001000
0000000000000000
1111110111001000
0000000000000000
1111110010001000
1111110000100000
1111110000010000
1110110010100000
1111000111001000
0000000000000000
1110110000010000
0000000000000010
1111000010001000
0000000000000000
1111110010001000
1111110000100000
1111110000010000
0000000000000010
1111110000100000
1110001100001000
0000000000000000
1110110000010000
0000000000000010
1111000111001000
0000000000000000
1110110000010000
0000000000000010
1111000010100000
1111110000010000
0000000000000000
1111110000100000
1110001100001000
0000000000000000
1111110111001000
0000000000000000
1111110010001000
1111110000100000
1111110000010000
0000000000010110
1110001100000101
0000000000000000
1110110000010000
0000000000000001
1111000010100000
1111110000010000
0000000000000000
1111110000100000
1110001100001000
0000000000000000
1111110111001000
+2
View File
@@ -0,0 +1,2 @@
| RAM[0] |RAM[256]|
| 256 | 1 |
+20
View File
@@ -0,0 +1,20 @@
// 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/08/ProgramFlow/BasicLoop/BasicLoop.tst
load BasicLoop.asm,
output-file BasicLoop.out,
compare-to BasicLoop.cmp,
output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1;
set RAM[0] 256,
set RAM[1] 300,
set RAM[2] 400,
set RAM[400] 3,
repeat 600 {
ticktock;
}
output;
+22
View File
@@ -0,0 +1,22 @@
// 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/08/ProgramFlow/BasicLoop/BasicLoop.vm
// Computes the sum 1 + 2 + ... + argument[0] and pushes the
// result onto the stack. Argument[0] is initialized by the test
// script before this code starts running.
push constant 0
pop local 0 // initializes sum = 0
label LOOP_START
push argument 0
push local 0
add
pop local 0 // sum = sum + counter
push argument 0
push constant 1
sub
pop argument 0 // counter--
push argument 0
if-goto LOOP_START // If counter != 0, goto LOOP_START
push local 0
+20
View File
@@ -0,0 +1,20 @@
// 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/08/ProgramFlow/BasicLoop/BasicLoopVME.tst
load BasicLoop.vm,
output-file BasicLoop.out,
compare-to BasicLoop.cmp,
output-list RAM[0]%D1.6.1 RAM[256]%D1.6.1;
set sp 256,
set local 300,
set argument 400,
set argument[0] 3,
repeat 33 {
vmstep;
}
output;