Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 减去16位2';汇编语言中的补语数_Assembly_Nand2tetris - Fatal编程技术网

Assembly 减去16位2';汇编语言中的补语数

Assembly 减去16位2';汇编语言中的补语数,assembly,nand2tetris,Assembly,Nand2tetris,我正在尝试构建一个计算机芯片,类似于NAND2TTERIS上的Add16芯片,它将16减去而不是相加。然而,我不断地遇到错误的结果。有人能帮我吗 Chip Sub16 { IN a[16], b[16]; OUT out[16]; PARTS: Not16(in=b, out=subB); Add16(a=a, b=notB, out=out); } 我也尝试过这个版本: Not(in=b[0], out=out0); FullAdder(a=a[0], b=out0, c=false, s

我正在尝试构建一个计算机芯片,类似于NAND2TTERIS上的Add16芯片,它将16减去而不是相加。然而,我不断地遇到错误的结果。有人能帮我吗

Chip Sub16 {
IN a[16], b[16];
OUT out[16];

PARTS:
Not16(in=b, out=subB);
Add16(a=a, b=notB, out=out);
}
我也尝试过这个版本:

Not(in=b[0], out=out0);
FullAdder(a=a[0], b=out0, c=false, sum=out[0], carry=c1);
Not(in=b[1], out=out1);
FullAdder(a=a[1], b=out1, c=c1, sum=out[1], carry=c2);

以此类推,每一步的数字都会越来越大,上升到16。预期结果如下:


任何能给予的帮助都将不胜感激

a-B有几个公式

一个是A+~B+1

另一种是(~A+B)。后者是HACK ALU使用的(参见)

对于专用功能单元,第一个公式更好,因为您可以免费获得+1”;您只需要一个稍加修改的16位加法器和一个16位not单元。我会让你去弄清楚是怎么做的


玩得开心

可以单击该链接以转到图像。不要通过删除尝试代码来破坏您的问题。