1. Директива компилятора $L: предназначена для поиска объектного файла и компоновке его с программой.
2. Внешние подпрограммы: каждая процедура или функция ассемблера, которую вы хотите сделать доступной в программе, должна объявляться, как идентификатор PUBLIC, и ей должно соответствовать в программе описание external (внешняя).
3. Соглашения по передаче параметров: для передачи параметров используется стек центрального процессора. Параметры всегда вычисляются и заносятся в стек в том порядке, в котором они указываются в описании подпрограммы, слева направо.
Параметры-значения
Параметр-значение – это параметр, значение которого не может изменяться подпрограммой, в которую он передается.
Параметры-значения передаются в одном направлении: в подпрограмму передается значение параметра, но любые изменения этого параметра не оказывают влияния на действительную переменную, которая использовалась при вызове подпрограммы. Подпрограмме передается не адрес этой переменной, а копия ее значения и поэтому сама переменная не изменяется.
|
|
Параметры-переменные
В отличии от параметров-значений параметры-переменные передаются посредством помещения в стек адресов. Это значит, что подпрограмма работает непосредственно с этими переменными. Параметры-переменные передаются в обоих направлениях, т.е. информация передается в подпрограмму и может также передаваться обратно в вызывающую программу, поскольку значение параметров может меняться. Чтобы передать адрес фактического параметра, в списке формальных параметров прописывают перед параметром слово var.
4. Обеспечение стека:
1. RET N (где N - это число байт передаваемых, то есть занесенных в стек, параметров)
2. Сохранить адрес возврата в регистрах (или в памяти) и извлечь параметры из стека поочередно.
Передача параметров через стек
PUSH BP
MOV BP, SP
PUSHA
POPA
POP BP
RET k