2013-10-13 9 views
-3

У меня есть небольшая проблема: Есть ли значение X, которое удовлетворяет этому уравнению и может поместиться в 32-битный регистр?Добавить отрицательные шестнадцатеричные числа

7A40B660+X=004023A0 

мне нужно сделать вызов на 004023A0 адрес (я контролировать регистр ESI):

.code:00401095 mov  eax, 7A40B660h 
.code:0040109A add  eax, [esi]  ; Add 
.code:0040109C call eax 

Все это шестнадцатеричные числа.

+1

Это зависит от того, какое изображение используется. Например, это 32-разрядные номера? –

+0

UPDATED вопрос;) – Alberto

ответ

1

Во-первых, давайте просто проблема:

7A40B660 + X = 004023A0

Давайте положим X сам по себе:

X = 004023A0 - 7A40B660

В 32-битном HEX, FFFFFFFF + 1 = 0 , И добавление нуля к числу не меняет его значения. Поэтому давайте добавим ноль в правой части:

X = FFFFFFFF + 1 + 004023A0 - 7A40B660

Переупорядочивание:

X = (FFFFFFFF - 7A40B660) + 1 + 004023A0

Теперь это легко решать. Ответ: 85FF6D40.

+0

Hi. Это не сработало. Я делаю это для решения ситуации ASM: http://pastebin.com/ZCbUwBf2 Я управляю ESI, и я хочу, чтобы результат команды добавления 004023A0. Еще раз спасибо! – Alberto

+0

См. Обновленный пост – Alberto

+0

Что вы подразумеваете под «это не работает»? Что именно вы делали и что произошло? Вы установили 'ESI' на адрес, содержащий значение' 85FF6D40'? Какое значение попало в «EAX»? –

Смежные вопросы