|
|
|
|
Относительное размещение
Текущее относительное размещение иногда называют относительным PC (program counter) счетчиком программы, который вычисляет адрес пункта назначения
от текущего адреса и смещение. Для формирования адреса пункта назначения смещение добавляется к текущему размещению. В связи с тем, что полная операция
в целом не зависит от абсолютного расположения программного кода в памяти, результирующий адрес имеет независимое размещение. Если в памяти пересылается
целый блок программы, то созданный скорректированный адрес пункта назначения указывает на новое положение инструкции пункта назначения.
Этот способ вычисления адреса передачи используется во всех инструкциях условного перехода, во всех внутрисегментных (коротких или близких)
инструкциях JMP (безусловный переход) и во всех внутрисегментных (близких) инструкциях CALL (вызов процедуры). "Непосредственная" означает, что
инструкция (JMP или CALL) содержит смещение как непосредственные данные. Напротив, "косвенная" (непрямая) инструкция - это инструкция (JMP или CALL)
для адреса, содержащегося в 16-битовом регистре (только смещение), или для адреса, содержащегося в 16-битовой или 32-битовой ячейке памяти (смещение
или смещение и сегмент). В связи с тем, что прямые передачи управления не включают действительные адреса, то они могут быть размещены в памяти где
угодно и даже могут быть пересланы внутри сегмента, пока исходные инструкции (JMP и CALL) и программа пункта назначения пересылаются
совместно.
|
|