零标志位记的是什么
ALU 每算完一次都会顺手记几个标志位。其中零标志(Z)记的是【0】。
一根选择线,四种运算
运行下面这段程序,填写它打印出来的结果。 def alu(op, a, b): if op == 0: return (a + b) & 255 if op == 1: return
减法真的就是加法
运行下面这段程序,填写它打印出来的结果。 a, b = 72, 56 neg = (~b + 1) & 255 print(str((a + neg) & 255) + "/" + str(a - b))
自己写:一个四功能 ALU
补全 alu:op 为 0 加、1 减、2 与、3 或,算术结果一律截成八位。
自己写:顺手记下标志位
补全 flags:算一次加法,交出结果、零标志、进位标志三样。零标志看结果是不是 0,进位标志看有没有超出八位。
减法通路对账
用四组数,把「取反加一再相加」和 Python 的减号逐一对比,再打出最后一组的结果。
为什么先用软件模拟
真做一块电路板之前,先用代码把它模拟一遍,最实在的好处是【0】。
模拟时最容易忽略什么
用代码模拟电路时,最容易被忽略、又最容易出错的是【0】。
一张小网表跑出来是什么
运行下面这段程序,填写它打印出来的结果。 def AND(a, b): return a & b def OR(a, b): return a | b def NOT(a): return 1 - a
自己写:一张门函数表
把三种门放进一个字典,写一个 run 按名字调用它们。NOT 只有一个输入,要单独处理。