Команда CALL


Лучшие книги по Ассемблеру Лучшие книги по Ассемблеру

Сделал подборку не новых, но проверенных книг по программированию на языке ассемблера. Если вы также как и я любите погружаться на низкий уровень, в те закоулки мира программирования, куда не всем путь открыт, то посмотрите. Возможно, что-то вам понравится. Подробнее...

Команда CALL в Ассемблере вызывает процедуру. Синтаксис:

CALL ИМЯ

Здесь ИМЯ может быть одним из следующих:

  1. Имя процедуры
  2. Метка
  3. Переменная
  4. Регистр
  5. Адрес (непосредственное значение)

Флаги при выполнении команды CALL не изменяются.

Инструкция CALL выполняет следующие действия:

  • Передаёт управление процедуре.
  • Записывает в стек адрес следующей команды (из регистра IP в 16-разрядном режиме или EIP - в 32-разрядном).
  • В случае дальнего вызова регистр CS также записывается в стек.

Если вместо имени процедуры используется адрес, то он может быть записан в формате СЕГМЕНТ:СМЕЩЕНИЕ. Если в качестве адреса указать только смещение, то считается, что адрес расположен в том же сегменте, что и команда CALL (при этом выполняется ближний вызов процедуры).

Как уже было сказано, команда CALL передаёт управление по адресу, который передаётся в команду в качестве параметра. При этом процессор начинает выполнять команду, расположенную по этому адресу.

Если операндом команды CALL является регистр или переменная, то её значение рассматривается как абсолютное смещение.

Если операнд - это ближняя метка в программе, то ассемблер указывает её относительное смещение.

Пример использования команды CALL см. здесь.

Ну и напоследок об имени команды. Слово CALL переводится как “вызов” или “вызывать, вызвать”. То есть команда

CALL Х

по-русски будет звучать как “вызвать Х”, где Х - это, как правило, имя процедуры. Хотя, как вы теперь знаете, на самом деле эта команда не вызывает процедуру, а передаёт управление той команде, которая находится по указанному адресу Х.



Первые шаги в программирование Первые шаги в программирование

Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su