Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 25
Unknown Author
A DW ?
В EQU А
С DW В ; эквивалентно: С DW А
Имена-синонимы обычно используются для введения более удобных, наглядных обозначений. Например, само по себе имя регистра АХ ни о чем не говорит, но если мы используем этот регистр для вычисления какой-то суммы, то его можно обозначить SUM:
SUM EQU АХ
и далее использовать это более наглядное имя SUM.
Отметим, что имя, указанное в правой части директивы EQU, может быть описано в Программе как до этой директивы, так и после нее.
N EQU 100 К EQU 2*N-1 STAB EQU
Если в правой части директивы EQU стоит константное выражение, тогда указанное слева имя принято называть именем константы. Значением этой константы объявляется значение выражения. Например, N - это константа со значением 100, К - со значением 199, a STAR - со значением 2Ah (это код звездочки в системе ASCII). Все последующие вхождения в текст программы имени константы ассемблер будет заменять на значение этой константы. Например, директива
X DB N DUP(?)
эквивалентна директиве X DB 100 DUP(?)
Случаи, когда полезно применение констант, - такие же, как и в языках высокого уровня. Например, в качестве констант рекомендуется описывать размеры массивов, поскольку в таком случае легко настроить программу на работу с массивом другого размера - для этого достаточно внести изменение лишь в директиву EQU, описывающую константу.
Отметим, что если в константном выражении используются имена других констант, то они должны быть описаны раньше данной директивы EQU, иначе
ассемблер, просматривающий текст программы сверху вниз, не сможет вычислить значение этого выражения.
Примеры:
S EQU 'Вы ошиблись'
LX EQU X+(N-1)
WP EQU WORD PTR
В данном случае считается, что указанное имя обозначает операнд в том виде, как он записан (операнд не вычисляется). Именно на этот текст и будет заменяться каждое вхождение данного имени в программу. Например, следующие предложения слева эквивалентны предложениям справа
ANS DB S, '!' ANS DB 'Вы ошиблись','1'
NEG LX NEG X+(N-1)
INC WP [ВХ] INC WORD PTR [BX]
Такой вариант директивы EQU обычно используется для того, чтобы ввести более короткие обозначения для часто встречающихся длинных текстов. Введя короткое имя, мы далее в программе можем им пользоваться, а уж ассемблер сам будет его заменять на соответствующий текст.
Отметим, что текст, указанный в правой части директивы EQU, должен быть сбалансирован по скобкам и кавычкам и не должен содержать вне скобок и кавычек символа Кроме того, поскольку текст не вычисляется, то в нем можно использовать как имена, описанные до этой директивы EQU, так и имена, описанные после нее.
Теперь рассмотрим еще одну директиву ЯА, похожую на директиву EQU, - директиву присваивания:
<имя> = сконстантное выражение>
Эта директива определяет константу' с именем, указанным в левой части, и с числовым значением, равным значению выражения справа. Но в отличие от констант, определенных по директиве EQU, данная константа может менять свое значение, обозначая в разных частях текста программы разные числа. Например: к=ю