На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 2 / Возврат значений в регистрах Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Возврат значений в регистрах

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


Возврат значения в регистре имеет смысл для часто вызываемых функций. Это не требует специальной установки и предварительной подготовки буферов и пр. Большинство функций MS-DOS возвращает свои значения этим способом. Однако, если все функции в программе возвращают свои данные через регистры, то придется столкнуться с задачей "большой бухгалтерии и перемешивания". Кроме этого, в связи с тем, что регистры являются элементами, в которых производится большинство вычислений, налицо жесткая конкуренция по их использованию.


Чаще всего регистры должны использоваться для небольших, часто используемых вызываемых программ, возвращающих немного значений и для программ, возвращаемые значения которых должны немедленно подвергаться вычислениям. Одним из примеров этого случая могла бы быть функция чтения символьных значений и преобразования их в числовые значения.


Большинство языков высокого уровня для возвращаемых значений используют различные технические приемы. Так, для возврата байтового значения или значения, длиной в слово, обычно используется регистр AX. Если необходимо возвратить значение, длиной в двойное слово, такое как указатель far (далекий), то младшее значащее слово (или часть смещения) возвращается в регистре AX, а старшее значащее слово (или часть сегмента) возвращается в регистре DX. В тех случаях, когда в вызывающую программу необходимо возвратить более двух слов, данные помещаются в буфер памяти, а указатель на этот буфер возвращается в вызывающую программу. Способы управления этим указателем зависят от конкретного языка.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz