Читать «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, данная константа может менять свое значение, обозначая в разных частях текста программы разные числа. Например: к=ю