假设 AX=8FFE 和 BX= 0FFF
现在如果我们写
Cmp ax,bx
现在将发生的情况是,将从目标 (ax) 中减去源 (bx),并更新相应的标志。由于计算机以 2 的补码形式表示每个数字,因此 8FFE 是某个数字的 2 的补码,同样 0FFF 是某个数字的 2 的补码。
与 2 的补码一样,减法是通过加法实现的,因此我们通过将这两个数字转换为二进制来相加。
8FFE----------> 1000 1111 1111 1110
0FFF----------> 0000 1111 1111 1111
--------------------------------
1001 1111 1111 1101
现在这是十六进制 9FFD 的结果。
如您所见,没有发生溢出,结果的符号位为 1。
问题:想象一下,标志标志应该被设置,溢出标志
应该保持为0,我在调试器中检查了这个,但我发现它的相反
,标志标志保持0,溢出标志为1。现在请告诉我为什么
会这样?