
Сообщение от
Patron
Полагаю, что это ошибочное ощущение.
Дело в том, что и C, и V - это "циклические" флаги, поэтому механизмы их "наследования" в цепочных операциях не могут быть разными.
Т.е. если "суммарный" признак C двух операций можно и нужно определять по OR - значит и признак V - тоже.
Ну тогда вот вам пример.
Код:
Складываем два числа 0x7FFF.FFFF и 0x8001.0001
0x8001.0001 - это -0x7FFEFFFF
Понятно, что в сумме они нам дадут 0x0001.0000
Где флаг V = 0, т.к. арифметического переполнения не было.
Теперь вычисляем каскадно.
ADD L1,L2 L2 = 0xFFFF + 0x0001 = 0x0000
ADC H2 H2 = 0x7FFF + C = 0x8000 (V установлен)
ADD H1,H2 H2 = 0x8000 + 0x8001 = 0x0001 (V установлен)
В итоге, в обоих двух последних каскадах получили флаги V, хотя финально он должен быть сброшен.