Открытые строковые параметры передаются занесением в стек
сначала указателя на строку, а затем слова, содержащего атрибут
размера (максимальную длину строки).
Открытые параметры-массивы передаются занесением в стек сна-
чала указателя на массив, а затем слова, содержащего атрибут раз-
мера (число элементов массива минус 1).
При использовании встроенного ассемблера, значение, возвра-
щаемое для открытого параметра с помощью стандартной функции
High, можно получить, загружая слово непосредственно под открытым
параметром. В данном примере это демонстрирует процедура
FillString, заполняющая строку до ее максимальной длины указанным
символом.
procedure FillString(var Str: OpenString; Chr: Char);
assebmler;
asm
LES DI,Str { ES:DI = @Str }
MOV CX,Str,Str.Word[-2] { Cx = igh(Str) }
MOV AL,CL
CLD
STOSB { установить Str[0] }
MOV AL,Chr
REP STOSB { установить Str[1..High] }
end;