Понимание кодировки инструкций 8086
Я пытаюсь понять кодировку инструкций 8086. Несмотря на то, что я нашел общую инструкцию и громоздкую ссылку, я все еще не понимаю ее.
Не могли бы вы объяснить, как выполняются следующие "переводы" из байтовых данных?
Заранее спасибо!
48 -> dec ax
EB0D -> jmp short 0xf
642120 -> and [fs:bx+si],sp
2 ответа
Решение
Ваш дизассемблер показывает смещение JMP SHORT от начала инструкции, когда фактическое значение JMP SHORT отсчитывается от байта после инструкции. Может быть, вам нужен другой дизассемблер, который хорошо декодирует.
За (или этим) безусловным переходом следуют данные, либо реальные данные, либо данные выравнивания. Для 8086 2 или 4 - хорошее выравнивание, поэтому следующая инструкция может начинаться с 21 или 20 или выше.