Системное программное обеспечение. Рощин А.В. - 32 стр.

UptoLike

Составители: 

32
Команды безусловного перехода
Команда безусловного перехода передает управление указанной
команде в том же сегменте (внутрисегментный переход) или за его
пределы (межсегментный переход). Внутрисегментный переход обычно
называется ближним (NEAR), а межсегментныйдальним (FAR).
CALL (имя процедуры)
Команда CALL передает управление внешней процедуре,
предварительно сохранив в стеке информацию для последующего возврата
в вызывающую процедуру при
помощи команды RET. Команда CALL
имеет различную форму записи в зависимости от типа вызываемой
процедуры (дальняя или ближняя). Команда RET, которой завершается
вызываемая процедура, должна иметь тот же тип (дальний или ближний),
что и вызывающая процедуру команда CALL. Адрес вызываемой
процедуры может быть задан непосредственно в команде CALL, в памяти
или в регистре.
При внутрисегментной непосредственной
команде CALL в стеке
сохраняется текущее содержимое счетчика команд (IP), который указывает
на первый байт следующей за CALL командой. Относительное смещение
вызываемой процедуры содержится в самой команде (диапазон плюс
минус 32К).
При внутрисегментной косвенной команде CALL в стеке сохраняется
текущее содержимое счетчика команд (IP), который указывает на первый
байт следующей за CALL командой. Относительное смещение вызываемой
процедуры может содержаться в слове памяти или в 16-разрядном
регистре.
При межсегментной непосредственной команде CALL в стеке
сохраняется текущее содержимое регистра CS, в регистр CS помещается
значение сегмента из команды CALL, затем в стеке сохраняется текущее
содержимое регистра IP, и в него записывается значение смещения из
команды.
При межсегментной косвенной команде CALL происходит то же, что
описано
выше, но значения сегмента и смещения берутся из памяти или из
регистров, причем первое слово содержит смещение, а второесегмент
вызываемой процедуры.
RET (необязательное значение)
Команда RET возвращает управление из вызванной процедуры
команде, следующей за командой CALL. Если возврат осуществляется из
ближней процедуры, возврат является внутрисегментным (содержимое
регистра CS остается неизменным). При возврате
из дальней процедуры
возврат является межсегментным (из стека восстанавливаются значения CS
                                  32



     Команды безусловного перехода

     Команда безусловного перехода передает управление указанной
команде в том же сегменте (внутрисегментный переход) или за его
пределы (межсегментный переход). Внутрисегментный переход обычно
называется ближним (NEAR), а межсегментный – дальним (FAR).
     CALL (имя процедуры)
      Команда CALL передает управление внешней процедуре,
предварительно сохранив в стеке информацию для последующего возврата
в вызывающую процедуру при помощи команды RET. Команда CALL
имеет различную форму записи в зависимости от типа вызываемой
процедуры (дальняя или ближняя). Команда RET, которой завершается
вызываемая процедура, должна иметь тот же тип (дальний или ближний),
что и вызывающая процедуру команда CALL. Адрес вызываемой
процедуры может быть задан непосредственно в команде CALL, в памяти
или в регистре.
      При внутрисегментной непосредственной команде CALL в стеке
сохраняется текущее содержимое счетчика команд (IP), который указывает
на первый байт следующей за CALL командой. Относительное смещение
вызываемой процедуры содержится в самой команде (диапазон плюс –
минус 32К).
      При внутрисегментной косвенной команде CALL в стеке сохраняется
текущее содержимое счетчика команд (IP), который указывает на первый
байт следующей за CALL командой. Относительное смещение вызываемой
процедуры может содержаться в слове памяти или в 16-разрядном
регистре.
      При межсегментной непосредственной команде CALL в стеке
сохраняется текущее содержимое регистра CS, в регистр CS помещается
значение сегмента из команды CALL, затем в стеке сохраняется текущее
содержимое регистра IP, и в него записывается значение смещения из
команды.
      При межсегментной косвенной команде CALL происходит то же, что
описано выше, но значения сегмента и смещения берутся из памяти или из
регистров, причем первое слово содержит смещение, а второе – сегмент
вызываемой процедуры.
     RET (необязательное значение)
     Команда RET возвращает управление из вызванной процедуры
команде, следующей за командой CALL. Если возврат осуществляется из
ближней процедуры, возврат является внутрисегментным (содержимое
регистра CS остается неизменным). При возврате из дальней процедуры
возврат является межсегментным (из стека восстанавливаются значения CS