装配总和等于 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,这是一个无符号溢出,因此是标志。
我发现如果我在汇编中将两个数字相加并且它们的和为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,这是一个无符号溢出,因此是标志。