Макрокоманды позволяют вам задавать имя идентификатора для текстовой строки или блока кода, которые будут часто использоваться в программе. Однако макрокоманды выходят за рамки простой подстановки. В Турбо Ассемблере имеются макрооперации, обеспечивающие большую гибкость в определении макрокоманд. В сочетании с возможностью использования макрокоманд из нескольких строк с аргументами это превращает макросредства Турбо Ассемблера в очень мощный инструмент. В данной главе описывается, как можно использовать в программах текстовые макрокоманды и макрокоманды, состоящие из нескольких строк.
Текстовые макрокоманды
Текстовая макрокоманда - это идентификатор, представляющий строку текстовых символов. Когда Турбо Ассемблер обнаруживает идентификатор в выражениях (и в других ситуациях), он подставляет вместо него текстовые символы. Например, если DoneMsg - это текстовая макрокоманда, имеющая значение "Returning to DOS", то следующий оператор:
GoodBy DB DoneMsg
дает в результате:
GoodBy DB "Returning to DOS"
Определение текстовых макрокоманд с помощью директивы EQU
Для определения простых текстовых макрокоманд можно использовать директиву EQU.Приведем синтаксис определения текстовой макрокоманды:
имя EQU текстовая_строка
где "текстовая_строка" связывается с текстовой макрокомандой с именем "имя". Для выделения текста вы можете заключить текстовую строку в угловые скобки (<>), например:
DoneMsg DB <"Returning to DOS">
Если в режиме MASM вы опустите скобки, то Турбо Ассемблер будет определять, можно ли свести текстовую строку к выражению. Если ее вычислить нельзя, Турбо Ассемблер будет интерпретировать текстовую строку как текстовую макрокоманду (чтобы сохранить совместимость c MASM). Чтобы обеспечить правильное определение текстовой строки, нужно всегда заключать ее в угловые скобки. Рассмотрим следующие ошибки, которые могут возникать, если вы этого не делаете:
Earth EQU dirt ; Earth = "dirt" Planet EQU Earth ; Planet = "dirt" (неверно!) Planet EQU ; Planet = "Earth" (верно!)
В режиме Ideal оператор EQU всегда определяет текстовую макрокоманду.
Текстовые макрокоманды являются переопределяемыми. Вы можете переопределить текстовую макрокоманду в том же модуле другой текстовой строкой.
Директивы макрокоманд работы с текстовыми строками
Турбо Ассемблер обеспечивает директивы, которые могут работать с текстовыми макрокоманд. Эти директивы доступны в режиме Ideal и для версий M510, M520 и T300 (как задается директивой VERSION).
Строковые аргументы для любой из этих директив могут быть следующими:
текстовой строкой, заключенной в скобки, например, ;
именем ранее определенной текстовой макрокоманды;
выражением с предшествующим символом %, значение которого эквивалентно числовому представлению строки для текущего основания.
1 2 3 4 5 6
8 8 8
| |