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, удалить из стека переданные процедуре аргументы.
![]() |
CS |
IP |
PAR4 |
PAR3 |
PAR2 |
PAR1 |
[BP+12] – чтение PAR1
Использование директивы model для организации взаимодействия программ
При использовании директивы программа на Assembler может использовать имена переменных, объявленных в Pascal-программе.
Пример программы на Assembler с директивой model: