装配总和等于0,设定CF等于1

时间:2018-05-01 18:04:12

标签: assembly x86 sum zero

我发现如果在程序集中添加两个数字并且它们的总和为0,则CF设置为等于1。在其他情况下没有。我不明白为什么。有什么想法吗?例如:

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

结果1

1 个答案:

答案 0 :(得分:2)

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

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

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

减法算出相同的5 - 5:

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

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

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