Команды перехода модифицируют указатель команды IP, и, возможно,
регистр сегмента кодов CS. Эти регистры показывают, какая
следующая команда должна быть выполнена. Команда перехода является
специальным случаем пересылки MOV данных в регистр или пару
регистров; и некоторые ЭВМ действительно выполняют команду перехода
именно таким способом. Однако способы загрузки пары регистров
CS:IP в микропроцессоре 8088 во многом отличаются от способов,
используемых для других регистров.
Прежде всего мы должны ввести некоторые определения. Если
команда перехода изменяет только регистр IP, это близкий переход
(NEAR=переход), так как переход происходит внутри сегмента. Если
переход изменяет регистр CS, это далекий FAR=переход.
Аттрибуты NEAR и FAR используются при работе ассемблера. Любая
программная метка в программе на языке ассемблера имеет атрибут
либо NEAR, либо FAR, так же, как данные имеют атрибуты BYTE или
WORD. В некоторых примерах этой главы имеются процедуры, которые
используют атрибут NEAR в операторе PROC. Это означает, что метка,
связанная с оператором PROC (имя процедуры) имеет атрибут NEAR.
Ассемблер использует эту информацию для того, чтобы определить,
какой тип команды перехода или вызова породить при переходе к этой
метке. Поскольку большинство процедур - подпрограммы, атрибут NEAR
или FAR оператора PROC также определяет тип порождаемой команды
возврата. Вызов FAR=процедуры сохраняет значения как регистра CS,
так и регистра IP, тогда как вызов NEAR=процедуры оставляет в стеке
только значение регистра IP. Команда возврата должна учитывать,
какой тип вызова юыл сделан, чтобы подпрограмма могла вернуться к
правильному месту.