Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
54
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

Процедурные типы

Процедурные типы хранятся в виде двойного слова. При этом в

младшем слове содержится смещение процедуры, а в старшем - базо-

вый сегмент.

Прямой доступ к памяти

В Borland Pascal реализованы три предопределенных массива

Mem, MemW и MemL, которые используются для прямого доступа к па-

мяти. Каждый компонент массива Mem представляет собой байт, каж-

дый компонент массива MemW - слово, а каждый компонент MemL -

значение длинного целого типа (Longint).

Для индексирования массива Mem используется специальный син-

таксис. Два выражения целочисленного типа Word, разделенные запя-

тыми, используются для задания базового сегмента и смещения ячей-

ки памяти, к которой производится доступ. Например:

Mem[$0040:$0049] := 7;

Data := MemW[Seg(V):Ofs(V)];

MemLong := MemL[64:3*4];

Первый оператор записывает значение 7 в байт по адресу

$0040:$0049. Второй оператор помещает значение типа Word, запи-

санное в первые 2 байта переменной V, в переменную Data. Третий

оператор помещает значение типа Longint, записанное по адресу

$0040:$000C, в переменную MemLong.

Прямой доступ к портам

Для доступа к портам данных процессора 80х86 Borland Pascal

реализует два предопределенных массива - Port и PortW. Оба эти

массива являются одномерными массивами, где каждый элемент предс-

тавляет порт данных, адрес которого соответствует индексу. Индекс

имеет тип Word. Элементы массива Port имеют типа Byte, а элементы

массива PortW - Word.

Когда элементами массива Port или PortW присваивается значе-

ние, оно выводится в выбранный порт. Когда на элементы этих мас-

сивов имеются ссылки в выражениях, то значение вводится из задан-

ного порта.

Использование массивов Port и PortW ограничено только прис-

ваиванием и ссылками в выражениях, то есть элементы этих массивов

не могут использоваться в качестве параметров-переменных. Кроме

того, ссылки на весь массив Port или PortW (без индекса) не до-

пускаются.

Глава 22. Вопросы управления

В данной главе подробно описываются различные способы реали-

зации в Borland Pascal управления программой. Сюда включены сог-

лашения по вызовам, процедуры выхода, обработка прерываний и об-

работка ошибок.

Соглашения по вызовам

Параметры процедурам и функциям передаются через стек. Перед

вызовом процедуры или функции параметры помещаются в стек в по-

рядке их описания. Перед выходом из процедуры или функции все па-

раметры извлекаются из стека.

Примерный вызов процедуры или функции можно представить сле-

дующим образом:

PUSH Param1

PUSH Param2

.

.

.

PUSH ParamX

Call ProcOrFunc

Параметры могут передаваться по ссылке или по значению. Ког-

да параметр передается по ссылке, то указатель, который ссылается

на реальную ячейку памяти, помещается в стек. Когда параметр пе-

редается по значению, в стек помещается само фактическое значе-

ние.

Соседние файлы в предмете Программирование на Pascal