Сумма сборки равна 0, набор CF равен 1 - PullRequest
0 голосов
/ 01 мая 2018

Я узнал, если я добавлю два числа в сборку, и их сумма равна 0, CF будет установлен равным единице. В других случаях нет. Я не понимаю почему. Есть идеи, пожалуйста? Пример:

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

результат 1

1 Ответ

0 голосов
/ 01 мая 2018

Я думаю, что он отвечает сам по себе, просто вдвойне ... Флаг переноса делает больше, чем просто говорит вам, если у вас переполнение без знака.

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

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

вычитание получается так же 5 - 5:

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

вы можете видеть, что в обоих случаях переполнение без подписи

UNSIGNED математика, хотя это 0xFB + 0x05 = 0x100, что является переполнением без знака, таким образом, флаг.

...