| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
доступную память или даже прекратит работу.
Подробнее о директивах условного ассемблирования рассказыва-
ется в Главе 15.
Общие макрокоманды, состоящие из нескольких строк
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Турбо Ассемблер связывает тело макрокоманды, состоящей из
нескольких строк (включая директивы, инструкции и другие макроко-
манды) с символьным именем макрокоманды. При использовании имени
макрокоманды в качестве директивы Турбо Ассемблер включает в
программу тело макрокоманды (операторы). Таким образом вы можете
использовать макрокоманду, состоящую из нескольких строк, нес-
колько раз.
Приведем синтаксис общей макрокоманды из нескольких строк
режима Ideal:
MACRO имя список_параметров
тело_макрокоманды
ENDM
В режиме MASM общее определение макрокоманды из нескольких
строк имеет следующий синтаксис:
имя MACRO список_параметров
тело_макрокоманды
ENDM
где "имя" - это имя определяемой вами макрокоманды из нескольких
строк. "Тело_макрокоманды" содержит операторы, которые составляет
тело макрорасширения. В макрокоманду вы можете помещать любые до-
пустимые операторы Турбо Ассемблера (и любое их число). Макроко-
манду завершает ключевое слово ENDM.
В следующем примере определяется макрокоманда с именем
PUSHALL, которая при вызове включает в вашу программу тело макро-
команды, состоящее из трех инструкций PUSH:
PUSHALL MACRO
PUSH AX BX CX DX
PUSH DS SI
PUSH ES DI
ENDM
"Список_параметров" - это список формальных аргументов (их
идентификаторов) макрокоманды. Он имеет следующий синтаксис:
[формальный_аргумент [,формальный_аргумент]...]
В макрокоманде вы можете использовать любое число формальных
аргументов (если они не умещаются на одной строке, для продолже-
Турбо Ассемблер 3.0/tasm/#2-2 = 35 =
ния на другой строке можно использовать символ /). Например:
ADDUP MACRO dest,\ ; dest - это первый формальный
; аргумент, а s1,s2 -
; это второй и третий
; аргумент макрокоманды
MOV dest,s1
ADD dest,s2
ENDM
Каждый формальный аргумент имеет следующий синтаксис:
имя_формального_аргумента[:тип_аргумента]
где "имя_аргумента" - это символьное имя, используемое для подс-
тановки (вместо него) фактического параметра, передаваемого мак-
рокоманд при ее вызове. Необязательный "тип_аргумента" задает ка-
кую-то информацию о виде фактического параметра, воспринимаемого
при вызове макрокоманды. Поддерживаются следующие типы:
Турбо Ассемблер 3.0/tasm/#2-2 = 36 =
Типы формальных аргументов Таблица 14.1
ЪДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Тип і Значение і
ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і REQ і Аргументы не могут быть нулевыми или і
і і состоять из пробелов. і
і і і
і =<текстовая_строка> і Заключенная в кавычки текстовая строка і
і і задает используемое по умолчанию зна- і
і і чение аргумента (когда фактический ар- і
і і гумент является нулевым или состоит из і
і і пробелов). і
і і і
і VARARG і Фактический аргумент состоит из ос- і
і і тальной части макровызова, интерпрети- і
і і руемого как список аргументов. Для і
і і обеспечения этой интерпретации исполь- і
і і зуются угловые скобки, запятые. і
і і і
і REST і Фактический аргумент состоит из ос- і
і і тальной части макровызова, интерпрети- і
і і руемого как непосредственный текст. і
АДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Вызов общей макрокоманды, состоящей из нескольких строк
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Чтобы вызвать общую макрокоманду, используйте в вашей прог-
раммы в качестве директивы имя макрокоманды. Турбо Ассемблер
вставляет в этой точке модуля (поле подстановок всех формальных
аргументов) тело макрокоманды. При вызове общей макрокоманды,
состоящей из нескольких строк, используется следующий синтаксис:
имя_макрокоманды [аргумент [[,]аргументе]...]
где "имя_макрокоманды" - это идентификатор макрокоманды. Если вы
вызываете макрокоманду с аргументами, то список аргументов указы-
вается после имени макрокоманды. Вы можете задать любое число
аргументов, но все они должны умещаться на одной строке. Аргумен-
ты нужно отделять друг от друга запятыми или пробелами. При рас-
ширении макрокоманды Турбо Ассемблер заменяет первый формальный
аргумент макроопределения первым передаваемым аргументом, второй
аргумент - вторым аргументом и т.д.
Каждый "аргумент" представляет текстовую строку. Вы можете
задать эту текстовую строку следующими способами:
- как непрерывную группу символов, не содержащую пробелов,
запятых или двоеточий;
- как группу символов, выделенную угловыми скобками (<>),
которая может содержать пробелы, запятые и двоеточия;
Турбо Ассемблер 3.0/tasm/#2-2 = 37 =
- как одиночный символ с предшествующим знаком !, что экви-
валентно заключению символа в угловые скобки;
- как выражение с предшествующим символом %, которое предс-
тавляет текстовое значение выражения, соответствующее те-
кущему выбранному основанию.
Литеральные строки в угловых скобках
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Используйте угловые скобки для выделения литеральной строки,
содержащей символы-разделители. Следует использовать следующий
синтаксис:
<текст>
где "текст" интерпретируется как одиночный строковый параметр,
даже если он содержит запятые, пробелы или символы табуляции, ко-
торые обычно разделяют параметры. Используйте данную операцию,
когда вы хотите передать аргумент, содержащий один из таких сим-
волов.
Вы можете также использовать эту операцию, чтобы Турбо Ас-
семблер интерпретировал символ литерально, не придавая ему специ-
альное значение. Например, если вы хотите передать в качестве па-
раметра макровызова точку с запятой (;), то чтобы предотвратить
ее интерпретацию как комментария, вы можете заключить ее в угло-
вые скобки (<;>). При преобразовании заключенной в скобки строки
в текстовый аргумент Турбо Ассемблер убирает только один уровень
угловых скобок. Это позволяет вызывать макрокоманду, требующую
наличия угловых скобок, из другой макрокоманды.
Символ !
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Символ ! позволяет вам вызывать макрокоманду с аргументами,
которые содержат специальные символы. Указание этого символа пе-
ред другим символом эквивалентно заключению этого второго символа
в угловые скобки. Например, !; действует также, как <;>. Некото-
рые общие случаи использования данного символа показаны в следую-
щей таблице:
Использование специального символа ! Таблица 14.2
ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Строка і Полученные в результате символ і
ГДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і !> і > і
і і і
і !< і < і
і і і
і !! і ! і
АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Турбо Ассемблер 3.0/tasm/#2-2 = 38 =
Символ вычисления выражения %
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Символ % указывает Турбо Ассемблеру, что выражение нужно вы-
числить. Ассемблер преобразует результат выражения к виду ASCII с
текущим основанием. Используйте данный символ, когда в качестве
макроаргумента вы хотите передать строку,представляющую вычислен-
ный результат, а не само выражение. При этом используется следую-
|
adfun.ru
|
|
|
|