Турбо Ассемблер и Borland Pascal
Турбо Ассемблер (TASM) значительно облегчает разработку программ на языке ассемблера и организации в них интерфейса с программами Borland Pascal. Турбо Ассемблер поддерживает специфи- ческое использование сегментов, схему памяти и языковую поддержку для программистов, работающих на Borland Pascal.
Используя ключевое слово PASCAL и директиву .MODEL, можно обеспечить соблюдение соглашений о вызовах с Borland Pascal, оп- ределить имена сегментов, выполнить инструкции PUSH BP и MOV PB,SP, а также обеспечить возврат управления с помощью операторов POP BP и RET N (где N - это число байт параметра). Директива .MODEL имеет следующий синтаксис:
.MODEL xxxx, PASCAL
где xxxx - это модель памяти (обычно LARGE).
Задание в директиве .MODEL языка PASCAL сообщает Турбо Ассемблеру, что параметры были занесены в стек слева-направо - в том порядке, в котором они обнаружены в исходном операторе, вызы- вающем процедуру.
Директива PROC позволяет вам задать параметры в том же по- рядке, как они определены в программе Borland Pascal. Если вы оп- ределяете функцию, которая возвращает строку, обратите внимание на то, что директива PROC имеет опцию RETURNS, позволяющую вам получить доступ к временному указателю строки в стеке и не оказы- вающую влияния на число байт параметра, добавляемых в операторе RET.
Приведем примеры кода, в которых используются директивы .MODEL и PROC:
.MODEL LARGE, PASCAL .CODE MyProc PROC FAR 1:BYTE, j : BYTE RETURNS result : DWORD PUBLIC MyProc les di,result ; получить адрес временной строки mov al,i ; получить первый параметр i mov bl,j ; получить второй параметр j . . . ret
Определение функции в Borland Pascal будет выглядеть следую- щим образом:
function MyProc(i,j : char) : string; external;