Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции-ASM.doc
Скачиваний:
10
Добавлен:
06.11.2018
Размер:
349.7 Кб
Скачать

Директива процедуры

PROC

ENDP

Эти директивы отмечают начало и конец процедуры. Каждая процедура начинается с директивы PROC и заканчивается директивой ENDP.

Процедуре всегда должен быть предписан один из атрибутов дистанции NEAR(близкая), FAR(дальняя) в качестве операнда директивы PROC.

Процедура с атрибутом NEAR может быть вызвана только из того сегмента команд, где она была определена.

Пример определения процедуры:

proc summa near

; Тело процедуры

add ax, bx

ret

summa endp

В данном примере процедура имеет тип NEAR, поэтому для команды RET будут сгенерирован код команды ближнего возврата.

В основной программе процедура summa может быть вызвана с помощью следующего оператора:

call summa

Имеется возможность косвенного вызова подпрограммы (например, call [si]). Это может оказаться полезным, если организовать в программе массив адресов подпрограмм.

Передача параметров в подпрограмму

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