Организация многомодульных программ
RET
CALL
Дальний вызов и возврат
RET
CALL ссылка
Ближний вызов и возврат
1. IP ® стек
2. ссылка (хххх) ® IP
*IP – адрес следующей команды
стек ® IP
1. CS ® стек
2. IP ® стек
3. Смещение ® IP [XXXX ® IP]
4. Начало сегмента ® CS [YYYY ® CS]
1. Стек ® IP
2. Стек ® CS
Коды команд для внутрисегментного и межсегментного вызовов различны. Транслятор определяет автоматически код команды по описанию вызываемой процедуры и формирует коды команд в соответствии с типом процедуры.
При вызове процедуры необходимо решать две проблемы:
1. Вызов и возврат из процедуры.
2. Передача данных между процедурами.
Решение первой проблемы было рассмотрено ранее, решение второй проблемы может осуществляться тремя способами:
1. Передача данных через регистры.
2. Передача данных через механизм внешних ссылок и внешних переменных.
3. Передача данных через стек.