![]() |
|
|
![]()
|
|
| Fantaz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 16.1.2009 Репутация: нет Всего: нет |
Помогите решить задачу! Мне надо написать процедуру которая заполняет структуру данными и возвращает эти значения. Структура имеет такие переменные:
Входные параметры процедуры - 2 переменные (адрес строки и количество символов в ней) Подскажите мне только начало функции и конец, как принять переменные и вернуть структуру из функции. И еще одно! Параметры передаются и возвращаются через стек! Это сообщение отредактировал(а) Fantaz1 - 11.4.2011, 23:47 |
|||
|
||||
| iff |
|
||||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
То что параметры передаются через стек, это понятно, а вот то, что возвращается результат через стек - это странно. Обычно в языках высокого уровня при вызове подпрограммы, в стек помещаются адреса передаваемых данных (передача по ссылки) либо их значения (передача по значению). Функция возвращает результат в регистре AL, AX или EAX, возможно также в DX:AX. Конечно, результат можно передать через стек, но если объем возвращаемых данных больше объема передоваемых, то возникнут сложности. Их можно преодолеть, например создавая кадр стека основной программой и записывать туда передаваемые данные, и оставить место для возвращаемых. В вашем конкретном случае я бы поступил так: передал подпрограмме 3 значения: строку (по ссылке), её длинну (по значению) и структуру, которую нужно заполнить (по ссылке, т.е. передаётся адрес структуры, которую надо заполнить). Возвращать тогда не придётся ничего.
Вызов подпрограммы из основной осуществляется так:
-------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
||||
|
|||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |