Assembly 减去16位2';汇编语言中的补语数
我正在尝试构建一个计算机芯片,类似于NAND2TTERIS上的Add16芯片,它将16减去而不是相加。然而,我不断地遇到错误的结果。有人能帮我吗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
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单元。我会让你去弄清楚是怎么做的
玩得开心 可以单击该链接以转到图像。不要通过删除尝试代码来破坏您的问题。