| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
где "значение" представляет нужное значение соответствующего эле-
мента в определении структуры или объединения. Пустое значение
указывает, что вы будете использовать начальное значение из опре-
деления структуры или объединения. Ключевое слово ? указывает,
что элемент должен быть неинициализированным. Например:
Турбо Ассемблер 3.0/tasm/#1-2 = 205 =
ASTRUC <"ABC"',,?>
эквивалентно следующему:
DB "abc"
DW 1
DD ?
Если вы задаете меньше значений, чем имеется элементов, Тур-
бо Ассемблер закончит инициализацию, используя для остальных эле-
ментов начальные значения из определения структуры или объедине-
ния.
ASTRUC <"ABC"> ; то же, что ASTRUC <"ABC",,>
Когда вы используете инициализатор в виде угловых скобок,
уделите особое внимание вложенным структурам и объединениям. Для
каждого уровня вложенности в таком инициализаторе требуется ука-
зывать свою пару угловых скобок, благодаря чему Турбо Ассемблер
будет интерпретировать каждый инициализатор вложенной структуры
или объединения как отдельную единицу (совпадающее со значением в
экземпляре). Оставив соответствующие угловые скобки пустыми, вы
можете пропустить инициализацию данного уровня вложенности (для
вложенной структуры или объединения используется значение по
умолчанию, либо использовать ключевое слово ? (для неинициализи-
рованной вложенной структуры или объединения). Рассмотрите, нап-
ример, следующую вложенную структуру и объединение:
CUNION STRUC
CTYPE DB ?
UNION ; начало объединения
; если CTYPE = 0, использовать следующее...
STRUC
CT0PAR1 DW 1
CT0PAR2 DW 2
ENDS
; если CTYPE = 1, использовать следующее...
STRUC
CT1PAR1 DW 3
CT1PAR2 DW 4
ENDS
ENDS ; конец объединения
ENDS
Инициализатор в скобках для данной структуры/объединения
имеет два уровня вложенности. Эта вложенность должна учитываться
соответствующей парой угловых скобок в инициализаторе, например:
CUNION <0,<<2,>,?>>
Турбо Ассемблер 3.0/tasm/#1-2 = 206 =
Эта директива эквивалентна следующему:
DB 0
DW 2
DB 2
DB 2 DUP (?)
Турбо Ассемблер 3.0/tasm/#1-2 = 207 =
Создание экземпляра записи
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Чтобы создать экземпляр данных типа записи, используйте имя
данного типа, как директиву выделения данных. Например, предполо-
жим, что вы определили следующее:
MYREC RECORD VEL:3=4,MODE:2,SIZE:4=15
Тогда оператор:
MTEST MYREC ?
будет создавать экземпляр записи myrec (определяя переменную
mtest). В данном примере данные в сегмент не помещаются, так как
задаются неинициализированные данные (?).
Экземпляры записи всегда имеют размер в байт, слово или
двойное слово, в зависимости от числа бит, выделенных при опреде-
лении.
Инициализация экземпляров записи
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
При определении записи для некоторых или всех полей записи
нужно задавать начальное значение. (Турбо Ассемблер предполагает,
что все не заданные значения равны 0.) Простейший инициализиро-
ванный экземпляр записи содержит просто заданное в определении
начальное поле данных, например:
MYREC {}
что эквивалентно следующему:
DW (4 SHL 6) + (0 SHL 4) + (15 SHL 0)
; SHL - это операция сдвига влево для выражений
Фигурные скобки ({}) представляют нулевое инициализирующее
значение записи. Значение инициализатора определяет, что началь-
ное значение нужно переопределить, и каким именно новым значением
его требуется переопределить (если вы выделяете данные для эк-
земпляра записи).
Инициализатор записи в фигурных скобках имеет следующий син-
таксис:
{ [имя_поля = выражение [,имя_поля = выражение...]] }
где "имя_поля" - это имя поля записи, а "выражение" - это значе-
ние, которое вы хотите определить для поля в данном экземпляре.
Пустое значение указывает, что вы будете использовать начальное
значение поля из определения записи. Значение ? эквивалентно ну-
лю. Турбо Ассемблер устанавливает для всех полей, которые не ука-
Турбо Ассемблер 3.0/tasm/#1-2 = 208 =
зываются в инициализаторе, начальное значение, заданное в опреде-
лении записи. Например:
MYREC {VEL=2,SZE=?}
эквивалентно следующему:
DW (2 SHL 6) + (0 SHL 4) + (0 SHL 0)
Альтернативным методом инициализации экземпляров записи
является использование угловых скобок (<>). В этом случае скобка-
ми ограничивается инициализатор. Значения инициализатора являются
неименованными, но располагаются в том же порядке, что и соот-
ветствующие поля в определении записи. Данный инициализатор имеет
следующий синтаксис:
<[выражение [,выражение...]]>
где "выражение" представляет нужное значение поля соответствующей
записи в определении записи. Пустое значение указывает, что вы
будете использовать начальное значение из определения записи.
Ключевое слово ? указывает, что это поле должно быть равно 0.
Например:
MYREC <,2,?>
эквивалентно следующему:
DW (4 SHL 6) + (2 SHL 4) + (0 SHL 0)
Если вы задаете меньше значений, чем имеется полей в записи,
Турбо Ассемблер завершает экземпляр, используя для оставшихся по-
лей начальные значения из определения записи.
MYREC <1> ; то же, что MYREC <1,,>
Создание экземпляра данных перечислимого типа
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Экземпляр данных перечислимого типа вы можете создать, ис-
пользую как директиву определения данных имя перечислимого типа
данных. Предположим, например, что вы определили следующее:
ETYPE ENUM FEE,FIE,FOO,FUM
Тогда оператор:
ETEST ETYPE ?
будет создавать экземпляр перечислимого типа данных ETYPE (опре-
деляя переменную ETEST). В данном примере, поскольку задано зна-
чение неинициализируемых данных ?, начальные данные в текущем
сегменте не генерируются.
Турбо Ассемблер 3.0/tasm/#1-2 = 209 =
Экземпляры перечислимого типа данных всегда представляют со-
бой байт, слово или двойное слов, в зависимости от максимального
значения, представленного в данных перечислимого типа.
Инициализация экземпляра перечислимого типа данных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Вы можете использовать любое выражение, при вычисление кото-
рого получается число, умещающееся в экземпляре перечислимого ти-
па данных, например:
|
adfun.ru
|
|
|
|