- •Регистровая адресация
- •Непосредственная адресация
- •Прямая адресация (па)
- •Косвенная регистровая адресация (кра).
- •Адресация с базированием (аб)
- •Адресация с индексированием (аи).
- •Адресация с базированием и индексированием (аби)
- •Использование стека
- •Организация подпрограмм
- •Команды вызова подпрограмм
- •Команды возврата из подпрограмм
- •Директива процедуры
- •Передача параметров в подпрограмму
Директива процедуры
PROC
ENDP
Эти директивы отмечают начало и конец процедуры. Каждая процедура начинается с директивы PROC и заканчивается директивой ENDP.
Процедуре всегда должен быть предписан один из атрибутов дистанции NEAR(близкая), FAR(дальняя) в качестве операнда директивы PROC.
Процедура с атрибутом NEAR может быть вызвана только из того сегмента команд, где она была определена.
Пример определения процедуры:
proc summa near
; Тело процедуры
add ax, bx
ret
summa endp
В данном примере процедура имеет тип NEAR, поэтому для команды RET будут сгенерирован код команды ближнего возврата.
В основной программе процедура summa может быть вызвана с помощью следующего оператора:
call summa
Имеется возможность косвенного вызова подпрограммы (например, call [si]). Это может оказаться полезным, если организовать в программе массив адресов подпрограмм.
Передача параметров в подпрограмму
Может выполняться через регистры, через стек или через переменные. Результаты работы подпрограммы могут быть возвращены в основную программу также одним из этих способов. В любом случае написанная подпрограмма должна сопровождаться соответствующей документацией по ее использованию.
