0988b24c

Директивы EVEN и EVENDATA


Вы можете использовать директиву EVEN для округления счетчи- ка адреса до следующего четного адреса. Директива EVEN позволяет вам выравнивать код для эффективного доступа к процессорам, ис- пользующим 16-разрядную шину данных. Производительность процессо- ров, использующих 8-разрядную шину данных, директивой EVEN не улучшается.

Директива EVENDATA выполняет выравнивание на четную границу, изменяя счетчика адреса без генерации данных, что полезно исполь- зовать для неинициализированных сегментов. Директивы EVEN и EVENDATA приводят к тому, что если выравнивание текущего сегмента выполнено недостаточно строго, Турбо Ассемблер выводит предупреж- дающее сообщение.

Если когда встречается директива EVEN счетчик адреса имеет нечетное значение, то Турбо Ассемблер помещает в сегмент один байт или инструкцию NOP, чтобы счетчик адреса стал четным. С по- мощью заполнения инструкциями NOP директиву EVEN можно в сегмен- тах кода, не вызывая на этапе работы программы выполнения невер- ных инструкций. Если счетчик адреса уже имеет четное значение, то данная директива не действует.

Аналогично, если счетчик адреса имеет нечетное значение, когда встречается директива EVENDATA, Турбо Ассемблер генерирует неинициализированный байт.

Приведем следующий пример использования директивы EVEN:

EVEN @@A: lodsb xor bl,al ; выравнивание для эффективного доступа loop @@a

Приведем пример использования директивы EVENDATA:

EVENDATA VAR1 DW 0 ; выравнивание для эффективного ; доступа 8086



Содержание раздела