Я предполагаю, что ваш вопрос относится к архитектуре x86; вы не указали в своем вопросе.
A SHORT
прыжок - относительный переход к определенному смещению от текущего указателя указателя. A LONG
jump использует большее значение смещения и поэтому может отскакивать дальше от текущего указателя инструкции. Оба этих типа перехода обычно равны относительной - то есть операнд является смещением от текущего указателя инструкции (хотя в источнике сборки вы обычно указываете целевую метку - тогда ассемблер или компоновщик вычисляет смещение). Ни один из них не перескакивает на другой сегмент кода, поэтому они являются «близкими» переходами.
FAR
скачка определяет как сегмент и смещение, которые являются как абсолютной в том смысле, что они определяют необходимый указатель сегмента кода и команд, а не смещение относительно указателя сегмента текущего кода/команды.
(Обратите внимание, что можно также совершить непрямой абсолютный прыжок, где вы указываете операнд, который содержит абсолютный адрес, к которому вы хотите перейти. В этом случае прыжок может быть как ближним, так и дальним - он может включать или не включать требуемый сегмент кода).
Если вы не указали расстояние «прыжок», то до ассемблера вы получите короткий, длинный или дальний прыжок. Большинство современных ассемблеров являются «двухпроходными» и, если возможно, будут использовать короткий прыжок, или длинный или дальний прыжок в противном случае - последний, только если потребуется.
См. wikipedia's entry on x86 memory segmentation, если вам нужна помощь в понимании того, что я подразумеваю под «сегментом».
См. this description of the x86 JMP instruction для получения полной информации о возможных режимах адресации команд JMP.
Полностью забыл выбрать ответ по этому вопросу. D'о. Спасибо за объяснение, это было полезно! – spoorlezer