Одно небольшое дополнение к другому ответу здесь (что в противном случае правильно):
Ваш прыжок никогда не будет "вне диапазона".Конкретное кодирование и, следовательно, обманывают использование 32-битного, 16-битного или 8-битного смещения для любого относительного перехода, будет выполнено вашим ассемблером.Обычно это называется «подбор инструкций».В любом случае, при любом 32-битном значении «eip» всегда есть 32-битное смещение со знаком, которое при добавлении к «eip» будет равно любому произвольному 32-битному адресу.
Это означает, что вы можете перейти из любого местав программе, куда угодно, одним прыжком.
8-битные и 16-битные формы "jump / cc" просто позволяют вам делать это с меньшим количеством байтов в потоке команд.