Полное описание процедуры
Полное описание процедуры
По-прежнему допустима сокращенная форма описания процедуры, при которой указывается только ее тип far или near Однако для того чтобы Макроассемблер взял на себя оформление текста процедуры, необходимо ее полное описание, которое имеет следующий вид:
метка PROC тип [спецификаторы] [, список_параметров]
Тип процедуры желательно указывать всегда, допустимые типы far, farie, far32, near, nearlG И near32. Имена far И near (без Цифр) используются в тех случаях, когда тип процедуры соответствует типу сегмента, в котором она расположена. Тип сегмента, в свою очередь, зависит от модели памяти и директив .386, .486, .586.
Спецификаторы указывают тип языка (описан выше), доступность для других модулей (private, Public, Export) и аргументы пролога и эпилога. По умолчанию выбирается тип языка, описанный в директиве MODEL, общедоступная процедура public и стандартная форма пролога и эпилога, которая описана ниже.
Важно
Важно
Разделителями между именами типа и спецификаторов могут быть только пробелы. Первая запятая является признаком конца спецификаторов и начала списка параметров. При несоблюдении этого правила Макроассемблер выдает различные сообщения об ошибках и прерывает компиляцию модуля.
Список параметров по своему назначению аналогичен последовательности директив EQU, описанных в предыдущем разделе и позволяет использовать в основном тексте процедуры имена вместо ссылок на регистр bр. При его обработке Макроассемблер вычисляет смещение каждого параметра относительно регистра bp и подставляет нужные величины в команды подпрограммы. Если вы посмотрите листинг модуля, то увидите значения смещений для всех перечисленных в списке имен.
Параметры должны иметь уникальные имена, отличающиеся от других имен, описанных в данном модуле. После каждого имени указывается символ "двоеточие" и размер параметра (word, dword и т. п.). Если это не сделано, то по умолчанию размер параметра зависит от разрядности сегмента, в котором расположена процедура, — word для 16-разрядных и dword для 32-разрядных сегментов.
Таким образом, в полном описании процедуры появились два наиболее важных элемента — тип языка и список фактических параметров. Они содержат исчерпывающую информацию о способе компиляции процедуры.