Понимание кодировки инструкций 8086

1165
muffel

Я пытаюсь понять кодировку инструкций 8086. Несмотря на то, что я нашел общую инструкцию и громоздкую ссылку, я все еще не понимаю ее.

Не могли бы вы объяснить, как выполняются следующие «переводы» из байтовых данных?

Заранее спасибо!

48 -> dec ax  EB0D -> jmp short 0xf  642120 -> and [fs:bx+si],sp 
0
Почему бы вам не проверить вместо этого [официальные руководства от Intel] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)? Кодировка инструкций там прекрасно объясняется. m0skit0 12 лет назад 0
Я не знал их, спасибо! muffel 12 лет назад 0

2 ответа на вопрос

0
ZaB

Ваш дизассемблер показывает смещение JMP SHORT от начала инструкции, когда фактическое значение JMP SHORT отсчитывается от байта после инструкции. Может быть, вам нужен другой дизассемблер, который хорошо декодирует.

Возможно, вы могли бы порекомендовать один? uSlackr 12 лет назад 0
ИДА? OllyDbg? Визуальная студия? ZaB 12 лет назад 1
[NASM] (http://www.nasm.us/) m0skit0 12 лет назад 0
0
ott--

За (или этим) безусловным переходом следуют данные, либо реальные данные, либо данные выравнивания. Для 8086 2 или 4 - хорошее выравнивание, поэтому следующая инструкция может начинаться с 21 или 20 или выше.

Не для мелочей, но 64h не является префиксным байтом на 8086. По крайней мере, не так: http://www.electronicsandbooks.com/eab1/manual/Electronic%20Component%20Databook%20Datasheet/Brand/Intel/Databook/1979 % 20Intel% 20The% 208086% 20Family% 20Users% 20Manual% 20197910% 20 [760] .pdf стр. 273 Прошло 4 года, но все еще 8 лет назад 0

Похожие вопросы