|
Команды перехода модифицируют указатель
команды 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. Команда
возврата должна учитывать,
какой тип вызова юыл сделан, чтобы
подпрограмма могла вернуться к
правильному месту.
|