Ollydbg: расширение знака с помощью Movsx

Знак Movsx расширяет регистр с помощью 1, верно?

Итак, почему в Ollydbg я получил это:

  • До: before
  • После: после

У меня должно быть FFFFFF65 вместо 00000065 в ECX нет?

Благодарю вас !


person Duke Nukem    schedule 12.11.2015    source источник
comment
Он расширяет бит знака, который является самым значащим битом. Это только 1 для отрицательных чисел.   -  person Jester    schedule 12.11.2015
comment
Операнд памяти src byte ptr ds:[429d5d] говорит ассемблеру, что вы собираетесь загрузить байт из ds:[429d5d]. Поскольку знак MOVSX расширяет операнд src, он будет смотреть на этот старший бит байта и реплицировать его через старшие биты (знак расширяет его). 0x65 MSB (самый старший бит) равен 0, поэтому он был дополнен знаком 0. Значение от 0x80 до 0xFF будет дополнено знаком со значением 1 до старших битов, потому что MSB в этом диапазоне равен 1. Если бы вы имели дело со СЛОВОМ PTR, тогда расширение знака будет основано на старшем бите 16-битного слова.   -  person Michael Petch    schedule 17.11.2015


Ответы (1)


Байт в ячейке памяти имеет значение 65h. Это положительное число, поэтому расширение заполнит 3 старших байта ECX нулями, что даст 00000065h .

person Fifoernik    schedule 12.11.2015