Stack 256

Model large pascal

Masm

Передача параметров из Pascal-программы в программу на ассемблере

End.

Clrscr;

Begin

Uses crt;

Program mxpas;

{$D+}

procedure asmproc (ch:char; x, y, kol:integer); external;

{$L <файл на ассемблере>}

asmproc ('a',1,2,3);

При обращении к внешней процедуре на ассемблере фактические параметры записываются в стек в той последовательности, в какой они указаны в операторе. Программа на Assembler должна взять параметры, учитывая следующие соглашения:

· Сохранить содержимое регистра BP в стеке.

· Записать в регистр BP адрес вершины стека

· Все обращения к стеку следует выполнять, используя базовый регистр BP

· При возврате управления в программу на Pascal программа на Assembler должна выполнить очищение стека, а именно: восстановить содержимое регистра BP, удалить из стека переданные процедуре аргументы.

 
BP
CS
IP
PAR4
PAR3
PAR2
PAR1

[BP+12] – чтение PAR1

Использование директивы model для организации взаимодействия программ

При использовании директивы программа на Assembler может использовать имена переменных, объявленных в Pascal-программе.

 

Пример программы на Assembler с директивой model: