Связь Паскаль-Ассемблер

1. Директива компилятора $L: предназначена для поиска объектного файла и компоновке его с программой.

2. Внешние подпрограммы: каждая процедура или функция ассемблера, которую вы хотите сделать доступной в программе, должна объявляться, как идентификатор PUBLIC, и ей должно соответствовать в программе описание external (внешняя).

3. Соглашения по передаче параметров: для передачи параметров используется стек центрального процессора. Параметры всегда вычисляются и заносятся в стек в том порядке, в котором они указываются в описании подпрограммы, слева направо.

Параметры-значения

Параметр-значение – это параметр, значение которого не может изменяться подпрограммой, в которую он передается.

Параметры-значения передаются в одном направлении: в подпрограмму передается значение параметра, но любые изменения этого параметра не оказывают влияния на действительную переменную, которая использовалась при вызове подпрограммы. Подпрограмме передается не адрес этой переменной, а копия ее значения и поэтому сама переменная не изменяется.

Параметры-переменные

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

4. Обеспечение стека:

1. RET N (где N - это число байт передаваемых, то есть занесенных в стек, параметров)

2. Сохранить адрес возврата в регистрах (или в памяти) и извлечь параметры из стека поочередно.

Передача параметров через стек

PUSH BP

MOV BP, SP

PUSHA

POPA

POP BP

RET k


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: