Я знаю, чтобы превратить число в негатив в сборке, мне нужно превратить его в дополнение к двум, добавив его.вычитание отрицательных чисел в сборке
Я сделал это, но мой результат по-прежнему неверен, может кто-нибудь объяснить мне, где я совершил ошибку?
Объект должен вычесть -val1 - val2 - val3
Вот основная часть моего кода
.data val1 dword 10000h val2 dword 40000h val3 dword 20000h finalVal dword ?
.Code главный PROC
mov eax,val1 ; start with 10000h
xor eax,val1 ; xor eax to make it almost negative
add eax,1h ; now add one to make it negative
sub eax,val2 ; subtract 40000h
sub eax,val3 ; subtract 20000h
mov finalVal,eax ; store the result (30000h)
call DumpRegs ; display the registers
exit
Конечным результатом должен быть EAX = FFF90000 , но в настоящее время мой выход равен EAX = FFFA0001
Обратите внимание, что я использую 32-разрядные номера и запускаю это на процессоре x86.
Спасибо за любую помощь
Спасибо за помощь, это сработало! – user3335607