装配总和等于 0 集 CF 等于 1

Assembly sum equals 0 set CF equals 1

我发现如果我在汇编中将两个数字相加并且它们的和为0,则CF设置为1。在其他情况下不是。我不明白为什么。有什么想法吗?示例:

        __asm {
        mov eax, 0
        mov ebx, 5
        mov edx, -5
        add ebx, edx
        adc eax, 0
    }

结果 1

我认为它自己回答,只是一个二进制补码...进位标志不仅仅是告诉你是否有无符号溢出。

 00000101
+11111011
===========

111111110       
 00000101
+11111011
===========
 00000000

减法运算结果相同 5 - 5:

111111111       
 00000101
+11111010
===========
 00000000

你可以看到在这两种情况下都没有签名溢出

UNSIGNED 数学虽然这是 0xFB + 0x05 = 0x100,这是一个无符号溢出,因此是标志。