我寫了一個簡單的彙編函數sum64,它添加了ecx:ebx + edx:eax,它的作品正確地使用了正數,但沒有使用負數。爲什麼設置進位標誌?
sum64:
add ebx,eax
adc ecx,edx
ret
例子:
edx = 1d1h
eax = a94a2003
ebx = FFFFFFFF
ecx = 00000000
正確的結果是1D1A94A2002h但我的函數返回ECX:EBX 1d2h:a94a2002,這是不正確,因爲第一個 「添加」 設置進,爲什麼? 如何解決這個問題?
謝謝你的答案。
什麼是負數?輸入'ecx:ebx'和'edx:eax'都不會被解釋爲跨兩個寄存器的二進制補碼64位數字分割。你是不是要測試'FFFFFFFF:FFFFFFFF'而不是'00000000:FFFFFFFF'? – 2012-01-14 11:43:28
這是正確的,我忘了,謝謝解決方案 – flatronka 2012-01-14 11:48:12
請寫一個答案,我接受作爲解決方案 – flatronka 2012-01-14 11:48:46