Я пишу простую функцию ассемблера sum64, которая добавляет ecx: ebx + edx: eax, она работает правильно с положительным числом, но не с отрицательным.
sum64:
add ebx,eax
adc ecx,edx
ret
Пример:
edx = 1d1h
eax = a94a2003
ebx = FFFFFFFF
ecx = 00000000
Правильный результат - 1D1A94A2002h, но моя функция возвращает ecx: 1d2h ebx: a94a2002, это неверно, потому что первое «добавление» установило перенос, почему?Как это решить?
Спасибо за ответы.