Возврат из процедур

Адрес возврата в вызывающую программу хранится в стеке.

Команда RET [число] возвращает управление вызывающей программе.

Она считывает адрес возврата из вершины стека, загружает его в регистры CS и IP (теперь выполняться будет следующая за CALL команда в программе) адрес возврата при этом удаляется из стека(!), затем стек очищается на указанное число байт и выполняется переход по адресу возврата.

Команда RET соответствует команде RET 0

В зависимости от того, дальняя или ближняя была описана процедура, ассемблер формирует одну из возможных команд RET. В первом случае из стека извлекается два слова, которые загружаются в регистры CS и IP, во втором - одно слово в регистр IP.

Команды CALL и RET действуют согласованно, за соответствием между командами следит транслятор.

Необязательный параметр [число] задает значение, удаляемое из стека при возврате из процедуры - в байтах (use16) или в словах (use32)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: