| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Возврат структуры из подпрограммы |
| Автор: Fantaz1 11.4.2011, 22:57 | ||
Помогите решить задачу! Мне надо написать процедуру которая заполняет структуру данными и возвращает эти значения. Структура имеет такие переменные:
Входные параметры процедуры - 2 переменные (адрес строки и количество символов в ней) Подскажите мне только начало функции и конец, как принять переменные и вернуть структуру из функции. И еще одно! Параметры передаются и возвращаются через стек! |
| Автор: iff 12.4.2011, 11:45 | ||||
То что параметры передаются через стек, это понятно, а вот то, что возвращается результат через стек - это странно. Обычно в языках высокого уровня при вызове подпрограммы, в стек помещаются адреса передаваемых данных (передача по ссылки) либо их значения (передача по значению). Функция возвращает результат в регистре AL, AX или EAX, возможно также в DX:AX. Конечно, результат можно передать через стек, но если объем возвращаемых данных больше объема передоваемых, то возникнут сложности. Их можно преодолеть, например создавая кадр стека основной программой и записывать туда передаваемые данные, и оставить место для возвращаемых. В вашем конкретном случае я бы поступил так: передал подпрограмме 3 значения: строку (по ссылке), её длинну (по значению) и структуру, которую нужно заполнить (по ссылке, т.е. передаётся адрес структуры, которую надо заполнить). Возвращать тогда не придётся ничего.
Вызов подпрограммы из основной осуществляется так:
|