Ассемблер: Относительный прыжок - PullRequest
3 голосов
/ 24 июля 2010

Может кто-нибудь объяснить по-английски, что такое относительный скачок в ассемблере?

Ответы [ 3 ]

10 голосов
/ 24 июля 2010

Это код OP, операнд которого заставит выполнение перейти к адресу относительно текущего адреса.Значением операнда является смещение .

Предположим, что команда относительного перехода содержится в адресе 0x0005 и имеет операнд 3. Затем выполнение перейдет к адресу 0x0008.Если операнд -3, выполнение перейдет к адресу 0x0002.

3 голосов
/ 24 июля 2010

Относительный переход отличается от абсолютного или длинного перехода тем, что инструкция не кодирует весь целевой адрес, на который будет продолжаться выполнение.

Скорее, он кодирует часть адреса или смещение от текущего указателя инструкции, в зависимости от архитектуры. Это экономит место в памяти программы, и в нетранслируемых архитектурах она также будет выполняться немного быстрее. Ограничением является то, что вы можете прыгать только на короткие расстояния.

Для текущих относительных переходов инструкций диапазон часто является смещением со знаком размера хранилища, используемого для кодирования адреса. Например, если используется 8-битный код операции и 8-битное смещение, то диапазон перехода обычно составляет от -126 до +129 от инструкции перехода. Асимметрия связана с тем, что смещение добавляется к указателю инструкции, который во время добавления указывает на следующую инструкцию вместо текущей.

1 голос
/ 25 июля 2010

Перейти к адресу относительно (относительно) текущего адреса (адрес этой инструкции относительного перехода).

Вам необходимо указать "на сколько?" часть в операнде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...