TURBO PASCAL |
Новости
|
Прямое обращение к памяти и портам ввода - вывода
В Турбо Паскале имеется пять предварительно объявленных массивов: MEM, MEMW, MEML, PORT и PORTW. Первые три обеспечивают доступ к любому участку оперативной памяти по абсолютному адресу, два других - доступ к портам ввода-вывода. Компонентами массива MEM являются данные типа BYTE, массива MEMW - типа WORD, массива MEML - типа LONGINT. Обращение к элементам этих массивов, т.е. их индексация, имеет специальный вид: каждый индекс представляет собой абсолютный адрес и состоит из двух выражений типа WORD; первое дает сегментную часть адреса, второе - смещение; выражения разделяются двоеточием. Например: Меm[$0000:$1000] := 0; DataMem := MemWfSeg(p):0fs(p)]; MemLong :.= MemL [64 : i*SizeOf (real) ] ; Как следует из технического описания операционной системы MS-DOS, в памяти по адресу $F000:$FFFE располагается байт-указатель типа компьютера. Следующая программа (пример 11.5) прочтет этот байт и выведет на экран тип Вашего ПК. Пример 11.5 begin Write (' Тип компьютера: ') ; case Mem [$FOOO:$FFFE] of $FF : WriteLn ('PC'); $FE : WriteLn('XT'); $FD : WriteLn('PCjr'); $FC : WriteLn('AT'); $F9 : WriteLn('совместимый с PC') end end. Компонентами массива PORT являются байты (тип BYTE), а массива PORTW - слова (тип WORD). Индексами этих массивов должно быть выражение типа BYTE, указывающее номер нужного порта. Присвоение значения элементу массива PORT или PORTW приведет к записи в порт, упоминание элемента в выражении - к чтению из порта. Компоненты массивов PORT и PORTW нельзя передавать в качестве параметров процедурам или функциям. Эти идентификаторы не употребляются без индексных выражений.
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |