mirror of
https://github.com/soconnor0919/eceg431.git
synced 2025-12-11 06:34:43 -05:00
Add project 2 template files
This commit is contained in:
37
02/ALU-basic.cmp
Normal file
37
02/ALU-basic.cmp
Normal file
@@ -0,0 +1,37 @@
|
||||
| x | y |zx |nx |zy |ny | f |no | out |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000000000 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 0 | 1111111111111111 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111111111 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 1 | 0000000000000000 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 1 | 0000000000000000 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000000 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 0 | 1111111111111111 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 0 | 1111111111111110 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 1 | 0 | 1111111111111111 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111111111 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000000 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 1 | 0 | 1 | 1111111111111111 |
|
||||
| 0101101110100000 | 0001111011010010 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 |
|
||||
| 0101101110100000 | 0001111011010010 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 |
|
||||
| 0101101110100000 | 0001111011010010 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 0 | 0 | 0101101110100000 |
|
||||
| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 0 | 0 | 0001111011010010 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 0 | 1 | 1010010001011111 |
|
||||
| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 0 | 1 | 1110000100101101 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 1 | 1 | 1010010001100000 |
|
||||
| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 1 | 1 | 1110000100101110 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 1 | 1 | 1 | 1 | 1 | 0101101110100001 |
|
||||
| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 1 | 1 | 1 | 0001111011010011 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 0 | 1 | 1 | 1 | 0 | 0101101110011111 |
|
||||
| 0101101110100000 | 0001111011010010 | 1 | 1 | 0 | 0 | 1 | 0 | 0001111011010001 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 0 | 1 | 0 | 0111101001110010 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 1 | 0 | 0 | 1 | 1 | 0011110011001110 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 1 | 1 | 1 | 1100001100110010 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 0 | 0 | 0 | 0 | 0 | 0001101010000000 |
|
||||
| 0101101110100000 | 0001111011010010 | 0 | 1 | 0 | 1 | 0 | 1 | 0101111111110010 |
|
||||
344
02/ALU-basic.tst
Normal file
344
02/ALU-basic.tst
Normal file
@@ -0,0 +1,344 @@
|
||||
// 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/2/ALU-basic.tst
|
||||
|
||||
// Tests the basic version of the ALU chip.
|
||||
// DOES NOT replace the final test provided by ALU.tst.
|
||||
// Specifically: Tests the ALU logic that computes the 'out' output;
|
||||
// The 'zr' and 'ng' output bits are ignored.
|
||||
|
||||
load ALU.hdl,
|
||||
output-file ALU-basic.out,
|
||||
compare-to ALU-basic.cmp,
|
||||
output-list x%B1.16.1 y%B1.16.1 zx nx zy ny f no out%B1.16.1;
|
||||
|
||||
set x %B0000000000000000,
|
||||
set y %B1111111111111111,
|
||||
|
||||
set zx 1,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set x %B101101110100000,
|
||||
set y %B001111011010010,
|
||||
|
||||
set zx 1,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
37
02/ALU.cmp
Normal file
37
02/ALU.cmp
Normal file
@@ -0,0 +1,37 @@
|
||||
| x | y |zx |nx |zy |ny | f |no | out |zr |ng |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 | 1 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000000000 | 1 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 0 | 1111111111111111 | 0 | 1 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111111111 | 0 | 1 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 0 | 1 | 0000000000000000 | 1 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 1 | 0000000000000000 | 1 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 | 0 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000000 | 1 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 1 | 1 | 1 | 0 | 1111111111111111 | 0 | 1 |
|
||||
| 0000000000000000 | 1111111111111111 | 1 | 1 | 0 | 0 | 1 | 0 | 1111111111111110 | 0 | 1 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000000001 | 0 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111111111 | 0 | 1 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000000 | 1 | 0 |
|
||||
| 0000000000000000 | 1111111111111111 | 0 | 1 | 0 | 1 | 0 | 1 | 1111111111111111 | 0 | 1 |
|
||||
| 0000000000010001 | 0000000000000011 | 1 | 0 | 1 | 0 | 1 | 0 | 0000000000000000 | 1 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 1 | 1 | 1 | 1 | 1 | 1 | 0000000000000001 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 1 | 1 | 1 | 0 | 1 | 0 | 1111111111111111 | 0 | 1 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 0 | 0 | 0000000000010001 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 0 | 0 | 0000000000000011 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 0 | 1 | 1111111111101110 | 0 | 1 |
|
||||
| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 0 | 1 | 1111111111111100 | 0 | 1 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 1 | 1 | 1111111111101111 | 0 | 1 |
|
||||
| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 1 | 1 | 1111111111111101 | 0 | 1 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 1 | 1 | 1 | 1 | 1 | 0000000000010010 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 1 | 1 | 1 | 0000000000000100 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 0 | 1 | 1 | 1 | 0 | 0000000000010000 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 1 | 1 | 0 | 0 | 1 | 0 | 0000000000000010 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 0 | 1 | 0 | 0000000000010100 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 1 | 0 | 0 | 1 | 1 | 0000000000001110 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 1 | 1 | 1 | 1111111111110010 | 0 | 1 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000000000001 | 0 | 0 |
|
||||
| 0000000000010001 | 0000000000000011 | 0 | 1 | 0 | 1 | 0 | 1 | 0000000000010011 | 0 | 0 |
|
||||
45
02/ALU.hdl
Normal file
45
02/ALU.hdl
Normal file
@@ -0,0 +1,45 @@
|
||||
// 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/2/ALU.hdl
|
||||
/**
|
||||
* ALU (Arithmetic Logic Unit):
|
||||
* Computes out = one of the following functions:
|
||||
* 0, 1, -1,
|
||||
* x, y, !x, !y, -x, -y,
|
||||
* x + 1, y + 1, x - 1, y - 1,
|
||||
* x + y, x - y, y - x,
|
||||
* x & y, x | y
|
||||
* on the 16-bit inputs x, y,
|
||||
* according to the input bits zx, nx, zy, ny, f, no.
|
||||
* In addition, computes the two output bits:
|
||||
* if (out == 0) zr = 1, else zr = 0
|
||||
* if (out < 0) ng = 1, else ng = 0
|
||||
*/
|
||||
// Implementation: Manipulates the x and y inputs
|
||||
// and operates on the resulting values, as follows:
|
||||
// if (zx == 1) sets x = 0 // 16-bit constant
|
||||
// if (nx == 1) sets x = !x // bitwise not
|
||||
// if (zy == 1) sets y = 0 // 16-bit constant
|
||||
// if (ny == 1) sets y = !y // bitwise not
|
||||
// if (f == 1) sets out = x + y // integer 2's complement addition
|
||||
// if (f == 0) sets out = x & y // bitwise and
|
||||
// if (no == 1) sets out = !out // bitwise not
|
||||
|
||||
CHIP ALU {
|
||||
IN
|
||||
x[16], y[16], // 16-bit inputs
|
||||
zx, // zero the x input?
|
||||
nx, // negate the x input?
|
||||
zy, // zero the y input?
|
||||
ny, // negate the y input?
|
||||
f, // compute (out = x + y) or (out = x & y)?
|
||||
no; // negate the out output?
|
||||
OUT
|
||||
out[16], // 16-bit output
|
||||
zr, // if (out == 0) equals 1, else 0
|
||||
ng; // if (out < 0) equals 1, else 0
|
||||
|
||||
PARTS:
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
375
02/ALU.tst
Normal file
375
02/ALU.tst
Normal file
@@ -0,0 +1,375 @@
|
||||
// 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/2/ALU.tst
|
||||
|
||||
load ALU.hdl,
|
||||
output-file ALU.out,
|
||||
compare-to ALU.cmp,
|
||||
output-list x%B1.16.1 y%B1.16.1 zx nx zy ny f no out%B1.16.1 zr ng;
|
||||
|
||||
set x %B0000000000000000, // x = 0
|
||||
set y %B1111111111111111; // y = -1
|
||||
|
||||
// Compute 0
|
||||
set zx 1,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute 1
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute -1
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute y
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute !x
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute !y
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute -x
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute -y
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x + 1
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute y + 1
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x - 1
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute y - 1
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x + y
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x - y
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute y - x
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x & y
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x | y
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set x %B000000000010001, // x = 17
|
||||
set y %B000000000000011; // y = 3
|
||||
|
||||
// Compute 0
|
||||
set zx 1,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute 1
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute -1
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute y
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute !x
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute !y
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute -x
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute -y
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x + 1
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute y + 1
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x - 1
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 1,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute y - 1
|
||||
set zx 1,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x + y
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x - y
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute y - x
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 1,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x & y
|
||||
set zx 0,
|
||||
set nx 0,
|
||||
set zy 0,
|
||||
set ny 0,
|
||||
set f 0,
|
||||
set no 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
// Compute x | y
|
||||
set zx 0,
|
||||
set nx 1,
|
||||
set zy 0,
|
||||
set ny 1,
|
||||
set f 0,
|
||||
set no 1,
|
||||
eval,
|
||||
output;
|
||||
7
02/Add16.cmp
Normal file
7
02/Add16.cmp
Normal file
@@ -0,0 +1,7 @@
|
||||
| a | b | out |
|
||||
| 0000000000000000 | 0000000000000000 | 0000000000000000 |
|
||||
| 0000000000000000 | 1111111111111111 | 1111111111111111 |
|
||||
| 1111111111111111 | 1111111111111111 | 1111111111111110 |
|
||||
| 1010101010101010 | 0101010101010101 | 1111111111111111 |
|
||||
| 0011110011000011 | 0000111111110000 | 0100110010110011 |
|
||||
| 0001001000110100 | 1001100001110110 | 1010101010101010 |
|
||||
15
02/Add16.hdl
Normal file
15
02/Add16.hdl
Normal file
@@ -0,0 +1,15 @@
|
||||
// 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/2/Add16.hdl
|
||||
/**
|
||||
* 16-bit adder: Adds two 16-bit two's complement values.
|
||||
* The most significant carry bit is ignored.
|
||||
*/
|
||||
CHIP Add16 {
|
||||
IN a[16], b[16];
|
||||
OUT out[16];
|
||||
|
||||
PARTS:
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
39
02/Add16.tst
Normal file
39
02/Add16.tst
Normal file
@@ -0,0 +1,39 @@
|
||||
// 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/2/Add16.tst
|
||||
|
||||
load Add16.hdl,
|
||||
output-file Add16.out,
|
||||
compare-to Add16.cmp,
|
||||
output-list a%B1.16.1 b%B1.16.1 out%B1.16.1;
|
||||
|
||||
set a %B0000000000000000,
|
||||
set b %B0000000000000000,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a %B0000000000000000,
|
||||
set b %B1111111111111111,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a %B1111111111111111,
|
||||
set b %B1111111111111111,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a %B1010101010101010,
|
||||
set b %B0101010101010101,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a %B0011110011000011,
|
||||
set b %B0000111111110000,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a %B0001001000110100,
|
||||
set b %B1001100001110110,
|
||||
eval,
|
||||
output;
|
||||
9
02/FullAdder.cmp
Normal file
9
02/FullAdder.cmp
Normal file
@@ -0,0 +1,9 @@
|
||||
| a | b | c |sum|carry|
|
||||
| 0 | 0 | 0 | 0 | 0 |
|
||||
| 0 | 0 | 1 | 1 | 0 |
|
||||
| 0 | 1 | 0 | 1 | 0 |
|
||||
| 0 | 1 | 1 | 0 | 1 |
|
||||
| 1 | 0 | 0 | 1 | 0 |
|
||||
| 1 | 0 | 1 | 0 | 1 |
|
||||
| 1 | 1 | 0 | 0 | 1 |
|
||||
| 1 | 1 | 1 | 1 | 1 |
|
||||
15
02/FullAdder.hdl
Normal file
15
02/FullAdder.hdl
Normal file
@@ -0,0 +1,15 @@
|
||||
// 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/2/FullAdder.hdl
|
||||
/**
|
||||
* Computes the sum of three bits.
|
||||
*/
|
||||
CHIP FullAdder {
|
||||
IN a, b, c; // 1-bit inputs
|
||||
OUT sum, // Right bit of a + b + c
|
||||
carry; // Left bit of a + b + c
|
||||
|
||||
PARTS:
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
47
02/FullAdder.tst
Normal file
47
02/FullAdder.tst
Normal file
@@ -0,0 +1,47 @@
|
||||
// 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/2/FullAdder.tst
|
||||
|
||||
load FullAdder.hdl,
|
||||
output-file FullAdder.out,
|
||||
compare-to FullAdder.cmp,
|
||||
output-list a b c sum carry%B2.1.2;
|
||||
|
||||
set a 0,
|
||||
set b 0,
|
||||
set c 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set c 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set b 1,
|
||||
set c 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set c 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a 1,
|
||||
set b 0,
|
||||
set c 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set c 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set b 1,
|
||||
set c 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set c 1,
|
||||
eval,
|
||||
output;
|
||||
5
02/HalfAdder.cmp
Normal file
5
02/HalfAdder.cmp
Normal file
@@ -0,0 +1,5 @@
|
||||
| a | b |sum|car|
|
||||
| 0 | 0 | 0 | 0 |
|
||||
| 0 | 1 | 1 | 0 |
|
||||
| 1 | 0 | 1 | 0 |
|
||||
| 1 | 1 | 0 | 1 |
|
||||
15
02/HalfAdder.hdl
Normal file
15
02/HalfAdder.hdl
Normal file
@@ -0,0 +1,15 @@
|
||||
// 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/2/HalfAdder.hdl
|
||||
/**
|
||||
* Computes the sum of two bits.
|
||||
*/
|
||||
CHIP HalfAdder {
|
||||
IN a, b; // 1-bit inputs
|
||||
OUT sum, // Right bit of a + b
|
||||
carry; // Left bit of a + b
|
||||
|
||||
PARTS:
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
29
02/HalfAdder.tst
Normal file
29
02/HalfAdder.tst
Normal file
@@ -0,0 +1,29 @@
|
||||
// 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/2/HalfAdder.tst
|
||||
|
||||
load HalfAdder.hdl,
|
||||
output-file HalfAdder.out,
|
||||
compare-to HalfAdder.cmp,
|
||||
output-list a b sum carry;
|
||||
|
||||
set a 0,
|
||||
set b 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a 0,
|
||||
set b 1,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a 1,
|
||||
set b 0,
|
||||
eval,
|
||||
output;
|
||||
|
||||
set a 1,
|
||||
set b 1,
|
||||
eval,
|
||||
output;
|
||||
5
02/Inc16.cmp
Normal file
5
02/Inc16.cmp
Normal file
@@ -0,0 +1,5 @@
|
||||
| in | out |
|
||||
| 0000000000000000 | 0000000000000001 |
|
||||
| 1111111111111111 | 0000000000000000 |
|
||||
| 0000000000000101 | 0000000000000110 |
|
||||
| 1111111111111011 | 1111111111111100 |
|
||||
15
02/Inc16.hdl
Normal file
15
02/Inc16.hdl
Normal file
@@ -0,0 +1,15 @@
|
||||
// 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/2/Inc16.hdl
|
||||
/**
|
||||
* 16-bit incrementer:
|
||||
* out = in + 1
|
||||
*/
|
||||
CHIP Inc16 {
|
||||
IN in[16];
|
||||
OUT out[16];
|
||||
|
||||
PARTS:
|
||||
//// Replace this comment with your code.
|
||||
}
|
||||
25
02/Inc16.tst
Normal file
25
02/Inc16.tst
Normal file
@@ -0,0 +1,25 @@
|
||||
// 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/2/Inc16.tst
|
||||
|
||||
load Inc16.hdl,
|
||||
output-file Inc16.out,
|
||||
compare-to Inc16.cmp,
|
||||
output-list in%B1.16.1 out%B1.16.1;
|
||||
|
||||
set in %B0000000000000000, // in = 0
|
||||
eval,
|
||||
output;
|
||||
|
||||
set in %B1111111111111111, // in = -1
|
||||
eval,
|
||||
output;
|
||||
|
||||
set in %B0000000000000101, // in = 5
|
||||
eval,
|
||||
output;
|
||||
|
||||
set in %B1111111111111011, // in = -5
|
||||
eval,
|
||||
output;
|
||||
Reference in New Issue
Block a user