В центральном процессоре 8086 поддерживается два типа вызо-
вов и инструкций возврата управления - ближние (NEAR) и дальние
(FAR). Ближние вызовы передают управление другой ячейке в преде-
лах того же программного сегмента, а дальние вызовы позволяют пе-
рейти в другой программный сегмент.
Инструкция ближнего обращения CALL помещает в стек 16-бито-
вый адрес возврата (только смещение), а инструкция дальнего вызо-
ва помещает в стек 32-битовый адрес возврата (адрес сегмента и
смещение). Соответствующая инструкция RET извлекает из стека
только смещение или адрес сегмента и смещение.
На основе описания процедуры в Borland Pascal будет автома-
тически выбираться правильный тип обращения. Процедуры, описанные
в интерфейсной секции модуля соответствуют дальнему обращению и
могут вызываться из других блоков. Процедуры, описанные в прог-
рамме в секции реализации модуля (implementation), являются ближ-
ними и могут вызываться только из этой программы или данного мо-
дуля.
Для некоторых конкретных целей можно потребовать, чтобы про-
цедура имела дальний тип вызова. Например, процедура выхода,
драйверы устройств для текстовых файлов и другие средства, ис-
пользующие указатели на процедуры. Директива компилятора {$F+}
указывает на необходимость использования дальнего типа вызовов.
Процедуры или функции, скомпилированные с данной директивой,
всегда будут иметь дальний тип вызова. При использовании в
Borland Pascal директивы {$F-} правильная схема вызова будет вы-
бираться автоматически. По умолчанию назначается режим {$F-}.