TURBO PASCAL |
Новости
|
Абсолютные переменныеПеременные можно описать так, что они будут располагаться по определенному адресу в памяти, и в этом случае они называются аб- солютными переменными. Описание таких переменных должно содержать после типа оператор absolute: описание ┌────────┐ ┌─────────┐ ┌───┐ ┌─────────┐ абсолютной ───>│absolute├─┬─>│целое без├─>│ : ├─>│целое без├─┬─> переменной └────────┘ │ │ знака │ └───┘ │ знака │ │ │ └─────────┘ └─────────┘ │ │ ┌─────────────┐ │ └──────>│идентификатор├────────────┘ │ переменной │ └─────────────┘ Отметим, что список идентификаторов в описании переменной при указании оператора absolute может содержать только один иден- тификатор. Первая часть оператора absolute содержит сегмент и смещение, то есть адрес, по которому переменная должна быть размещена. CrtMode : byte absolute $0040:$0049; Первая константа обозначает базу сегмента, а вторая опреде- ляет смещение внутри этого сегмента. Обе константы не должны вы- ходить за пределы диапазона от $0000 до $FFFF (от 0 до 65535). В программах защищенного режима DOS и в Windows первую форму оператор absolute нужно использовать очень аккуратно, если вообще стоит это делать. Во время выполнения прикладной программы Windows или DOS защищенного режима она может не иметь полномочий доступа к областям памяти вне вашей программы. Попытка доступа к этим областям памяти может привести к сбою программы. Вторая форма оператора absolute используется для описания переменной, которая помещается "поверх" другой переменной, то есть по тому же самому адресу, что и другая переменная. var Str: string[32]; StrLen: byte absolute Str; Это описание указывает, что переменная StrLen должна разме- щаться с того же адреса, что и переменная Str, а поскольку первый байт строковой переменной содержит динамическую длину строки, то StrLen будет содержать длину Str. Эту вторую форму оператора absolute можно без опасения ис- пользовать при программировании в Windows или в защищенном режиме DOS. Память, к которой вы обращаетесь, находится в области прог- раммы. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |