我发现如果在程序集中添加两个数字并且它们的总和为0,则CF设置为等于1。在其他情况下没有。我不明白为什么。有什么想法吗?例如:
__asm {
mov eax, 0
mov ebx, 5
mov edx, -5
add ebx, edx
adc eax, 0
}
结果1
答案 0 :(得分:2)
我认为它回答了自己,只是一个二重补充的东西......进位标志不仅仅告诉你是否有无符号溢出。
00000101
+11111011
===========
111111110
00000101
+11111011
===========
00000000
减法算出相同的5 - 5:
111111111
00000101
+11111010
===========
00000000
你可以看到两种情况都没有签名溢出
UNSIGNED数学虽然这是0xFB + 0x05 = 0x100,这是一个无符号溢出,因此是标志。