为什么 Donald Knuths 在 MIX 上编写的第一个程序中的 ADD 命令将溢出设置为 ON?

Why does the ADD command in Donald Knuths number one program written on MIX set the overflow to ON?

程序如下:

STZ 1
ENNX 1
STX 1(0:1)
SLAX 1
ENNA 1
INCX 1
ENT1 1
SRC 1
ADD 1
DEC1 -1
STZ 1
CMPA 1
MOVE -1,1(1)
NUM 1
CHAR 1
HLT 1

目前我所知道的:

第一个命令将内存 1 设置为零 - ADD 函数应该简单地将零添加到寄存器 A。

如果 Mem1 设置为零,这如何将溢出切换设置为打开?

REF:计算机编程艺术第 1 卷第 142 页问题 18

该程序似乎使用位置 1 作为数据,因此代码本身应该位于该位置之后的某个位置,作为暗中刺探,比如从 0x10 开始。如果代码位于从 0(或 1)开始的位置,那么它会自行覆盖,产生不良结果。

较旧的计算机,如 PDP-8,会从 0 开始程序计数器,但也会像那样使用较低的数据(在零页上),所以你会看到程序包含第一个指令在 0 是 JUMP到实际代码开始,然后是数据,然后是实际代码。