| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
DOS. Компоновщик при этом выполняет в получаемой программе следу-
ющее упорядочивание:
- сначала идут сегменты с именем класса CODE (обычно сегмен-
ты кода);
- затем следуют сегменты, не имеющие имени класса CODE и не
являющиеся частью DGROUP;
- сегменты, являющиеся частью DGROUP в следующем порядке:
Турбо Ассемблер 3.0/tasm/#1-2 = 150 =
1. сегменты, не являющиеся классами BSS и STACK (обыч-
но неинициализированные данные);
2. сегменты класса BSS (обычно инициализированные дан-
ные);
3. сегменты класса STACK (область стека).
Примечание: Не используйте директиву DOSSEG, в прог-
раммах, не являющихся автономными программами на Ассембле-
ре.
Сегменты в группе DGROUP располагаются в том порядке, в ко-
тором они определены в исходных модулях. Приведем синтаксис
DOSSEG:
DOSSEG
Изменение размера стека
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Начальный и завершающий код процедур работает с регистрами,
указывающими на стек. В процессоре 80386 или 80486 сегменты могут
быть 16- или 32-разрядными. Таким образом, перед генерацией кор-
ректного начального и завершающего кода Турбо Ассемблеру нужно
знать корректный размер стека.
Если вы выбираете стандартную модель с помощью директивы
MODEL, размер стека выбирается автоматически.
В Турбо Ассемблере предусмотрены директивы, которые могут
установить или переопределить используемый по умолчанию при гене-
рации начального и завершающего кода размер стека. Список этих
директив приведен в следующей таблице:
Директивы модификации размера стека Таблица 7.10
ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Директива і Значение і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і SMALLSTACK і Указывает, что стек 16-разрядный. і
і і і
і LARGESTACK і Указывает, что стек 32-разрядный. і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Турбо Ассемблер 3.0/tasm/#1-2 = 151 =
Глава 8. Определение типов данных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Символьное определение типов данных помогает вам писать мо-
дульный код. Отделяя определения типа данных от того кода, в ко-
тором он используется, вы можете легко изменять или расширять
структуры данных без необходимости переписывать код. Это позволя-
ет также организовать символьный доступ к типу данных и его ком-
понентам.
Турбо Ассемблер определяет столько же символьных типов дан-
ных, сколько поддерживается в языках высокого уровня. В данной
главе описывается, как можно определить различные типы данных.
Определение перечислимых типов данных
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Перечислимые типы данных представляют набор значений, кото-
рые можно сохранять в определенном числе бит. Максимальное запи-
санное значение определяет фактически необходимое число бит.
Приведем пример синтаксиса режима Ideal определения перечис-
лимого типа данных:
ENUM имя [переменная_перечисления [, переменная_перечисления...]]
В режиме MASM вы можете использовать следующий синтаксис:
имя ENUM [переменная_перечисления [, переменная_перечисления...]]
Каждая "переменная_перечисления" имеет следующий синтаксис:
имя_переменной [=значение]
Когда вы присваиваете переменной "имя_переменной" конкретное
значение, Турбо Ассемблер, если поле "значение" отсутствует, бу-
дет присваивает ей значение, равное значению последней перемен-
ной в списке, плюс единица. Значения не могут быть относительными
или иметь опережающие ссылки. Переменные, создаваемые перечисли-
мым типом (ENUM), представляют собой переопределяемые переменные
с глобальной областью действия.
Предупреждение: Если вы используете в двух перечисли-
мых типах данных одно и то же имя переменной, то первое
значение переменной будет потеряно, и в результате возник-
нет ошибка.
"Имя" - это имя типа данных ENUM. Для получения различной
информации о присваивании значений переменным вы можете затем ис-
пользовать это имя. О присваивании имен перечислимым типам данных
в Турбо Ассемблере рассказывается в Главе 5.
Имена перечислимых типов данных можно также использовать для
Турбо Ассемблер 3.0/tasm/#1-2 = 152 =
создания переменных и выделения памяти. Подробности см. в Главе
12.
Перечислимые типы данных являются переопределяемыми. В моду-
ле вы можете несколько раз определить одно и то же имя перечисли-
мого типа данных.
Кроме того, Турбо Ассемблер для определения перечислимого
типа данных с большим числом переменных использует синтаксис, в
котором указывается несколько строк. Начало такого определения
отмечается символом {, а конец - символом }.
В режиме Ideal этот синтаксис имеет следующий вид:
ENUM имя [переменная_перечисления [, переменная_перечисления...]]
{переменная_перечисления [,переменная_перечисления]...]
.
.
.
{переменная_перечисления [,переменная_перечисления]...] }
В режиме MASM используется следующий синтаксис:
имя ENUM [переменная_перечисления [, переменная_перечисления...]]
{переменная_перечисления [,переменная_перечисления]...]
.
.
.
{переменная_перечисления [,переменная_перечисления]...] }
Например, все приведенные ниже перечислимые типы данных эк-
вивалентны:
foo ENUM f1, f2, f3, f4 ; исходная версия
foo ENUM { ; версия из нескольких строк
f1,
f2,
f3,
f4
}
foo ENUM f1, f2, {
f3, f4 } ; более компактная версия
Примечание: Турбо Ассемблер не распознает в определе-
нии перечислимого типа данных из нескольких строк никаких
псевдоопераций.
Определение записей с битовыми полями
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Данные типа записи представляют собой набор битовых полей.
Турбо Ассемблер 3.0/tasm/#1-2 = 153 =
Каждое битовое поле имеет заданную длину (в битах) и начальное
значение. Размер данных типа записи равен сумме длин всех полей.
Вы можете использовать данные типа записи для максимально
компактного представления данных. Например, можно представить
группу из 16 флагов (каждый из которых может быть либо установлен
(ON), либо сброшен (OFF)) как 16 отдельных бит, 16 отдельных
слов, или как запись, содержащую 16 1-битовых полей (наиболее эф-
фективный метод).
Приведем синтаксис описания данных типа записи режима Ideal:
RECORD имя [поле_записи [,поле_записи...]]
В режиме MASM этот синтаксис имеет вид:
имя RECORD [поле_записи [,поле_записи...]]
Каждое "поле_записи" имеет следующий синтаксис:
имя_поля : размер_выражения [=значение]
где "имя_поля" - это имя поля записи. Турбо Ассемблер будет выде-
лять для него битовое поле размером "размер_выражения". "Значе-
ние" и размер выражений не могут быть относительными или иметь
|
adfun.ru
|
|
|
|